diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index b799e0ca11d0c4ea6b24d8e39e8a01b133255535..7ef7f7ed3ed5a512af84e87a4d62627ee0e2c6d5 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -47,6 +47,6 @@ jobs:
         run: $HOME/bin/seo -path=./site -product=traefik
 
       - name: Publish documentation
-        run: $HOME/bin/mixtus --dst-doc-path="./traefik" --dst-owner=traefik --dst-repo-name=doc --git-user-email="30906710+traefiker@users.noreply.github.com" --git-user-name=traefiker --src-doc-path="./site" --src-owner=containous --src-repo-name=traefik
+        run: $HOME/bin/mixtus --dst-doc-path="./traefik" --dst-owner=traefik --dst-repo-name=doc --git-user-email="30906710+traefiker@users.noreply.github.com" --git-user-name=traefiker --src-doc-path="./site" --src-owner=traefik --src-repo-name=traefik
         env:
           GITHUB_TOKEN: ${{ secrets.GH_TOKEN_REPO }}
diff --git a/docs/content/deprecation/features.md b/docs/content/deprecation/features.md
index 6d168fa3bff4cd656e6a531afa851c19a1527efb..fa41c56b058e146a093d71a03f78ff9955324190 100644
--- a/docs/content/deprecation/features.md
+++ b/docs/content/deprecation/features.md
@@ -4,15 +4,10 @@ This page is maintained and updated periodically to reflect our roadmap and any
 
 | Feature                                                                                             | Deprecated | End of Support | Removal |
 |-----------------------------------------------------------------------------------------------------|------------|----------------|---------|
-| [Kubernetes CRDs API Group `traefik.containo.us`](#kubernetes-crds-api-group-traefikcontainous)     | 2.10       | N/A            | 3.0     |
 | [Kubernetes CRDs API Version `traefik.io/v1alpha1`](#kubernetes-crds-api-version-traefikiov1alpha1) | N/A        | N/A            | 3.0     |
 
 ## Impact
 
-### Kubernetes CRDs API Group `traefik.containo.us`
-
-In v2.10, the Kubernetes CRDs API Group `traefik.containo.us` is deprecated, and its support will end starting with Traefik v3. Please use the API Group `traefik.io` instead.
-
 ### Kubernetes CRDs API Version `traefik.io/v1alpha1`
 
 The newly introduced Kubernetes CRD API Version `traefik.io/v1alpha1` will subsequently be removed in Traefik v3. The following version will be `traefik.io/v1`.
diff --git a/docs/content/migration/v2-to-v3.md b/docs/content/migration/v2-to-v3.md
index b52fa6703249ad0598c90d3ed41a73b19e7ac9b9..4792467b0ac9ab2db9df20a332450cab816a5323 100644
--- a/docs/content/migration/v2-to-v3.md
+++ b/docs/content/migration/v2-to-v3.md
@@ -82,3 +82,8 @@ In v3, the Marathon provider has been removed.
 ## InfluxDB v1
 
 In v3, the InfluxDB v1 metrics provider has been removed because InfluxDB v1.x maintenance [ended in 2021](https://www.influxdata.com/blog/influxdb-oss-and-enterprise-roadmap-update-from-influxdays-emea/).
+
+### Kubernetes CRDs API Group `traefik.containo.us`
+
+In v3 the Kubernetes CRDs API Group `traefik.containo.us` has been removed. 
+Please use the API Group `traefik.io` instead.
diff --git a/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml b/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
index e3601147bb24c7a1de2af884bc84134acf17e8dd..37849dedc6f7291d86569326348804565a13bfb6 100644
--- a/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
+++ b/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
@@ -2442,2447 +2442,3 @@ status:
     plural: ""
   conditions: []
   storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutes.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRoute
-    listKind: IngressRouteList
-    plural: ingressroutes
-    singular: ingressroute
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
-        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: IngressRouteSpec defines the desired state of IngressRoute.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: Route holds the HTTP route configuration.
-                  properties:
-                    kind:
-                      description: Kind defines the kind of the route. Rule is the
-                        only supported kind.
-                      enum:
-                      - Rule
-                      type: string
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule'
-                      type: string
-                    middlewares:
-                      description: 'Middlewares defines the list of references to
-                        Middleware resources. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-middleware'
-                      items:
-                        description: MiddlewareRef is a reference to a Middleware
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Middleware
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Middleware resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority'
-                      type: integer
-                    services:
-                      description: Services defines the list of Service. It can contain
-                        any combination of TraefikService and/or reference to a Kubernetes
-                        Service.
-                      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/v3.0/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
-                  required:
-                  - kind
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSOption.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSOption. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSStore.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSStore. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutetcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteTCP
-    listKind: IngressRouteTCPList
-    plural: ingressroutetcps
-    singular: ingressroutetcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
-        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: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteTCP holds the TCP route configuration.
-                  properties:
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule_1'
-                      type: string
-                    middlewares:
-                      description: Middlewares defines the list of references to MiddlewareTCP
-                        resources.
-                      items:
-                        description: ObjectReference is a generic reference to a Traefik
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Traefik
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Traefik resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority_1'
-                      type: integer
-                    services:
-                      description: Services defines the list of TCP services.
-                      items:
-                        description: ServiceTCP defines an upstream TCP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          proxyProtocol:
-                            description: 'ProxyProtocol defines the PROXY protocol
-                              configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol'
-                            properties:
-                              version:
-                                description: Version defines the PROXY Protocol version
-                                  to use.
-                                type: integer
-                            type: object
-                          serversTransport:
-                            description: ServersTransport defines the name of ServersTransportTCP
-                              resource to use. It allows to configure the transport
-                              between Traefik and your servers. Can only be used on
-                              a Kubernetes Service.
-                            type: string
-                          tls:
-                            description: TLS determines whether to use TLS when dialing
-                              with the backend.
-                            type: boolean
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  required:
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration on a layer 4 / TCP
-                  Route. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls_1'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  passthrough:
-                    description: Passthrough defines whether a TLS router will terminate
-                      the TLS connection.
-                    type: boolean
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressrouteudps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteUDP
-    listKind: IngressRouteUDPList
-    plural: ingressrouteudps
-    singular: ingressrouteudp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
-        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: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteUDP holds the UDP route configuration.
-                  properties:
-                    services:
-                      description: Services defines the list of UDP services.
-                      items:
-                        description: ServiceUDP defines an upstream UDP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  type: object
-                type: array
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewares.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: Middleware
-    listKind: MiddlewareList
-    plural: middlewares
-    singular: middleware
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'Middleware is the CRD implementation of a Traefik Middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/'
-        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: MiddlewareSpec defines the desired state of a Middleware.
-            properties:
-              addPrefix:
-                description: 'AddPrefix holds the add prefix middleware configuration.
-                  This middleware updates the path of a request before forwarding
-                  it. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/addprefix/'
-                properties:
-                  prefix:
-                    description: Prefix is the string to add before the current path
-                      in the requested URL. It should include a leading slash (/).
-                    type: string
-                type: object
-              basicAuth:
-                description: 'BasicAuth holds the basic auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: 'RemoveHeader sets the removeHeader option to true
-                      to remove the authorization header before forwarding the request
-                      to your service. Default: false.'
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              buffering:
-                description: 'Buffering holds the buffering middleware configuration.
-                  This middleware retries or limits the size of requests that can
-                  be forwarded to backends. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#maxrequestbodybytes'
-                properties:
-                  maxRequestBodyBytes:
-                    description: 'MaxRequestBodyBytes defines the maximum allowed
-                      body size for the request (in bytes). If the request exceeds
-                      the allowed size, it is not forwarded to the service, and the
-                      client gets a 413 (Request Entity Too Large) response. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  maxResponseBodyBytes:
-                    description: 'MaxResponseBodyBytes defines the maximum allowed
-                      response size from the service (in bytes). If the response exceeds
-                      the allowed size, it is not forwarded to the client. The client
-                      gets a 500 (Internal Server Error) response instead. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  memRequestBodyBytes:
-                    description: 'MemRequestBodyBytes defines the threshold (in bytes)
-                      from which the request will be buffered on disk instead of in
-                      memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  memResponseBodyBytes:
-                    description: 'MemResponseBodyBytes defines the threshold (in bytes)
-                      from which the response will be buffered on disk instead of
-                      in memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  retryExpression:
-                    description: 'RetryExpression defines the retry conditions. It
-                      is a logical combination of functions with operators AND (&&)
-                      and OR (||). More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#retryexpression'
-                    type: string
-                type: object
-              chain:
-                description: 'Chain holds the configuration of the chain middleware.
-                  This middleware enables to define reusable combinations of other
-                  pieces of middleware. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/chain/'
-                properties:
-                  middlewares:
-                    description: Middlewares is the list of MiddlewareRef which composes
-                      the chain.
-                    items:
-                      description: MiddlewareRef is a reference to a Middleware resource.
-                      properties:
-                        name:
-                          description: Name defines the name of the referenced Middleware
-                            resource.
-                          type: string
-                        namespace:
-                          description: Namespace defines the namespace of the referenced
-                            Middleware resource.
-                          type: string
-                      required:
-                      - name
-                      type: object
-                    type: array
-                type: object
-              circuitBreaker:
-                description: CircuitBreaker holds the circuit breaker configuration.
-                properties:
-                  checkPeriod:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: CheckPeriod is the interval between successive checks
-                      of the circuit breaker condition (when in standby state).
-                    x-kubernetes-int-or-string: true
-                  expression:
-                    description: Expression is the condition that triggers the tripped
-                      state.
-                    type: string
-                  fallbackDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: FallbackDuration is the duration for which the circuit
-                      breaker will wait before trying to recover (from a tripped state).
-                    x-kubernetes-int-or-string: true
-                  recoveryDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: RecoveryDuration is the duration for which the circuit
-                      breaker will try to recover (as soon as it is in recovering
-                      state).
-                    x-kubernetes-int-or-string: true
-                type: object
-              compress:
-                description: 'Compress holds the compress middleware configuration.
-                  This middleware compresses responses before sending them to the
-                  client, using gzip compression. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/compress/'
-                properties:
-                  excludedContentTypes:
-                    description: ExcludedContentTypes defines the list of content
-                      types to compare the Content-Type header of the incoming requests
-                      and responses before compressing. `application/grpc` is always
-                      excluded.
-                    items:
-                      type: string
-                    type: array
-                  minResponseBodyBytes:
-                    description: 'MinResponseBodyBytes defines the minimum amount
-                      of bytes a response body must have to be compressed. Default:
-                      1024.'
-                    type: integer
-                type: object
-              contentType:
-                description: ContentType holds the content-type middleware configuration.
-                  This middleware sets the `Content-Type` header value to the media
-                  type detected from the response content, when it is not set by the
-                  backend.
-                type: object
-              digestAuth:
-                description: 'DigestAuth holds the digest auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/digestauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: RemoveHeader defines whether to remove the authorization
-                      header before forwarding the request to the backend.
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              errors:
-                description: 'ErrorPage holds the custom error middleware configuration.
-                  This middleware returns a custom page in lieu of the default, according
-                  to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/'
-                properties:
-                  query:
-                    description: Query defines the URL for the error page (hosted
-                      by service). The {status} variable can be used in order to insert
-                      the status code in the URL.
-                    type: string
-                  service:
-                    description: 'Service defines the reference to a Kubernetes Service
-                      that will serve the error page. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/#service'
-                    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/v3.0/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
-                  status:
-                    description: Status defines which status or range of statuses
-                      should result in an error page. It can be either a status code
-                      as a number (500), as multiple comma-separated numbers (500,502),
-                      as ranges by separating two codes with a dash (500-599), or
-                      a combination of the two (404,418,500-599).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              forwardAuth:
-                description: 'ForwardAuth holds the forward auth middleware configuration.
-                  This middleware delegates the request authentication to a Service.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/'
-                properties:
-                  address:
-                    description: Address defines the authentication server address.
-                    type: string
-                  authRequestHeaders:
-                    description: AuthRequestHeaders defines the list of the headers
-                      to copy from the request to the authentication server. If not
-                      set or empty then all request headers are passed.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeaders:
-                    description: AuthResponseHeaders defines the list of headers to
-                      copy from the authentication server response and set on forwarded
-                      request, replacing any existing conflicting headers.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeadersRegex:
-                    description: 'AuthResponseHeadersRegex defines the regex to match
-                      headers to copy from the authentication server response and
-                      set on forwarded request, after stripping all headers that match
-                      the regex. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/#authresponseheadersregex'
-                    type: string
-                  tls:
-                    description: TLS defines the configuration used to secure the
-                      connection to the authentication server.
-                    properties:
-                      caSecret:
-                        description: CASecret is the name of the referenced Kubernetes
-                          Secret containing the CA to validate the server certificate.
-                          The CA certificate is extracted from key `tls.ca` or `ca.crt`.
-                        type: string
-                      certSecret:
-                        description: CertSecret is the name of the referenced Kubernetes
-                          Secret containing the client certificate. The client certificate
-                          is extracted from the keys `tls.crt` and `tls.key`.
-                        type: string
-                      insecureSkipVerify:
-                        description: InsecureSkipVerify defines whether the server
-                          certificates should be validated.
-                        type: boolean
-                    type: object
-                  trustForwardHeader:
-                    description: 'TrustForwardHeader defines whether to trust (ie:
-                      forward) all X-Forwarded-* headers.'
-                    type: boolean
-                type: object
-              grpcWeb:
-                description: GrpcWeb holds the gRPC web middleware configuration.
-                  This middleware converts a gRPC web request to an HTTP/2 gRPC request.
-                properties:
-                  allowOrigins:
-                    description: AllowOrigins is a list of allowable origins. Can
-                      also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                type: object
-              headers:
-                description: 'Headers holds the headers middleware configuration.
-                  This middleware manages the requests and responses headers. More
-                  info: https://doc.traefik.io/traefik/v3.0/middlewares/http/headers/#customrequestheaders'
-                properties:
-                  accessControlAllowCredentials:
-                    description: AccessControlAllowCredentials defines whether the
-                      request can include user credentials.
-                    type: boolean
-                  accessControlAllowHeaders:
-                    description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowMethods:
-                    description: AccessControlAllowMethods defines the Access-Control-Request-Method
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginList:
-                    description: AccessControlAllowOriginList is a list of allowable
-                      origins. Can also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginListRegex:
-                    description: AccessControlAllowOriginListRegex is a list of allowable
-                      origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
-                    items:
-                      type: string
-                    type: array
-                  accessControlExposeHeaders:
-                    description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlMaxAge:
-                    description: AccessControlMaxAge defines the time that a preflight
-                      request may be cached.
-                    format: int64
-                    type: integer
-                  addVaryHeader:
-                    description: AddVaryHeader defines whether the Vary header is
-                      automatically added/updated when the AccessControlAllowOriginList
-                      is set.
-                    type: boolean
-                  allowedHosts:
-                    description: AllowedHosts defines the fully qualified list of
-                      allowed domain names.
-                    items:
-                      type: string
-                    type: array
-                  browserXssFilter:
-                    description: BrowserXSSFilter defines whether to add the X-XSS-Protection
-                      header with the value 1; mode=block.
-                    type: boolean
-                  contentSecurityPolicy:
-                    description: ContentSecurityPolicy defines the Content-Security-Policy
-                      header value.
-                    type: string
-                  contentTypeNosniff:
-                    description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
-                      header with the nosniff value.
-                    type: boolean
-                  customBrowserXSSValue:
-                    description: CustomBrowserXSSValue defines the X-XSS-Protection
-                      header value. This overrides the BrowserXssFilter option.
-                    type: string
-                  customFrameOptionsValue:
-                    description: CustomFrameOptionsValue defines the X-Frame-Options
-                      header value. This overrides the FrameDeny option.
-                    type: string
-                  customRequestHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomRequestHeaders defines the header names and
-                      values to apply to the request.
-                    type: object
-                  customResponseHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomResponseHeaders defines the header names and
-                      values to apply to the response.
-                    type: object
-                  forceSTSHeader:
-                    description: ForceSTSHeader defines whether to add the STS header
-                      even when the connection is HTTP.
-                    type: boolean
-                  frameDeny:
-                    description: FrameDeny defines whether to add the X-Frame-Options
-                      header with the DENY value.
-                    type: boolean
-                  hostsProxyHeaders:
-                    description: HostsProxyHeaders defines the header keys that may
-                      hold a proxied hostname value for the request.
-                    items:
-                      type: string
-                    type: array
-                  isDevelopment:
-                    description: IsDevelopment defines whether to mitigate the unwanted
-                      effects of the AllowedHosts, SSL, and STS options when developing.
-                      Usually testing takes place using HTTP, not HTTPS, and on localhost,
-                      not your production domain. If you would like your development
-                      environment to mimic production with complete Host blocking,
-                      SSL redirects, and STS headers, leave this as false.
-                    type: boolean
-                  permissionsPolicy:
-                    description: PermissionsPolicy defines the Permissions-Policy
-                      header value. This allows sites to control browser features.
-                    type: string
-                  publicKey:
-                    description: PublicKey is the public key that implements HPKP
-                      to prevent MITM attacks with forged certificates.
-                    type: string
-                  referrerPolicy:
-                    description: ReferrerPolicy defines the Referrer-Policy header
-                      value. This allows sites to control whether browsers forward
-                      the Referer header to other sites.
-                    type: string
-                  sslProxyHeaders:
-                    additionalProperties:
-                      type: string
-                    description: 'SSLProxyHeaders defines the header keys with associated
-                      values that would indicate a valid HTTPS request. It can be
-                      useful when using other proxies (example: "X-Forwarded-Proto":
-                      "https").'
-                    type: object
-                  stsIncludeSubdomains:
-                    description: STSIncludeSubdomains defines whether the includeSubDomains
-                      directive is appended to the Strict-Transport-Security header.
-                    type: boolean
-                  stsPreload:
-                    description: STSPreload defines whether the preload flag is appended
-                      to the Strict-Transport-Security header.
-                    type: boolean
-                  stsSeconds:
-                    description: STSSeconds defines the max-age of the Strict-Transport-Security
-                      header. If set to 0, the header is not set.
-                    format: int64
-                    type: integer
-                type: object
-              inFlightReq:
-                description: 'InFlightReq holds the in-flight request middleware configuration.
-                  This middleware limits the number of requests being processed and
-                  served concurrently. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/'
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      in-flight request. The middleware responds with HTTP 429 Too
-                      Many Requests if there are already amount requests in progress
-                      (based on the same sourceCriterion strategy).
-                    format: int64
-                    type: integer
-                  sourceCriterion:
-                    description: 'SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the requestHost. More
-                      info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/#sourcecriterion'
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              ipAllowList:
-                description: 'IPAllowList holds the IP allowlist middleware configuration.
-                  This middleware accepts / refuses requests based on the client IP.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/'
-                properties:
-                  ipStrategy:
-                    description: 'IPStrategy holds the IP strategy configuration used
-                      by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                    properties:
-                      depth:
-                        description: Depth tells Traefik to use the X-Forwarded-For
-                          header and take the IP located at the depth position (starting
-                          from the right).
-                        type: integer
-                      excludedIPs:
-                        description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
-                          header and select the first IP not in the list.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  sourceRange:
-                    description: SourceRange defines the set of allowed IPs (or ranges
-                      of allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              passTLSClientCert:
-                description: 'PassTLSClientCert holds the pass TLS client cert middleware
-                  configuration. This middleware adds the selected data from the passed
-                  client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/passtlsclientcert/'
-                properties:
-                  info:
-                    description: Info selects the specific client certificate details
-                      you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                    properties:
-                      issuer:
-                        description: Issuer defines the client certificate issuer
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the issuer.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the issuer.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the issuer.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the issuer.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the issuer.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the issuer.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the issuer.
-                            type: boolean
-                        type: object
-                      notAfter:
-                        description: NotAfter defines whether to add the Not After
-                          information from the Validity part.
-                        type: boolean
-                      notBefore:
-                        description: NotBefore defines whether to add the Not Before
-                          information from the Validity part.
-                        type: boolean
-                      sans:
-                        description: Sans defines whether to add the Subject Alternative
-                          Name information from the Subject Alternative Name part.
-                        type: boolean
-                      serialNumber:
-                        description: SerialNumber defines whether to add the client
-                          serialNumber information.
-                        type: boolean
-                      subject:
-                        description: Subject defines the client certificate subject
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the subject.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the subject.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the subject.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the subject.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the subject.
-                            type: boolean
-                          organizationalUnit:
-                            description: OrganizationalUnit defines whether to add
-                              the organizationalUnit information into the subject.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the subject.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the subject.
-                            type: boolean
-                        type: object
-                    type: object
-                  pem:
-                    description: PEM sets the X-Forwarded-Tls-Client-Cert header with
-                      the certificate.
-                    type: boolean
-                type: object
-              plugin:
-                additionalProperties:
-                  x-kubernetes-preserve-unknown-fields: true
-                description: 'Plugin defines the middleware plugin configuration.
-                  More info: https://doc.traefik.io/traefik/plugins/'
-                type: object
-              rateLimit:
-                description: 'RateLimit holds the rate limit configuration. This middleware
-                  ensures that services will receive a fair amount of requests, and
-                  allows one to define what fair is. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ratelimit/'
-                properties:
-                  average:
-                    description: Average is the maximum rate, by default in requests/s,
-                      allowed for the given source. It defaults to 0, which means
-                      no rate limiting. The rate is actually defined by dividing Average
-                      by Period. So for a rate below 1req/s, one needs to define a
-                      Period larger than a second.
-                    format: int64
-                    type: integer
-                  burst:
-                    description: Burst is the maximum number of requests allowed to
-                      arrive in the same arbitrarily small period of time. It defaults
-                      to 1.
-                    format: int64
-                    type: integer
-                  period:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: 'Period, in combination with Average, defines the
-                      actual maximum rate, such as: r = Average / Period. It defaults
-                      to a second.'
-                    x-kubernetes-int-or-string: true
-                  sourceCriterion:
-                    description: SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the request's remote
-                      address field (as an ipStrategy).
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              redirectRegex:
-                description: 'RedirectRegex holds the redirect regex middleware configuration.
-                  This middleware redirects a request using regex matching and replacement.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectregex/#regex'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  regex:
-                    description: Regex defines the regex used to match and capture
-                      elements from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines how to modify the URL to have
-                      the new target URL.
-                    type: string
-                type: object
-              redirectScheme:
-                description: 'RedirectScheme holds the redirect scheme middleware
-                  configuration. This middleware redirects requests from a scheme/port
-                  to another. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectscheme/'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  port:
-                    description: Port defines the port of the new URL.
-                    type: string
-                  scheme:
-                    description: Scheme defines the scheme of the new URL.
-                    type: string
-                type: object
-              replacePath:
-                description: 'ReplacePath holds the replace path middleware configuration.
-                  This middleware replaces the path of the request URL and store the
-                  original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepath/'
-                properties:
-                  path:
-                    description: Path defines the path to use as replacement in the
-                      request URL.
-                    type: string
-                type: object
-              replacePathRegex:
-                description: 'ReplacePathRegex holds the replace path regex middleware
-                  configuration. This middleware replaces the path of a URL using
-                  regex matching and replacement. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepathregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression used to match
-                      and capture the path from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines the replacement path format,
-                      which can include captured variables.
-                    type: string
-                type: object
-              retry:
-                description: 'Retry holds the retry middleware configuration. This
-                  middleware reissues requests a given number of times to a backend
-                  server if that server does not reply. As soon as the server answers,
-                  the middleware stops retrying, regardless of the response status.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/retry/'
-                properties:
-                  attempts:
-                    description: Attempts defines how many times the request should
-                      be retried.
-                    type: integer
-                  initialInterval:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: InitialInterval defines the first wait time in the
-                      exponential backoff series. The maximum interval is calculated
-                      as twice the initialInterval. If unspecified, requests will
-                      be retried immediately. The value of initialInterval should
-                      be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.
-                    x-kubernetes-int-or-string: true
-                type: object
-              stripPrefix:
-                description: 'StripPrefix holds the strip prefix middleware configuration.
-                  This middleware removes the specified prefixes from the URL path.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefix/'
-                properties:
-                  prefixes:
-                    description: Prefixes defines the prefixes to strip from the request
-                      URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              stripPrefixRegex:
-                description: 'StripPrefixRegex holds the strip prefix regex middleware
-                  configuration. This middleware removes the matching prefixes from
-                  the URL path. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefixregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression to match the
-                      path prefix from the request URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewaretcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: MiddlewareTCP
-    listKind: MiddlewareTCPList
-    plural: middlewaretcps
-    singular: middlewaretcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/'
-        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: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
-            properties:
-              inFlightConn:
-                description: InFlightConn defines the InFlightConn middleware configuration.
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      connections. The middleware closes the connection if there are
-                      already amount connections opened.
-                    format: int64
-                    type: integer
-                type: object
-              ipAllowList:
-                description: IPAllowList defines the IPAllowList middleware configuration.
-                properties:
-                  sourceRange:
-                    description: SourceRange defines the allowed IPs (or ranges of
-                      allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransports.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransport
-    listKind: ServersTransportList
-    plural: serverstransports
-    singular: serverstransport
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransport is the CRD implementation of a ServersTransport.
-          If no serversTransport is specified, the default@internal will be used.
-          The default@internal serversTransport is created from the static configuration.
-          More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1'
-        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: ServersTransportSpec defines the desired state of a ServersTransport.
-            properties:
-              certificatesSecrets:
-                description: CertificatesSecrets defines a list of secret storing
-                  client certificates for mTLS.
-                items:
-                  type: string
-                type: array
-              disableHTTP2:
-                description: DisableHTTP2 disables HTTP/2 for connections with backend
-                  servers.
-                type: boolean
-              forwardingTimeouts:
-                description: ForwardingTimeouts defines the timeouts for requests
-                  forwarded to the backend servers.
-                properties:
-                  dialTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: DialTimeout is the amount of time to wait until a
-                      connection to a backend server can be established.
-                    x-kubernetes-int-or-string: true
-                  idleConnTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: IdleConnTimeout is the maximum period for which an
-                      idle HTTP keep-alive connection will remain open before closing
-                      itself.
-                    x-kubernetes-int-or-string: true
-                  pingTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: PingTimeout is the timeout after which the HTTP/2
-                      connection will be closed if a response to ping is not received.
-                    x-kubernetes-int-or-string: true
-                  readIdleTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ReadIdleTimeout is the timeout after which a health
-                      check using ping frame will be carried out if no frame is received
-                      on the HTTP/2 connection.
-                    x-kubernetes-int-or-string: true
-                  responseHeaderTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ResponseHeaderTimeout is the amount of time to wait
-                      for a server's response headers after fully writing the request
-                      (including its body, if any).
-                    x-kubernetes-int-or-string: true
-                type: object
-              insecureSkipVerify:
-                description: InsecureSkipVerify disables SSL certificate verification.
-                type: boolean
-              maxIdleConnsPerHost:
-                description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                  to keep per-host.
-                type: integer
-              peerCertURI:
-                description: PeerCertURI defines the peer cert URI used to match against
-                  SAN URI during the peer certificate verification.
-                type: string
-              rootCAsSecrets:
-                description: RootCAsSecrets defines a list of CA secret used to validate
-                  self-signed certificate.
-                items:
-                  type: string
-                type: array
-              serverName:
-                description: ServerName defines the server name used to contact the
-                  server.
-                type: string
-              spiffe:
-                description: Spiffe defines the SPIFFE configuration.
-                properties:
-                  ids:
-                    description: IDs defines the allowed SPIFFE IDs (takes precedence
-                      over the SPIFFE TrustDomain).
-                    items:
-                      type: string
-                    type: array
-                  trustDomain:
-                    description: TrustDomain defines the allowed SPIFFE trust domain.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransporttcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransportTCP
-    listKind: ServersTransportTCPList
-    plural: serverstransporttcps
-    singular: serverstransporttcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransportTCP is the CRD implementation of a TCPServersTransport.
-          If no tcpServersTransport is specified, a default one named default@internal
-          will be used. The default@internal tcpServersTransport can be configured
-          in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3'
-        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: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.
-            properties:
-              dialKeepAlive:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialKeepAlive is the interval between keep-alive probes
-                  for an active network connection. If zero, keep-alive probes are
-                  sent with a default value (currently 15 seconds), if supported by
-                  the protocol and operating system. Network protocols or operating
-                  systems that do not support keep-alives ignore this field. If negative,
-                  keep-alive probes are disabled.
-                x-kubernetes-int-or-string: true
-              dialTimeout:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialTimeout is the amount of time to wait until a connection
-                  to a backend server can be established.
-                x-kubernetes-int-or-string: true
-              terminationDelay:
-                anyOf:
-                - type: integer
-                - type: string
-                description: TerminationDelay defines the delay to wait before fully
-                  terminating the connection, after one connected peer has closed
-                  its writing capability.
-                x-kubernetes-int-or-string: true
-              tls:
-                description: TLS defines the TLS configuration
-                properties:
-                  certificatesSecrets:
-                    description: CertificatesSecrets defines a list of secret storing
-                      client certificates for mTLS.
-                    items:
-                      type: string
-                    type: array
-                  insecureSkipVerify:
-                    description: InsecureSkipVerify disables TLS certificate verification.
-                    type: boolean
-                  peerCertURI:
-                    description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                      to keep per-host. PeerCertURI defines the peer cert URI used
-                      to match against SAN URI during the peer certificate verification.
-                    type: string
-                  rootCAsSecrets:
-                    description: RootCAsSecrets defines a list of CA secret used to
-                      validate self-signed certificates.
-                    items:
-                      type: string
-                    type: array
-                  serverName:
-                    description: ServerName defines the server name used to contact
-                      the server.
-                    type: string
-                  spiffe:
-                    description: Spiffe defines the SPIFFE configuration.
-                    properties:
-                      ids:
-                        description: IDs defines the allowed SPIFFE IDs (takes precedence
-                          over the SPIFFE TrustDomain).
-                        items:
-                          type: string
-                        type: array
-                      trustDomain:
-                        description: TrustDomain defines the allowed SPIFFE trust
-                          domain.
-                        type: string
-                    type: object
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsoptions.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSOption
-    listKind: TLSOptionList
-    plural: tlsoptions
-    singular: tlsoption
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSOption is the CRD implementation of a Traefik TLS Option,
-          allowing to configure some parameters of the TLS connection. More info:
-          https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-        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: TLSOptionSpec defines the desired state of a TLSOption.
-            properties:
-              alpnProtocols:
-                description: 'ALPNProtocols defines the list of supported application
-                  level protocols for the TLS handshake, in order of preference. More
-                  info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols'
-                items:
-                  type: string
-                type: array
-              cipherSuites:
-                description: 'CipherSuites defines the list of supported cipher suites
-                  for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#cipher-suites'
-                items:
-                  type: string
-                type: array
-              clientAuth:
-                description: ClientAuth defines the server's policy for TLS Client
-                  Authentication.
-                properties:
-                  clientAuthType:
-                    description: ClientAuthType defines the client authentication
-                      type to apply.
-                    enum:
-                    - NoClientCert
-                    - RequestClientCert
-                    - RequireAnyClientCert
-                    - VerifyClientCertIfGiven
-                    - RequireAndVerifyClientCert
-                    type: string
-                  secretNames:
-                    description: SecretNames defines the names of the referenced Kubernetes
-                      Secret storing certificate details.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              curvePreferences:
-                description: 'CurvePreferences defines the preferred elliptic curves
-                  in a specific order. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#curve-preferences'
-                items:
-                  type: string
-                type: array
-              maxVersion:
-                description: 'MaxVersion defines the maximum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: None.'
-                type: string
-              minVersion:
-                description: 'MinVersion defines the minimum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: VersionTLS10.'
-                type: string
-              sniStrict:
-                description: SniStrict defines whether Traefik allows connections
-                  from clients connections that do not specify a server_name extension.
-                type: boolean
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsstores.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSStore
-    listKind: TLSStoreList
-    plural: tlsstores
-    singular: tlsstore
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For
-          the time being, only the TLSStore named default is supported. This means
-          that you cannot have two stores that are named default in different Kubernetes
-          namespaces. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores'
-        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: TLSStoreSpec defines the desired state of a TLSStore.
-            properties:
-              certificates:
-                description: Certificates is a list of secret names, each secret holding
-                  a key/certificate pair to add to the store.
-                items:
-                  description: Certificate holds a secret name for the TLSStore resource.
-                  properties:
-                    secretName:
-                      description: SecretName is the name of the referenced Kubernetes
-                        Secret to specify the certificate details.
-                      type: string
-                  required:
-                  - secretName
-                  type: object
-                type: array
-              defaultCertificate:
-                description: DefaultCertificate defines the default certificate configuration.
-                properties:
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                required:
-                - secretName
-                type: object
-              defaultGeneratedCert:
-                description: DefaultGeneratedCert defines the default generated certificate
-                  configuration.
-                properties:
-                  domain:
-                    description: Domain is the domain definition for the DefaultCertificate.
-                    properties:
-                      main:
-                        description: Main defines the main domain name.
-                        type: string
-                      sans:
-                        description: SANs defines the subject alternative domain names.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  resolver:
-                    description: Resolver is the name of the resolver that will be
-                      used to issue the DefaultCertificate.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  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/v3.0/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/v3.0/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/v3.0/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/v3.0/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/v3.0/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
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml b/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
index 6c9d3e5dd8b4faa0d3406a09124bb06af724100e..301ec516620133a95c7d300e8fcb76b5c9f6cef0 100644
--- a/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
+++ b/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
@@ -33,7 +33,6 @@ rules:
       - update
   - apiGroups:
       - traefik.io
-      - traefik.containo.us
     resources:
       - middlewares
       - middlewaretcps
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutes.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutes.yaml
deleted file mode 100644
index 4f1eac827be88ba503285bde48ba0f9a88b0be3f..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutes.yaml
+++ /dev/null
@@ -1,275 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutes.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRoute
-    listKind: IngressRouteList
-    plural: ingressroutes
-    singular: ingressroute
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
-        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: IngressRouteSpec defines the desired state of IngressRoute.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: Route holds the HTTP route configuration.
-                  properties:
-                    kind:
-                      description: Kind defines the kind of the route. Rule is the
-                        only supported kind.
-                      enum:
-                      - Rule
-                      type: string
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule'
-                      type: string
-                    middlewares:
-                      description: 'Middlewares defines the list of references to
-                        Middleware resources. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-middleware'
-                      items:
-                        description: MiddlewareRef is a reference to a Middleware
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Middleware
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Middleware resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority'
-                      type: integer
-                    services:
-                      description: Services defines the list of Service. It can contain
-                        any combination of TraefikService and/or reference to a Kubernetes
-                        Service.
-                      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/v3.0/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
-                  required:
-                  - kind
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSOption.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSOption. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSStore.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSStore. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutetcps.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutetcps.yaml
deleted file mode 100644
index d2967b903df9984e80886620813dcf5ccba82e0f..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressroutetcps.yaml
+++ /dev/null
@@ -1,219 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutetcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteTCP
-    listKind: IngressRouteTCPList
-    plural: ingressroutetcps
-    singular: ingressroutetcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
-        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: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteTCP holds the TCP route configuration.
-                  properties:
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule_1'
-                      type: string
-                    middlewares:
-                      description: Middlewares defines the list of references to MiddlewareTCP
-                        resources.
-                      items:
-                        description: ObjectReference is a generic reference to a Traefik
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Traefik
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Traefik resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority_1'
-                      type: integer
-                    services:
-                      description: Services defines the list of TCP services.
-                      items:
-                        description: ServiceTCP defines an upstream TCP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          proxyProtocol:
-                            description: 'ProxyProtocol defines the PROXY protocol
-                              configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol'
-                            properties:
-                              version:
-                                description: Version defines the PROXY Protocol version
-                                  to use.
-                                type: integer
-                            type: object
-                          serversTransport:
-                            description: ServersTransport defines the name of ServersTransportTCP
-                              resource to use. It allows to configure the transport
-                              between Traefik and your servers. Can only be used on
-                              a Kubernetes Service.
-                            type: string
-                          tls:
-                            description: TLS determines whether to use TLS when dialing
-                              with the backend.
-                            type: boolean
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  required:
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration on a layer 4 / TCP
-                  Route. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls_1'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  passthrough:
-                    description: Passthrough defines whether a TLS router will terminate
-                      the TLS connection.
-                    type: boolean
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressrouteudps.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressrouteudps.yaml
deleted file mode 100644
index cfc7785e609ea72cd3b6385d9fc04b888b4fa460..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_ingressrouteudps.yaml
+++ /dev/null
@@ -1,105 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressrouteudps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteUDP
-    listKind: IngressRouteUDPList
-    plural: ingressrouteudps
-    singular: ingressrouteudp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
-        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: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteUDP holds the UDP route configuration.
-                  properties:
-                    services:
-                      description: Services defines the list of UDP services.
-                      items:
-                        description: ServiceUDP defines an upstream UDP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  type: object
-                type: array
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewares.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewares.yaml
deleted file mode 100644
index 9a368259455b0f76829df87c407389e50b204968..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewares.yaml
+++ /dev/null
@@ -1,902 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewares.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: Middleware
-    listKind: MiddlewareList
-    plural: middlewares
-    singular: middleware
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'Middleware is the CRD implementation of a Traefik Middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/'
-        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: MiddlewareSpec defines the desired state of a Middleware.
-            properties:
-              addPrefix:
-                description: 'AddPrefix holds the add prefix middleware configuration.
-                  This middleware updates the path of a request before forwarding
-                  it. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/addprefix/'
-                properties:
-                  prefix:
-                    description: Prefix is the string to add before the current path
-                      in the requested URL. It should include a leading slash (/).
-                    type: string
-                type: object
-              basicAuth:
-                description: 'BasicAuth holds the basic auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: 'RemoveHeader sets the removeHeader option to true
-                      to remove the authorization header before forwarding the request
-                      to your service. Default: false.'
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              buffering:
-                description: 'Buffering holds the buffering middleware configuration.
-                  This middleware retries or limits the size of requests that can
-                  be forwarded to backends. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#maxrequestbodybytes'
-                properties:
-                  maxRequestBodyBytes:
-                    description: 'MaxRequestBodyBytes defines the maximum allowed
-                      body size for the request (in bytes). If the request exceeds
-                      the allowed size, it is not forwarded to the service, and the
-                      client gets a 413 (Request Entity Too Large) response. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  maxResponseBodyBytes:
-                    description: 'MaxResponseBodyBytes defines the maximum allowed
-                      response size from the service (in bytes). If the response exceeds
-                      the allowed size, it is not forwarded to the client. The client
-                      gets a 500 (Internal Server Error) response instead. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  memRequestBodyBytes:
-                    description: 'MemRequestBodyBytes defines the threshold (in bytes)
-                      from which the request will be buffered on disk instead of in
-                      memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  memResponseBodyBytes:
-                    description: 'MemResponseBodyBytes defines the threshold (in bytes)
-                      from which the response will be buffered on disk instead of
-                      in memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  retryExpression:
-                    description: 'RetryExpression defines the retry conditions. It
-                      is a logical combination of functions with operators AND (&&)
-                      and OR (||). More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#retryexpression'
-                    type: string
-                type: object
-              chain:
-                description: 'Chain holds the configuration of the chain middleware.
-                  This middleware enables to define reusable combinations of other
-                  pieces of middleware. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/chain/'
-                properties:
-                  middlewares:
-                    description: Middlewares is the list of MiddlewareRef which composes
-                      the chain.
-                    items:
-                      description: MiddlewareRef is a reference to a Middleware resource.
-                      properties:
-                        name:
-                          description: Name defines the name of the referenced Middleware
-                            resource.
-                          type: string
-                        namespace:
-                          description: Namespace defines the namespace of the referenced
-                            Middleware resource.
-                          type: string
-                      required:
-                      - name
-                      type: object
-                    type: array
-                type: object
-              circuitBreaker:
-                description: CircuitBreaker holds the circuit breaker configuration.
-                properties:
-                  checkPeriod:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: CheckPeriod is the interval between successive checks
-                      of the circuit breaker condition (when in standby state).
-                    x-kubernetes-int-or-string: true
-                  expression:
-                    description: Expression is the condition that triggers the tripped
-                      state.
-                    type: string
-                  fallbackDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: FallbackDuration is the duration for which the circuit
-                      breaker will wait before trying to recover (from a tripped state).
-                    x-kubernetes-int-or-string: true
-                  recoveryDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: RecoveryDuration is the duration for which the circuit
-                      breaker will try to recover (as soon as it is in recovering
-                      state).
-                    x-kubernetes-int-or-string: true
-                type: object
-              compress:
-                description: 'Compress holds the compress middleware configuration.
-                  This middleware compresses responses before sending them to the
-                  client, using gzip compression. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/compress/'
-                properties:
-                  excludedContentTypes:
-                    description: ExcludedContentTypes defines the list of content
-                      types to compare the Content-Type header of the incoming requests
-                      and responses before compressing. `application/grpc` is always
-                      excluded.
-                    items:
-                      type: string
-                    type: array
-                  minResponseBodyBytes:
-                    description: 'MinResponseBodyBytes defines the minimum amount
-                      of bytes a response body must have to be compressed. Default:
-                      1024.'
-                    type: integer
-                type: object
-              contentType:
-                description: ContentType holds the content-type middleware configuration.
-                  This middleware sets the `Content-Type` header value to the media
-                  type detected from the response content, when it is not set by the
-                  backend.
-                type: object
-              digestAuth:
-                description: 'DigestAuth holds the digest auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/digestauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: RemoveHeader defines whether to remove the authorization
-                      header before forwarding the request to the backend.
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              errors:
-                description: 'ErrorPage holds the custom error middleware configuration.
-                  This middleware returns a custom page in lieu of the default, according
-                  to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/'
-                properties:
-                  query:
-                    description: Query defines the URL for the error page (hosted
-                      by service). The {status} variable can be used in order to insert
-                      the status code in the URL.
-                    type: string
-                  service:
-                    description: 'Service defines the reference to a Kubernetes Service
-                      that will serve the error page. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/#service'
-                    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/v3.0/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
-                  status:
-                    description: Status defines which status or range of statuses
-                      should result in an error page. It can be either a status code
-                      as a number (500), as multiple comma-separated numbers (500,502),
-                      as ranges by separating two codes with a dash (500-599), or
-                      a combination of the two (404,418,500-599).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              forwardAuth:
-                description: 'ForwardAuth holds the forward auth middleware configuration.
-                  This middleware delegates the request authentication to a Service.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/'
-                properties:
-                  address:
-                    description: Address defines the authentication server address.
-                    type: string
-                  authRequestHeaders:
-                    description: AuthRequestHeaders defines the list of the headers
-                      to copy from the request to the authentication server. If not
-                      set or empty then all request headers are passed.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeaders:
-                    description: AuthResponseHeaders defines the list of headers to
-                      copy from the authentication server response and set on forwarded
-                      request, replacing any existing conflicting headers.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeadersRegex:
-                    description: 'AuthResponseHeadersRegex defines the regex to match
-                      headers to copy from the authentication server response and
-                      set on forwarded request, after stripping all headers that match
-                      the regex. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/#authresponseheadersregex'
-                    type: string
-                  tls:
-                    description: TLS defines the configuration used to secure the
-                      connection to the authentication server.
-                    properties:
-                      caSecret:
-                        description: CASecret is the name of the referenced Kubernetes
-                          Secret containing the CA to validate the server certificate.
-                          The CA certificate is extracted from key `tls.ca` or `ca.crt`.
-                        type: string
-                      certSecret:
-                        description: CertSecret is the name of the referenced Kubernetes
-                          Secret containing the client certificate. The client certificate
-                          is extracted from the keys `tls.crt` and `tls.key`.
-                        type: string
-                      insecureSkipVerify:
-                        description: InsecureSkipVerify defines whether the server
-                          certificates should be validated.
-                        type: boolean
-                    type: object
-                  trustForwardHeader:
-                    description: 'TrustForwardHeader defines whether to trust (ie:
-                      forward) all X-Forwarded-* headers.'
-                    type: boolean
-                type: object
-              grpcWeb:
-                description: GrpcWeb holds the gRPC web middleware configuration.
-                  This middleware converts a gRPC web request to an HTTP/2 gRPC request.
-                properties:
-                  allowOrigins:
-                    description: AllowOrigins is a list of allowable origins. Can
-                      also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                type: object
-              headers:
-                description: 'Headers holds the headers middleware configuration.
-                  This middleware manages the requests and responses headers. More
-                  info: https://doc.traefik.io/traefik/v3.0/middlewares/http/headers/#customrequestheaders'
-                properties:
-                  accessControlAllowCredentials:
-                    description: AccessControlAllowCredentials defines whether the
-                      request can include user credentials.
-                    type: boolean
-                  accessControlAllowHeaders:
-                    description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowMethods:
-                    description: AccessControlAllowMethods defines the Access-Control-Request-Method
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginList:
-                    description: AccessControlAllowOriginList is a list of allowable
-                      origins. Can also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginListRegex:
-                    description: AccessControlAllowOriginListRegex is a list of allowable
-                      origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
-                    items:
-                      type: string
-                    type: array
-                  accessControlExposeHeaders:
-                    description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlMaxAge:
-                    description: AccessControlMaxAge defines the time that a preflight
-                      request may be cached.
-                    format: int64
-                    type: integer
-                  addVaryHeader:
-                    description: AddVaryHeader defines whether the Vary header is
-                      automatically added/updated when the AccessControlAllowOriginList
-                      is set.
-                    type: boolean
-                  allowedHosts:
-                    description: AllowedHosts defines the fully qualified list of
-                      allowed domain names.
-                    items:
-                      type: string
-                    type: array
-                  browserXssFilter:
-                    description: BrowserXSSFilter defines whether to add the X-XSS-Protection
-                      header with the value 1; mode=block.
-                    type: boolean
-                  contentSecurityPolicy:
-                    description: ContentSecurityPolicy defines the Content-Security-Policy
-                      header value.
-                    type: string
-                  contentTypeNosniff:
-                    description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
-                      header with the nosniff value.
-                    type: boolean
-                  customBrowserXSSValue:
-                    description: CustomBrowserXSSValue defines the X-XSS-Protection
-                      header value. This overrides the BrowserXssFilter option.
-                    type: string
-                  customFrameOptionsValue:
-                    description: CustomFrameOptionsValue defines the X-Frame-Options
-                      header value. This overrides the FrameDeny option.
-                    type: string
-                  customRequestHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomRequestHeaders defines the header names and
-                      values to apply to the request.
-                    type: object
-                  customResponseHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomResponseHeaders defines the header names and
-                      values to apply to the response.
-                    type: object
-                  forceSTSHeader:
-                    description: ForceSTSHeader defines whether to add the STS header
-                      even when the connection is HTTP.
-                    type: boolean
-                  frameDeny:
-                    description: FrameDeny defines whether to add the X-Frame-Options
-                      header with the DENY value.
-                    type: boolean
-                  hostsProxyHeaders:
-                    description: HostsProxyHeaders defines the header keys that may
-                      hold a proxied hostname value for the request.
-                    items:
-                      type: string
-                    type: array
-                  isDevelopment:
-                    description: IsDevelopment defines whether to mitigate the unwanted
-                      effects of the AllowedHosts, SSL, and STS options when developing.
-                      Usually testing takes place using HTTP, not HTTPS, and on localhost,
-                      not your production domain. If you would like your development
-                      environment to mimic production with complete Host blocking,
-                      SSL redirects, and STS headers, leave this as false.
-                    type: boolean
-                  permissionsPolicy:
-                    description: PermissionsPolicy defines the Permissions-Policy
-                      header value. This allows sites to control browser features.
-                    type: string
-                  publicKey:
-                    description: PublicKey is the public key that implements HPKP
-                      to prevent MITM attacks with forged certificates.
-                    type: string
-                  referrerPolicy:
-                    description: ReferrerPolicy defines the Referrer-Policy header
-                      value. This allows sites to control whether browsers forward
-                      the Referer header to other sites.
-                    type: string
-                  sslProxyHeaders:
-                    additionalProperties:
-                      type: string
-                    description: 'SSLProxyHeaders defines the header keys with associated
-                      values that would indicate a valid HTTPS request. It can be
-                      useful when using other proxies (example: "X-Forwarded-Proto":
-                      "https").'
-                    type: object
-                  stsIncludeSubdomains:
-                    description: STSIncludeSubdomains defines whether the includeSubDomains
-                      directive is appended to the Strict-Transport-Security header.
-                    type: boolean
-                  stsPreload:
-                    description: STSPreload defines whether the preload flag is appended
-                      to the Strict-Transport-Security header.
-                    type: boolean
-                  stsSeconds:
-                    description: STSSeconds defines the max-age of the Strict-Transport-Security
-                      header. If set to 0, the header is not set.
-                    format: int64
-                    type: integer
-                type: object
-              inFlightReq:
-                description: 'InFlightReq holds the in-flight request middleware configuration.
-                  This middleware limits the number of requests being processed and
-                  served concurrently. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/'
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      in-flight request. The middleware responds with HTTP 429 Too
-                      Many Requests if there are already amount requests in progress
-                      (based on the same sourceCriterion strategy).
-                    format: int64
-                    type: integer
-                  sourceCriterion:
-                    description: 'SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the requestHost. More
-                      info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/#sourcecriterion'
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              ipAllowList:
-                description: 'IPAllowList holds the IP allowlist middleware configuration.
-                  This middleware accepts / refuses requests based on the client IP.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/'
-                properties:
-                  ipStrategy:
-                    description: 'IPStrategy holds the IP strategy configuration used
-                      by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                    properties:
-                      depth:
-                        description: Depth tells Traefik to use the X-Forwarded-For
-                          header and take the IP located at the depth position (starting
-                          from the right).
-                        type: integer
-                      excludedIPs:
-                        description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
-                          header and select the first IP not in the list.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  sourceRange:
-                    description: SourceRange defines the set of allowed IPs (or ranges
-                      of allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              passTLSClientCert:
-                description: 'PassTLSClientCert holds the pass TLS client cert middleware
-                  configuration. This middleware adds the selected data from the passed
-                  client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/passtlsclientcert/'
-                properties:
-                  info:
-                    description: Info selects the specific client certificate details
-                      you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                    properties:
-                      issuer:
-                        description: Issuer defines the client certificate issuer
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the issuer.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the issuer.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the issuer.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the issuer.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the issuer.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the issuer.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the issuer.
-                            type: boolean
-                        type: object
-                      notAfter:
-                        description: NotAfter defines whether to add the Not After
-                          information from the Validity part.
-                        type: boolean
-                      notBefore:
-                        description: NotBefore defines whether to add the Not Before
-                          information from the Validity part.
-                        type: boolean
-                      sans:
-                        description: Sans defines whether to add the Subject Alternative
-                          Name information from the Subject Alternative Name part.
-                        type: boolean
-                      serialNumber:
-                        description: SerialNumber defines whether to add the client
-                          serialNumber information.
-                        type: boolean
-                      subject:
-                        description: Subject defines the client certificate subject
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the subject.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the subject.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the subject.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the subject.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the subject.
-                            type: boolean
-                          organizationalUnit:
-                            description: OrganizationalUnit defines whether to add
-                              the organizationalUnit information into the subject.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the subject.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the subject.
-                            type: boolean
-                        type: object
-                    type: object
-                  pem:
-                    description: PEM sets the X-Forwarded-Tls-Client-Cert header with
-                      the certificate.
-                    type: boolean
-                type: object
-              plugin:
-                additionalProperties:
-                  x-kubernetes-preserve-unknown-fields: true
-                description: 'Plugin defines the middleware plugin configuration.
-                  More info: https://doc.traefik.io/traefik/plugins/'
-                type: object
-              rateLimit:
-                description: 'RateLimit holds the rate limit configuration. This middleware
-                  ensures that services will receive a fair amount of requests, and
-                  allows one to define what fair is. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ratelimit/'
-                properties:
-                  average:
-                    description: Average is the maximum rate, by default in requests/s,
-                      allowed for the given source. It defaults to 0, which means
-                      no rate limiting. The rate is actually defined by dividing Average
-                      by Period. So for a rate below 1req/s, one needs to define a
-                      Period larger than a second.
-                    format: int64
-                    type: integer
-                  burst:
-                    description: Burst is the maximum number of requests allowed to
-                      arrive in the same arbitrarily small period of time. It defaults
-                      to 1.
-                    format: int64
-                    type: integer
-                  period:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: 'Period, in combination with Average, defines the
-                      actual maximum rate, such as: r = Average / Period. It defaults
-                      to a second.'
-                    x-kubernetes-int-or-string: true
-                  sourceCriterion:
-                    description: SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the request's remote
-                      address field (as an ipStrategy).
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              redirectRegex:
-                description: 'RedirectRegex holds the redirect regex middleware configuration.
-                  This middleware redirects a request using regex matching and replacement.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectregex/#regex'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  regex:
-                    description: Regex defines the regex used to match and capture
-                      elements from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines how to modify the URL to have
-                      the new target URL.
-                    type: string
-                type: object
-              redirectScheme:
-                description: 'RedirectScheme holds the redirect scheme middleware
-                  configuration. This middleware redirects requests from a scheme/port
-                  to another. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectscheme/'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  port:
-                    description: Port defines the port of the new URL.
-                    type: string
-                  scheme:
-                    description: Scheme defines the scheme of the new URL.
-                    type: string
-                type: object
-              replacePath:
-                description: 'ReplacePath holds the replace path middleware configuration.
-                  This middleware replaces the path of the request URL and store the
-                  original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepath/'
-                properties:
-                  path:
-                    description: Path defines the path to use as replacement in the
-                      request URL.
-                    type: string
-                type: object
-              replacePathRegex:
-                description: 'ReplacePathRegex holds the replace path regex middleware
-                  configuration. This middleware replaces the path of a URL using
-                  regex matching and replacement. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepathregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression used to match
-                      and capture the path from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines the replacement path format,
-                      which can include captured variables.
-                    type: string
-                type: object
-              retry:
-                description: 'Retry holds the retry middleware configuration. This
-                  middleware reissues requests a given number of times to a backend
-                  server if that server does not reply. As soon as the server answers,
-                  the middleware stops retrying, regardless of the response status.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/retry/'
-                properties:
-                  attempts:
-                    description: Attempts defines how many times the request should
-                      be retried.
-                    type: integer
-                  initialInterval:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: InitialInterval defines the first wait time in the
-                      exponential backoff series. The maximum interval is calculated
-                      as twice the initialInterval. If unspecified, requests will
-                      be retried immediately. The value of initialInterval should
-                      be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.
-                    x-kubernetes-int-or-string: true
-                type: object
-              stripPrefix:
-                description: 'StripPrefix holds the strip prefix middleware configuration.
-                  This middleware removes the specified prefixes from the URL path.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefix/'
-                properties:
-                  prefixes:
-                    description: Prefixes defines the prefixes to strip from the request
-                      URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              stripPrefixRegex:
-                description: 'StripPrefixRegex holds the strip prefix regex middleware
-                  configuration. This middleware removes the matching prefixes from
-                  the URL path. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefixregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression to match the
-                      path prefix from the request URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewaretcps.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewaretcps.yaml
deleted file mode 100644
index 071b49cf89e6ff6787ff2d3a883900cd25c182f3..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_middlewaretcps.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewaretcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: MiddlewareTCP
-    listKind: MiddlewareTCPList
-    plural: middlewaretcps
-    singular: middlewaretcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/'
-        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: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
-            properties:
-              inFlightConn:
-                description: InFlightConn defines the InFlightConn middleware configuration.
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      connections. The middleware closes the connection if there are
-                      already amount connections opened.
-                    format: int64
-                    type: integer
-                type: object
-              ipAllowList:
-                description: IPAllowList defines the IPAllowList middleware configuration.
-                properties:
-                  sourceRange:
-                    description: SourceRange defines the allowed IPs (or ranges of
-                      allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransports.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransports.yaml
deleted file mode 100644
index 362db4f49418b09d013c9c82192cc8575544c874..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransports.yaml
+++ /dev/null
@@ -1,141 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransports.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransport
-    listKind: ServersTransportList
-    plural: serverstransports
-    singular: serverstransport
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransport is the CRD implementation of a ServersTransport.
-          If no serversTransport is specified, the default@internal will be used.
-          The default@internal serversTransport is created from the static configuration.
-          More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1'
-        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: ServersTransportSpec defines the desired state of a ServersTransport.
-            properties:
-              certificatesSecrets:
-                description: CertificatesSecrets defines a list of secret storing
-                  client certificates for mTLS.
-                items:
-                  type: string
-                type: array
-              disableHTTP2:
-                description: DisableHTTP2 disables HTTP/2 for connections with backend
-                  servers.
-                type: boolean
-              forwardingTimeouts:
-                description: ForwardingTimeouts defines the timeouts for requests
-                  forwarded to the backend servers.
-                properties:
-                  dialTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: DialTimeout is the amount of time to wait until a
-                      connection to a backend server can be established.
-                    x-kubernetes-int-or-string: true
-                  idleConnTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: IdleConnTimeout is the maximum period for which an
-                      idle HTTP keep-alive connection will remain open before closing
-                      itself.
-                    x-kubernetes-int-or-string: true
-                  pingTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: PingTimeout is the timeout after which the HTTP/2
-                      connection will be closed if a response to ping is not received.
-                    x-kubernetes-int-or-string: true
-                  readIdleTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ReadIdleTimeout is the timeout after which a health
-                      check using ping frame will be carried out if no frame is received
-                      on the HTTP/2 connection.
-                    x-kubernetes-int-or-string: true
-                  responseHeaderTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ResponseHeaderTimeout is the amount of time to wait
-                      for a server's response headers after fully writing the request
-                      (including its body, if any).
-                    x-kubernetes-int-or-string: true
-                type: object
-              insecureSkipVerify:
-                description: InsecureSkipVerify disables SSL certificate verification.
-                type: boolean
-              maxIdleConnsPerHost:
-                description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                  to keep per-host.
-                type: integer
-              peerCertURI:
-                description: PeerCertURI defines the peer cert URI used to match against
-                  SAN URI during the peer certificate verification.
-                type: string
-              rootCAsSecrets:
-                description: RootCAsSecrets defines a list of CA secret used to validate
-                  self-signed certificate.
-                items:
-                  type: string
-                type: array
-              serverName:
-                description: ServerName defines the server name used to contact the
-                  server.
-                type: string
-              spiffe:
-                description: Spiffe defines the SPIFFE configuration.
-                properties:
-                  ids:
-                    description: IDs defines the allowed SPIFFE IDs (takes precedence
-                      over the SPIFFE TrustDomain).
-                    items:
-                      type: string
-                    type: array
-                  trustDomain:
-                    description: TrustDomain defines the allowed SPIFFE trust domain.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransporttcps.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransporttcps.yaml
deleted file mode 100644
index c239d6ad331418bf6605c5ba397dd9974b346456..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_serverstransporttcps.yaml
+++ /dev/null
@@ -1,122 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransporttcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransportTCP
-    listKind: ServersTransportTCPList
-    plural: serverstransporttcps
-    singular: serverstransporttcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransportTCP is the CRD implementation of a TCPServersTransport.
-          If no tcpServersTransport is specified, a default one named default@internal
-          will be used. The default@internal tcpServersTransport can be configured
-          in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3'
-        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: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.
-            properties:
-              dialKeepAlive:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialKeepAlive is the interval between keep-alive probes
-                  for an active network connection. If zero, keep-alive probes are
-                  sent with a default value (currently 15 seconds), if supported by
-                  the protocol and operating system. Network protocols or operating
-                  systems that do not support keep-alives ignore this field. If negative,
-                  keep-alive probes are disabled.
-                x-kubernetes-int-or-string: true
-              dialTimeout:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialTimeout is the amount of time to wait until a connection
-                  to a backend server can be established.
-                x-kubernetes-int-or-string: true
-              terminationDelay:
-                anyOf:
-                - type: integer
-                - type: string
-                description: TerminationDelay defines the delay to wait before fully
-                  terminating the connection, after one connected peer has closed
-                  its writing capability.
-                x-kubernetes-int-or-string: true
-              tls:
-                description: TLS defines the TLS configuration
-                properties:
-                  certificatesSecrets:
-                    description: CertificatesSecrets defines a list of secret storing
-                      client certificates for mTLS.
-                    items:
-                      type: string
-                    type: array
-                  insecureSkipVerify:
-                    description: InsecureSkipVerify disables TLS certificate verification.
-                    type: boolean
-                  peerCertURI:
-                    description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                      to keep per-host. PeerCertURI defines the peer cert URI used
-                      to match against SAN URI during the peer certificate verification.
-                    type: string
-                  rootCAsSecrets:
-                    description: RootCAsSecrets defines a list of CA secret used to
-                      validate self-signed certificates.
-                    items:
-                      type: string
-                    type: array
-                  serverName:
-                    description: ServerName defines the server name used to contact
-                      the server.
-                    type: string
-                  spiffe:
-                    description: Spiffe defines the SPIFFE configuration.
-                    properties:
-                      ids:
-                        description: IDs defines the allowed SPIFFE IDs (takes precedence
-                          over the SPIFFE TrustDomain).
-                        items:
-                          type: string
-                        type: array
-                      trustDomain:
-                        description: TrustDomain defines the allowed SPIFFE trust
-                          domain.
-                        type: string
-                    type: object
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsoptions.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsoptions.yaml
deleted file mode 100644
index ffbd86ec14347f41e433fc57fc6f25c6b95a5e7a..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsoptions.yaml
+++ /dev/null
@@ -1,107 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsoptions.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSOption
-    listKind: TLSOptionList
-    plural: tlsoptions
-    singular: tlsoption
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSOption is the CRD implementation of a Traefik TLS Option,
-          allowing to configure some parameters of the TLS connection. More info:
-          https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-        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: TLSOptionSpec defines the desired state of a TLSOption.
-            properties:
-              alpnProtocols:
-                description: 'ALPNProtocols defines the list of supported application
-                  level protocols for the TLS handshake, in order of preference. More
-                  info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols'
-                items:
-                  type: string
-                type: array
-              cipherSuites:
-                description: 'CipherSuites defines the list of supported cipher suites
-                  for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#cipher-suites'
-                items:
-                  type: string
-                type: array
-              clientAuth:
-                description: ClientAuth defines the server's policy for TLS Client
-                  Authentication.
-                properties:
-                  clientAuthType:
-                    description: ClientAuthType defines the client authentication
-                      type to apply.
-                    enum:
-                    - NoClientCert
-                    - RequestClientCert
-                    - RequireAnyClientCert
-                    - VerifyClientCertIfGiven
-                    - RequireAndVerifyClientCert
-                    type: string
-                  secretNames:
-                    description: SecretNames defines the names of the referenced Kubernetes
-                      Secret storing certificate details.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              curvePreferences:
-                description: 'CurvePreferences defines the preferred elliptic curves
-                  in a specific order. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#curve-preferences'
-                items:
-                  type: string
-                type: array
-              maxVersion:
-                description: 'MaxVersion defines the maximum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: None.'
-                type: string
-              minVersion:
-                description: 'MinVersion defines the minimum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: VersionTLS10.'
-                type: string
-              sniStrict:
-                description: SniStrict defines whether Traefik allows connections
-                  from clients connections that do not specify a server_name extension.
-                type: boolean
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsstores.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsstores.yaml
deleted file mode 100644
index 9e35d689794c3ab98e58c80dfc0d334cc20175a7..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_tlsstores.yaml
+++ /dev/null
@@ -1,99 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsstores.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSStore
-    listKind: TLSStoreList
-    plural: tlsstores
-    singular: tlsstore
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For
-          the time being, only the TLSStore named default is supported. This means
-          that you cannot have two stores that are named default in different Kubernetes
-          namespaces. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores'
-        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: TLSStoreSpec defines the desired state of a TLSStore.
-            properties:
-              certificates:
-                description: Certificates is a list of secret names, each secret holding
-                  a key/certificate pair to add to the store.
-                items:
-                  description: Certificate holds a secret name for the TLSStore resource.
-                  properties:
-                    secretName:
-                      description: SecretName is the name of the referenced Kubernetes
-                        Secret to specify the certificate details.
-                      type: string
-                  required:
-                  - secretName
-                  type: object
-                type: array
-              defaultCertificate:
-                description: DefaultCertificate defines the default certificate configuration.
-                properties:
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                required:
-                - secretName
-                type: object
-              defaultGeneratedCert:
-                description: DefaultGeneratedCert defines the default generated certificate
-                  configuration.
-                properties:
-                  domain:
-                    description: Domain is the domain definition for the DefaultCertificate.
-                    properties:
-                      main:
-                        description: Main defines the main domain name.
-                        type: string
-                      sans:
-                        description: SANs defines the subject alternative domain names.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  resolver:
-                    description: Resolver is the name of the resolver that will be
-                      used to issue the DefaultCertificate.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/dynamic-configuration/traefik.containo.us_traefikservices.yaml b/docs/content/reference/dynamic-configuration/traefik.containo.us_traefikservices.yaml
deleted file mode 100644
index edff280636ac6e4bdfd6ac827341139c92d8739c..0000000000000000000000000000000000000000
--- a/docs/content/reference/dynamic-configuration/traefik.containo.us_traefikservices.yaml
+++ /dev/null
@@ -1,402 +0,0 @@
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  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/v3.0/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/v3.0/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/v3.0/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/v3.0/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/v3.0/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
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/docs/content/reference/static-configuration/cli-ref.md b/docs/content/reference/static-configuration/cli-ref.md
index d10e741eda4f27328724fdf2f13db8620903cd72..ac90226ce8de82f7b858d066933dd5431d0e2d77 100644
--- a/docs/content/reference/static-configuration/cli-ref.md
+++ b/docs/content/reference/static-configuration/cli-ref.md
@@ -189,9 +189,6 @@ WriteTimeout is the maximum duration before timing out writes of the response. I
 `--entrypoints.<name>.udp.timeout`:  
 Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
 
-`--experimental.hub`:  
-Enable the Traefik Hub provider. (Default: ```false```)
-
 `--experimental.kubernetesgateway`:  
 Allow the Kubernetes gateway api provider usage. (Default: ```false```)
 
diff --git a/docs/content/reference/static-configuration/env-ref.md b/docs/content/reference/static-configuration/env-ref.md
index 08fb5514bdbba2935d8f44d0034cfb5050c98fcd..31748c91cf711b7737e26ac94b4be2f27a113466 100644
--- a/docs/content/reference/static-configuration/env-ref.md
+++ b/docs/content/reference/static-configuration/env-ref.md
@@ -189,9 +189,6 @@ WriteTimeout is the maximum duration before timing out writes of the response. I
 `TRAEFIK_ENTRYPOINTS_<NAME>_UDP_TIMEOUT`:  
 Timeout defines how long to wait on an idle session before releasing the related resources. (Default: ```3```)
 
-`TRAEFIK_EXPERIMENTAL_HUB`:  
-Enable the Traefik Hub provider. (Default: ```false```)
-
 `TRAEFIK_EXPERIMENTAL_KUBERNETESGATEWAY`:  
 Allow the Kubernetes gateway api provider usage. (Default: ```false```)
 
diff --git a/docs/content/routing/providers/kubernetes-gateway.md b/docs/content/routing/providers/kubernetes-gateway.md
index 42c9f701b441589cd12bd5ba7930890cd0eaf7c7..6c15acb4f1977bd424aedfa74296dee8d4fe24e0 100644
--- a/docs/content/routing/providers/kubernetes-gateway.md
+++ b/docs/content/routing/providers/kubernetes-gateway.md
@@ -261,7 +261,7 @@ Kubernetes cluster before creating `HTTPRoute` objects.
 | [15] | `name`        | The name of the referent service.                                                                                                                                           |
 | [16] | `weight`      | The proportion of traffic forwarded to a targetRef, computed as weight/(sum of all weights in targetRefs).                                                                  |
 | [17] | `port`        | The port of the referent service.                                                                                                                                           |
-| [18] | `group`       | Group is the group of the referent. Only `traefik.io`, `traefik.containo.us` and `gateway.networking.k8s.io` values are supported.                                          |
+| [18] | `group`       | Group is the group of the referent. Only `traefik.io` and `gateway.networking.k8s.io` values are supported.                                                                 |
 | [19] | `kind`        | Kind is kind of the referent. Only `TraefikService` and `Service` values are supported.                                                                                     |
 
 ### Kind: `TCPRoute`
@@ -294,19 +294,19 @@ Kubernetes cluster before creating `TCPRoute` objects.
               kind: TraefikService              # [11]
     ```
 
-| Ref  | Attribute     | Description                                                                                                                        |
-|------|---------------|------------------------------------------------------------------------------------------------------------------------------------|
-| [1]  | `parentRefs`  | References the resources (usually Gateways) that a Route wants to be attached to.                                                  |
-| [2]  | `name`        | Name of the referent.                                                                                                              |
-| [3]  | `namespace`   | Namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route.                    |
-| [4]  | `sectionName` | Name of a section within the target resource (the Listener name).                                                                  |
-| [5]  | `rules`       | Rules are a list of TCP matchers and actions.                                                                                      |
-| [6]  | `backendRefs` | Defines the backend(s) where matching requests should be sent.                                                                     |
-| [7]  | `name`        | The name of the referent service.                                                                                                  |
-| [8]  | `weight`      | The proportion of traffic forwarded to a targetRef, computed as weight/(sum of all weights in targetRefs).                         |
-| [9]  | `port`        | The port of the referent service.                                                                                                  |
-| [10] | `group`       | Group is the group of the referent. Only `traefik.io`, `traefik.containo.us` and `gateway.networking.k8s.io` values are supported. |
-| [11] | `kind`        | Kind is kind of the referent. Only `TraefikService` and `Service` values are supported.                                            |
+| Ref  | Attribute     | Description                                                                                                     |
+|------|---------------|-----------------------------------------------------------------------------------------------------------------|
+| [1]  | `parentRefs`  | References the resources (usually Gateways) that a Route wants to be attached to.                               |
+| [2]  | `name`        | Name of the referent.                                                                                           |
+| [3]  | `namespace`   | Namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. |
+| [4]  | `sectionName` | Name of a section within the target resource (the Listener name).                                               |
+| [5]  | `rules`       | Rules are a list of TCP matchers and actions.                                                                   |
+| [6]  | `backendRefs` | Defines the backend(s) where matching requests should be sent.                                                  |
+| [7]  | `name`        | The name of the referent service.                                                                               |
+| [8]  | `weight`      | The proportion of traffic forwarded to a targetRef, computed as weight/(sum of all weights in targetRefs).      |
+| [9]  | `port`        | The port of the referent service.                                                                               |
+| [10] | `group`       | Group is the group of the referent. Only `traefik.io` and `gateway.networking.k8s.io` values are supported.     |
+| [11] | `kind`        | Kind is kind of the referent. Only `TraefikService` and `Service` values are supported.                         |
 
 ### Kind: `TLSRoute`
 
@@ -340,17 +340,17 @@ Kubernetes cluster before creating `TLSRoute` objects.
               kind: TraefikService              # [12]
     ```
 
-| Ref  | Attribute     | Description                                                                                                                        |
-|------|---------------|------------------------------------------------------------------------------------------------------------------------------------|
-| [1]  | `parentRefs`  | References the resources (usually Gateways) that a Route wants to be attached to.                                                  |
-| [2]  | `name`        | Name of the referent.                                                                                                              |
-| [3]  | `namespace`   | Namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route.                    |
-| [4]  | `sectionName` | Name of a section within the target resource (the Listener name).                                                                  |
-| [5]  | `hostnames`   | Defines a set of SNI names that should match against the SNI attribute of TLS ClientHello message in TLS handshake.                |
-| [6]  | `rules`       | Rules are a list of TCP matchers and actions.                                                                                      |
-| [7]  | `backendRefs` | Defines the backend(s) where matching requests should be sent.                                                                     |
-| [8]  | `name`        | The name of the referent service.                                                                                                  |
-| [9]  | `weight`      | The proportion of traffic forwarded to a targetRef, computed as weight/(sum of all weights in targetRefs).                         |
-| [10] | `port`        | The port of the referent service.                                                                                                  |
-| [11] | `group`       | Group is the group of the referent. Only `traefik.io`, `traefik.containo.us` and `gateway.networking.k8s.io` values are supported. |
-| [12] | `kind`        | Kind is kind of the referent. Only `TraefikService` and `Service` values are supported.                                            |
+| Ref  | Attribute     | Description                                                                                                         |
+|------|---------------|---------------------------------------------------------------------------------------------------------------------|
+| [1]  | `parentRefs`  | References the resources (usually Gateways) that a Route wants to be attached to.                                   |
+| [2]  | `name`        | Name of the referent.                                                                                               |
+| [3]  | `namespace`   | Namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route.     |
+| [4]  | `sectionName` | Name of a section within the target resource (the Listener name).                                                   |
+| [5]  | `hostnames`   | Defines a set of SNI names that should match against the SNI attribute of TLS ClientHello message in TLS handshake. |
+| [6]  | `rules`       | Rules are a list of TCP matchers and actions.                                                                       |
+| [7]  | `backendRefs` | Defines the backend(s) where matching requests should be sent.                                                      |
+| [8]  | `name`        | The name of the referent service.                                                                                   |
+| [9]  | `weight`      | The proportion of traffic forwarded to a targetRef, computed as weight/(sum of all weights in targetRefs).          |
+| [10] | `port`        | The port of the referent service.                                                                                   |
+| [11] | `group`       | Group is the group of the referent. Only `traefik.io` and `gateway.networking.k8s.io` values are supported.         |
+| [12] | `kind`        | Kind is kind of the referent. Only `TraefikService` and `Service` values are supported.                             |
diff --git a/integration/fixtures/k8s/01-traefik-crd.yml b/integration/fixtures/k8s/01-traefik-crd.yml
index e3601147bb24c7a1de2af884bc84134acf17e8dd..37849dedc6f7291d86569326348804565a13bfb6 100644
--- a/integration/fixtures/k8s/01-traefik-crd.yml
+++ b/integration/fixtures/k8s/01-traefik-crd.yml
@@ -2442,2447 +2442,3 @@ status:
     plural: ""
   conditions: []
   storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutes.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRoute
-    listKind: IngressRouteList
-    plural: ingressroutes
-    singular: ingressroute
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRoute is the CRD implementation of a Traefik HTTP Router.
-        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: IngressRouteSpec defines the desired state of IngressRoute.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: Route holds the HTTP route configuration.
-                  properties:
-                    kind:
-                      description: Kind defines the kind of the route. Rule is the
-                        only supported kind.
-                      enum:
-                      - Rule
-                      type: string
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule'
-                      type: string
-                    middlewares:
-                      description: 'Middlewares defines the list of references to
-                        Middleware resources. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-middleware'
-                      items:
-                        description: MiddlewareRef is a reference to a Middleware
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Middleware
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Middleware resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority'
-                      type: integer
-                    services:
-                      description: Services defines the list of Service. It can contain
-                        any combination of TraefikService and/or reference to a Kubernetes
-                        Service.
-                      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/v3.0/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
-                  required:
-                  - kind
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSOption.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSOption. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: 'Name defines the name of the referenced TLSStore.
-                          More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                      namespace:
-                        description: 'Namespace defines the namespace of the referenced
-                          TLSStore. More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore'
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressroutetcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteTCP
-    listKind: IngressRouteTCPList
-    plural: ingressroutetcps
-    singular: ingressroutetcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
-        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: IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteTCP holds the TCP route configuration.
-                  properties:
-                    match:
-                      description: 'Match defines the router''s rule. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule_1'
-                      type: string
-                    middlewares:
-                      description: Middlewares defines the list of references to MiddlewareTCP
-                        resources.
-                      items:
-                        description: ObjectReference is a generic reference to a Traefik
-                          resource.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Traefik
-                              resource.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Traefik resource.
-                            type: string
-                        required:
-                        - name
-                        type: object
-                      type: array
-                    priority:
-                      description: 'Priority defines the router''s priority. More
-                        info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority_1'
-                      type: integer
-                    services:
-                      description: Services defines the list of TCP services.
-                      items:
-                        description: ServiceTCP defines an upstream TCP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          proxyProtocol:
-                            description: 'ProxyProtocol defines the PROXY protocol
-                              configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol'
-                            properties:
-                              version:
-                                description: Version defines the PROXY Protocol version
-                                  to use.
-                                type: integer
-                            type: object
-                          serversTransport:
-                            description: ServersTransport defines the name of ServersTransportTCP
-                              resource to use. It allows to configure the transport
-                              between Traefik and your servers. Can only be used on
-                              a Kubernetes Service.
-                            type: string
-                          tls:
-                            description: TLS determines whether to use TLS when dialing
-                              with the backend.
-                            type: boolean
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  required:
-                  - match
-                  type: object
-                type: array
-              tls:
-                description: 'TLS defines the TLS configuration on a layer 4 / TCP
-                  Route. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls_1'
-                properties:
-                  certResolver:
-                    description: 'CertResolver defines the name of the certificate
-                      resolver to use. Cert resolvers have to be configured in the
-                      static configuration. More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers'
-                    type: string
-                  domains:
-                    description: 'Domains defines the list of domains that will be
-                      used to issue certificates. More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains'
-                    items:
-                      description: Domain holds a domain name with SANs.
-                      properties:
-                        main:
-                          description: Main defines the main domain name.
-                          type: string
-                        sans:
-                          description: SANs defines the subject alternative domain
-                            names.
-                          items:
-                            type: string
-                          type: array
-                      type: object
-                    type: array
-                  options:
-                    description: 'Options defines the reference to a TLSOption, that
-                      specifies the parameters of the TLS connection. If not defined,
-                      the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  passthrough:
-                    description: Passthrough defines whether a TLS router will terminate
-                      the TLS connection.
-                    type: boolean
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                  store:
-                    description: Store defines the reference to the TLSStore, that
-                      will be used to store certificates. Please note that only `default`
-                      TLSStore can be used.
-                    properties:
-                      name:
-                        description: Name defines the name of the referenced Traefik
-                          resource.
-                        type: string
-                      namespace:
-                        description: Namespace defines the namespace of the referenced
-                          Traefik resource.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                type: object
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: ingressrouteudps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: IngressRouteUDP
-    listKind: IngressRouteUDPList
-    plural: ingressrouteudps
-    singular: ingressrouteudp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
-        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: IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
-            properties:
-              entryPoints:
-                description: 'EntryPoints defines the list of entry point names to
-                  bind to. Entry points have to be configured in the static configuration.
-                  More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-                  Default: all.'
-                items:
-                  type: string
-                type: array
-              routes:
-                description: Routes defines the list of routes.
-                items:
-                  description: RouteUDP holds the UDP route configuration.
-                  properties:
-                    services:
-                      description: Services defines the list of UDP services.
-                      items:
-                        description: ServiceUDP defines an upstream UDP service to
-                          proxy traffic to.
-                        properties:
-                          name:
-                            description: Name defines the name of the referenced Kubernetes
-                              Service.
-                            type: string
-                          namespace:
-                            description: Namespace defines the namespace of the referenced
-                              Kubernetes Service.
-                            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
-                          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
-                          weight:
-                            description: Weight defines the weight used when balancing
-                              requests between multiple Kubernetes Service.
-                            type: integer
-                        required:
-                        - name
-                        - port
-                        type: object
-                      type: array
-                  type: object
-                type: array
-            required:
-            - routes
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewares.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: Middleware
-    listKind: MiddlewareList
-    plural: middlewares
-    singular: middleware
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'Middleware is the CRD implementation of a Traefik Middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/'
-        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: MiddlewareSpec defines the desired state of a Middleware.
-            properties:
-              addPrefix:
-                description: 'AddPrefix holds the add prefix middleware configuration.
-                  This middleware updates the path of a request before forwarding
-                  it. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/addprefix/'
-                properties:
-                  prefix:
-                    description: Prefix is the string to add before the current path
-                      in the requested URL. It should include a leading slash (/).
-                    type: string
-                type: object
-              basicAuth:
-                description: 'BasicAuth holds the basic auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: 'RemoveHeader sets the removeHeader option to true
-                      to remove the authorization header before forwarding the request
-                      to your service. Default: false.'
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              buffering:
-                description: 'Buffering holds the buffering middleware configuration.
-                  This middleware retries or limits the size of requests that can
-                  be forwarded to backends. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#maxrequestbodybytes'
-                properties:
-                  maxRequestBodyBytes:
-                    description: 'MaxRequestBodyBytes defines the maximum allowed
-                      body size for the request (in bytes). If the request exceeds
-                      the allowed size, it is not forwarded to the service, and the
-                      client gets a 413 (Request Entity Too Large) response. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  maxResponseBodyBytes:
-                    description: 'MaxResponseBodyBytes defines the maximum allowed
-                      response size from the service (in bytes). If the response exceeds
-                      the allowed size, it is not forwarded to the client. The client
-                      gets a 500 (Internal Server Error) response instead. Default:
-                      0 (no maximum).'
-                    format: int64
-                    type: integer
-                  memRequestBodyBytes:
-                    description: 'MemRequestBodyBytes defines the threshold (in bytes)
-                      from which the request will be buffered on disk instead of in
-                      memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  memResponseBodyBytes:
-                    description: 'MemResponseBodyBytes defines the threshold (in bytes)
-                      from which the response will be buffered on disk instead of
-                      in memory. Default: 1048576 (1Mi).'
-                    format: int64
-                    type: integer
-                  retryExpression:
-                    description: 'RetryExpression defines the retry conditions. It
-                      is a logical combination of functions with operators AND (&&)
-                      and OR (||). More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/buffering/#retryexpression'
-                    type: string
-                type: object
-              chain:
-                description: 'Chain holds the configuration of the chain middleware.
-                  This middleware enables to define reusable combinations of other
-                  pieces of middleware. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/chain/'
-                properties:
-                  middlewares:
-                    description: Middlewares is the list of MiddlewareRef which composes
-                      the chain.
-                    items:
-                      description: MiddlewareRef is a reference to a Middleware resource.
-                      properties:
-                        name:
-                          description: Name defines the name of the referenced Middleware
-                            resource.
-                          type: string
-                        namespace:
-                          description: Namespace defines the namespace of the referenced
-                            Middleware resource.
-                          type: string
-                      required:
-                      - name
-                      type: object
-                    type: array
-                type: object
-              circuitBreaker:
-                description: CircuitBreaker holds the circuit breaker configuration.
-                properties:
-                  checkPeriod:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: CheckPeriod is the interval between successive checks
-                      of the circuit breaker condition (when in standby state).
-                    x-kubernetes-int-or-string: true
-                  expression:
-                    description: Expression is the condition that triggers the tripped
-                      state.
-                    type: string
-                  fallbackDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: FallbackDuration is the duration for which the circuit
-                      breaker will wait before trying to recover (from a tripped state).
-                    x-kubernetes-int-or-string: true
-                  recoveryDuration:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: RecoveryDuration is the duration for which the circuit
-                      breaker will try to recover (as soon as it is in recovering
-                      state).
-                    x-kubernetes-int-or-string: true
-                type: object
-              compress:
-                description: 'Compress holds the compress middleware configuration.
-                  This middleware compresses responses before sending them to the
-                  client, using gzip compression. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/compress/'
-                properties:
-                  excludedContentTypes:
-                    description: ExcludedContentTypes defines the list of content
-                      types to compare the Content-Type header of the incoming requests
-                      and responses before compressing. `application/grpc` is always
-                      excluded.
-                    items:
-                      type: string
-                    type: array
-                  minResponseBodyBytes:
-                    description: 'MinResponseBodyBytes defines the minimum amount
-                      of bytes a response body must have to be compressed. Default:
-                      1024.'
-                    type: integer
-                type: object
-              contentType:
-                description: ContentType holds the content-type middleware configuration.
-                  This middleware sets the `Content-Type` header value to the media
-                  type detected from the response content, when it is not set by the
-                  backend.
-                type: object
-              digestAuth:
-                description: 'DigestAuth holds the digest auth middleware configuration.
-                  This middleware restricts access to your services to known users.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/digestauth/'
-                properties:
-                  headerField:
-                    description: 'HeaderField defines a header field to store the
-                      authenticated user. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield'
-                    type: string
-                  realm:
-                    description: 'Realm allows the protected resources on a server
-                      to be partitioned into a set of protection spaces, each with
-                      its own authentication scheme. Default: traefik.'
-                    type: string
-                  removeHeader:
-                    description: RemoveHeader defines whether to remove the authorization
-                      header before forwarding the request to the backend.
-                    type: boolean
-                  secret:
-                    description: Secret is the name of the referenced Kubernetes Secret
-                      containing user credentials.
-                    type: string
-                type: object
-              errors:
-                description: 'ErrorPage holds the custom error middleware configuration.
-                  This middleware returns a custom page in lieu of the default, according
-                  to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/'
-                properties:
-                  query:
-                    description: Query defines the URL for the error page (hosted
-                      by service). The {status} variable can be used in order to insert
-                      the status code in the URL.
-                    type: string
-                  service:
-                    description: 'Service defines the reference to a Kubernetes Service
-                      that will serve the error page. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/#service'
-                    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/v3.0/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
-                  status:
-                    description: Status defines which status or range of statuses
-                      should result in an error page. It can be either a status code
-                      as a number (500), as multiple comma-separated numbers (500,502),
-                      as ranges by separating two codes with a dash (500-599), or
-                      a combination of the two (404,418,500-599).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              forwardAuth:
-                description: 'ForwardAuth holds the forward auth middleware configuration.
-                  This middleware delegates the request authentication to a Service.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/'
-                properties:
-                  address:
-                    description: Address defines the authentication server address.
-                    type: string
-                  authRequestHeaders:
-                    description: AuthRequestHeaders defines the list of the headers
-                      to copy from the request to the authentication server. If not
-                      set or empty then all request headers are passed.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeaders:
-                    description: AuthResponseHeaders defines the list of headers to
-                      copy from the authentication server response and set on forwarded
-                      request, replacing any existing conflicting headers.
-                    items:
-                      type: string
-                    type: array
-                  authResponseHeadersRegex:
-                    description: 'AuthResponseHeadersRegex defines the regex to match
-                      headers to copy from the authentication server response and
-                      set on forwarded request, after stripping all headers that match
-                      the regex. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/#authresponseheadersregex'
-                    type: string
-                  tls:
-                    description: TLS defines the configuration used to secure the
-                      connection to the authentication server.
-                    properties:
-                      caSecret:
-                        description: CASecret is the name of the referenced Kubernetes
-                          Secret containing the CA to validate the server certificate.
-                          The CA certificate is extracted from key `tls.ca` or `ca.crt`.
-                        type: string
-                      certSecret:
-                        description: CertSecret is the name of the referenced Kubernetes
-                          Secret containing the client certificate. The client certificate
-                          is extracted from the keys `tls.crt` and `tls.key`.
-                        type: string
-                      insecureSkipVerify:
-                        description: InsecureSkipVerify defines whether the server
-                          certificates should be validated.
-                        type: boolean
-                    type: object
-                  trustForwardHeader:
-                    description: 'TrustForwardHeader defines whether to trust (ie:
-                      forward) all X-Forwarded-* headers.'
-                    type: boolean
-                type: object
-              grpcWeb:
-                description: GrpcWeb holds the gRPC web middleware configuration.
-                  This middleware converts a gRPC web request to an HTTP/2 gRPC request.
-                properties:
-                  allowOrigins:
-                    description: AllowOrigins is a list of allowable origins. Can
-                      also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                type: object
-              headers:
-                description: 'Headers holds the headers middleware configuration.
-                  This middleware manages the requests and responses headers. More
-                  info: https://doc.traefik.io/traefik/v3.0/middlewares/http/headers/#customrequestheaders'
-                properties:
-                  accessControlAllowCredentials:
-                    description: AccessControlAllowCredentials defines whether the
-                      request can include user credentials.
-                    type: boolean
-                  accessControlAllowHeaders:
-                    description: AccessControlAllowHeaders defines the Access-Control-Request-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowMethods:
-                    description: AccessControlAllowMethods defines the Access-Control-Request-Method
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginList:
-                    description: AccessControlAllowOriginList is a list of allowable
-                      origins. Can also be a wildcard origin "*".
-                    items:
-                      type: string
-                    type: array
-                  accessControlAllowOriginListRegex:
-                    description: AccessControlAllowOriginListRegex is a list of allowable
-                      origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).
-                    items:
-                      type: string
-                    type: array
-                  accessControlExposeHeaders:
-                    description: AccessControlExposeHeaders defines the Access-Control-Expose-Headers
-                      values sent in preflight response.
-                    items:
-                      type: string
-                    type: array
-                  accessControlMaxAge:
-                    description: AccessControlMaxAge defines the time that a preflight
-                      request may be cached.
-                    format: int64
-                    type: integer
-                  addVaryHeader:
-                    description: AddVaryHeader defines whether the Vary header is
-                      automatically added/updated when the AccessControlAllowOriginList
-                      is set.
-                    type: boolean
-                  allowedHosts:
-                    description: AllowedHosts defines the fully qualified list of
-                      allowed domain names.
-                    items:
-                      type: string
-                    type: array
-                  browserXssFilter:
-                    description: BrowserXSSFilter defines whether to add the X-XSS-Protection
-                      header with the value 1; mode=block.
-                    type: boolean
-                  contentSecurityPolicy:
-                    description: ContentSecurityPolicy defines the Content-Security-Policy
-                      header value.
-                    type: string
-                  contentTypeNosniff:
-                    description: ContentTypeNosniff defines whether to add the X-Content-Type-Options
-                      header with the nosniff value.
-                    type: boolean
-                  customBrowserXSSValue:
-                    description: CustomBrowserXSSValue defines the X-XSS-Protection
-                      header value. This overrides the BrowserXssFilter option.
-                    type: string
-                  customFrameOptionsValue:
-                    description: CustomFrameOptionsValue defines the X-Frame-Options
-                      header value. This overrides the FrameDeny option.
-                    type: string
-                  customRequestHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomRequestHeaders defines the header names and
-                      values to apply to the request.
-                    type: object
-                  customResponseHeaders:
-                    additionalProperties:
-                      type: string
-                    description: CustomResponseHeaders defines the header names and
-                      values to apply to the response.
-                    type: object
-                  forceSTSHeader:
-                    description: ForceSTSHeader defines whether to add the STS header
-                      even when the connection is HTTP.
-                    type: boolean
-                  frameDeny:
-                    description: FrameDeny defines whether to add the X-Frame-Options
-                      header with the DENY value.
-                    type: boolean
-                  hostsProxyHeaders:
-                    description: HostsProxyHeaders defines the header keys that may
-                      hold a proxied hostname value for the request.
-                    items:
-                      type: string
-                    type: array
-                  isDevelopment:
-                    description: IsDevelopment defines whether to mitigate the unwanted
-                      effects of the AllowedHosts, SSL, and STS options when developing.
-                      Usually testing takes place using HTTP, not HTTPS, and on localhost,
-                      not your production domain. If you would like your development
-                      environment to mimic production with complete Host blocking,
-                      SSL redirects, and STS headers, leave this as false.
-                    type: boolean
-                  permissionsPolicy:
-                    description: PermissionsPolicy defines the Permissions-Policy
-                      header value. This allows sites to control browser features.
-                    type: string
-                  publicKey:
-                    description: PublicKey is the public key that implements HPKP
-                      to prevent MITM attacks with forged certificates.
-                    type: string
-                  referrerPolicy:
-                    description: ReferrerPolicy defines the Referrer-Policy header
-                      value. This allows sites to control whether browsers forward
-                      the Referer header to other sites.
-                    type: string
-                  sslProxyHeaders:
-                    additionalProperties:
-                      type: string
-                    description: 'SSLProxyHeaders defines the header keys with associated
-                      values that would indicate a valid HTTPS request. It can be
-                      useful when using other proxies (example: "X-Forwarded-Proto":
-                      "https").'
-                    type: object
-                  stsIncludeSubdomains:
-                    description: STSIncludeSubdomains defines whether the includeSubDomains
-                      directive is appended to the Strict-Transport-Security header.
-                    type: boolean
-                  stsPreload:
-                    description: STSPreload defines whether the preload flag is appended
-                      to the Strict-Transport-Security header.
-                    type: boolean
-                  stsSeconds:
-                    description: STSSeconds defines the max-age of the Strict-Transport-Security
-                      header. If set to 0, the header is not set.
-                    format: int64
-                    type: integer
-                type: object
-              inFlightReq:
-                description: 'InFlightReq holds the in-flight request middleware configuration.
-                  This middleware limits the number of requests being processed and
-                  served concurrently. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/'
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      in-flight request. The middleware responds with HTTP 429 Too
-                      Many Requests if there are already amount requests in progress
-                      (based on the same sourceCriterion strategy).
-                    format: int64
-                    type: integer
-                  sourceCriterion:
-                    description: 'SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the requestHost. More
-                      info: https://doc.traefik.io/traefik/v3.0/middlewares/http/inflightreq/#sourcecriterion'
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              ipAllowList:
-                description: 'IPAllowList holds the IP allowlist middleware configuration.
-                  This middleware accepts / refuses requests based on the client IP.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/'
-                properties:
-                  ipStrategy:
-                    description: 'IPStrategy holds the IP strategy configuration used
-                      by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                    properties:
-                      depth:
-                        description: Depth tells Traefik to use the X-Forwarded-For
-                          header and take the IP located at the depth position (starting
-                          from the right).
-                        type: integer
-                      excludedIPs:
-                        description: ExcludedIPs configures Traefik to scan the X-Forwarded-For
-                          header and select the first IP not in the list.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  sourceRange:
-                    description: SourceRange defines the set of allowed IPs (or ranges
-                      of allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-              passTLSClientCert:
-                description: 'PassTLSClientCert holds the pass TLS client cert middleware
-                  configuration. This middleware adds the selected data from the passed
-                  client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/passtlsclientcert/'
-                properties:
-                  info:
-                    description: Info selects the specific client certificate details
-                      you want to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                    properties:
-                      issuer:
-                        description: Issuer defines the client certificate issuer
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the issuer.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the issuer.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the issuer.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the issuer.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the issuer.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the issuer.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the issuer.
-                            type: boolean
-                        type: object
-                      notAfter:
-                        description: NotAfter defines whether to add the Not After
-                          information from the Validity part.
-                        type: boolean
-                      notBefore:
-                        description: NotBefore defines whether to add the Not Before
-                          information from the Validity part.
-                        type: boolean
-                      sans:
-                        description: Sans defines whether to add the Subject Alternative
-                          Name information from the Subject Alternative Name part.
-                        type: boolean
-                      serialNumber:
-                        description: SerialNumber defines whether to add the client
-                          serialNumber information.
-                        type: boolean
-                      subject:
-                        description: Subject defines the client certificate subject
-                          details to add to the X-Forwarded-Tls-Client-Cert-Info header.
-                        properties:
-                          commonName:
-                            description: CommonName defines whether to add the organizationalUnit
-                              information into the subject.
-                            type: boolean
-                          country:
-                            description: Country defines whether to add the country
-                              information into the subject.
-                            type: boolean
-                          domainComponent:
-                            description: DomainComponent defines whether to add the
-                              domainComponent information into the subject.
-                            type: boolean
-                          locality:
-                            description: Locality defines whether to add the locality
-                              information into the subject.
-                            type: boolean
-                          organization:
-                            description: Organization defines whether to add the organization
-                              information into the subject.
-                            type: boolean
-                          organizationalUnit:
-                            description: OrganizationalUnit defines whether to add
-                              the organizationalUnit information into the subject.
-                            type: boolean
-                          province:
-                            description: Province defines whether to add the province
-                              information into the subject.
-                            type: boolean
-                          serialNumber:
-                            description: SerialNumber defines whether to add the serialNumber
-                              information into the subject.
-                            type: boolean
-                        type: object
-                    type: object
-                  pem:
-                    description: PEM sets the X-Forwarded-Tls-Client-Cert header with
-                      the certificate.
-                    type: boolean
-                type: object
-              plugin:
-                additionalProperties:
-                  x-kubernetes-preserve-unknown-fields: true
-                description: 'Plugin defines the middleware plugin configuration.
-                  More info: https://doc.traefik.io/traefik/plugins/'
-                type: object
-              rateLimit:
-                description: 'RateLimit holds the rate limit configuration. This middleware
-                  ensures that services will receive a fair amount of requests, and
-                  allows one to define what fair is. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ratelimit/'
-                properties:
-                  average:
-                    description: Average is the maximum rate, by default in requests/s,
-                      allowed for the given source. It defaults to 0, which means
-                      no rate limiting. The rate is actually defined by dividing Average
-                      by Period. So for a rate below 1req/s, one needs to define a
-                      Period larger than a second.
-                    format: int64
-                    type: integer
-                  burst:
-                    description: Burst is the maximum number of requests allowed to
-                      arrive in the same arbitrarily small period of time. It defaults
-                      to 1.
-                    format: int64
-                    type: integer
-                  period:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: 'Period, in combination with Average, defines the
-                      actual maximum rate, such as: r = Average / Period. It defaults
-                      to a second.'
-                    x-kubernetes-int-or-string: true
-                  sourceCriterion:
-                    description: SourceCriterion defines what criterion is used to
-                      group requests as originating from a common source. If several
-                      strategies are defined at the same time, an error will be raised.
-                      If none are set, the default is to use the request's remote
-                      address field (as an ipStrategy).
-                    properties:
-                      ipStrategy:
-                        description: 'IPStrategy holds the IP strategy configuration
-                          used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ipallowlist/#ipstrategy'
-                        properties:
-                          depth:
-                            description: Depth tells Traefik to use the X-Forwarded-For
-                              header and take the IP located at the depth position
-                              (starting from the right).
-                            type: integer
-                          excludedIPs:
-                            description: ExcludedIPs configures Traefik to scan the
-                              X-Forwarded-For header and select the first IP not in
-                              the list.
-                            items:
-                              type: string
-                            type: array
-                        type: object
-                      requestHeaderName:
-                        description: RequestHeaderName defines the name of the header
-                          used to group incoming requests.
-                        type: string
-                      requestHost:
-                        description: RequestHost defines whether to consider the request
-                          Host as the source.
-                        type: boolean
-                    type: object
-                type: object
-              redirectRegex:
-                description: 'RedirectRegex holds the redirect regex middleware configuration.
-                  This middleware redirects a request using regex matching and replacement.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectregex/#regex'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  regex:
-                    description: Regex defines the regex used to match and capture
-                      elements from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines how to modify the URL to have
-                      the new target URL.
-                    type: string
-                type: object
-              redirectScheme:
-                description: 'RedirectScheme holds the redirect scheme middleware
-                  configuration. This middleware redirects requests from a scheme/port
-                  to another. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/redirectscheme/'
-                properties:
-                  permanent:
-                    description: Permanent defines whether the redirection is permanent
-                      (301).
-                    type: boolean
-                  port:
-                    description: Port defines the port of the new URL.
-                    type: string
-                  scheme:
-                    description: Scheme defines the scheme of the new URL.
-                    type: string
-                type: object
-              replacePath:
-                description: 'ReplacePath holds the replace path middleware configuration.
-                  This middleware replaces the path of the request URL and store the
-                  original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepath/'
-                properties:
-                  path:
-                    description: Path defines the path to use as replacement in the
-                      request URL.
-                    type: string
-                type: object
-              replacePathRegex:
-                description: 'ReplacePathRegex holds the replace path regex middleware
-                  configuration. This middleware replaces the path of a URL using
-                  regex matching and replacement. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/replacepathregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression used to match
-                      and capture the path from the request URL.
-                    type: string
-                  replacement:
-                    description: Replacement defines the replacement path format,
-                      which can include captured variables.
-                    type: string
-                type: object
-              retry:
-                description: 'Retry holds the retry middleware configuration. This
-                  middleware reissues requests a given number of times to a backend
-                  server if that server does not reply. As soon as the server answers,
-                  the middleware stops retrying, regardless of the response status.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/retry/'
-                properties:
-                  attempts:
-                    description: Attempts defines how many times the request should
-                      be retried.
-                    type: integer
-                  initialInterval:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: InitialInterval defines the first wait time in the
-                      exponential backoff series. The maximum interval is calculated
-                      as twice the initialInterval. If unspecified, requests will
-                      be retried immediately. The value of initialInterval should
-                      be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.
-                    x-kubernetes-int-or-string: true
-                type: object
-              stripPrefix:
-                description: 'StripPrefix holds the strip prefix middleware configuration.
-                  This middleware removes the specified prefixes from the URL path.
-                  More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefix/'
-                properties:
-                  prefixes:
-                    description: Prefixes defines the prefixes to strip from the request
-                      URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              stripPrefixRegex:
-                description: 'StripPrefixRegex holds the strip prefix regex middleware
-                  configuration. This middleware removes the matching prefixes from
-                  the URL path. More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/stripprefixregex/'
-                properties:
-                  regex:
-                    description: Regex defines the regular expression to match the
-                      path prefix from the request URL.
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: middlewaretcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: MiddlewareTCP
-    listKind: MiddlewareTCPList
-    plural: middlewaretcps
-    singular: middlewaretcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
-          More info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/'
-        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: MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
-            properties:
-              inFlightConn:
-                description: InFlightConn defines the InFlightConn middleware configuration.
-                properties:
-                  amount:
-                    description: Amount defines the maximum amount of allowed simultaneous
-                      connections. The middleware closes the connection if there are
-                      already amount connections opened.
-                    format: int64
-                    type: integer
-                type: object
-              ipAllowList:
-                description: IPAllowList defines the IPAllowList middleware configuration.
-                properties:
-                  sourceRange:
-                    description: SourceRange defines the allowed IPs (or ranges of
-                      allowed IPs by using CIDR notation).
-                    items:
-                      type: string
-                    type: array
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransports.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransport
-    listKind: ServersTransportList
-    plural: serverstransports
-    singular: serverstransport
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransport is the CRD implementation of a ServersTransport.
-          If no serversTransport is specified, the default@internal will be used.
-          The default@internal serversTransport is created from the static configuration.
-          More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1'
-        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: ServersTransportSpec defines the desired state of a ServersTransport.
-            properties:
-              certificatesSecrets:
-                description: CertificatesSecrets defines a list of secret storing
-                  client certificates for mTLS.
-                items:
-                  type: string
-                type: array
-              disableHTTP2:
-                description: DisableHTTP2 disables HTTP/2 for connections with backend
-                  servers.
-                type: boolean
-              forwardingTimeouts:
-                description: ForwardingTimeouts defines the timeouts for requests
-                  forwarded to the backend servers.
-                properties:
-                  dialTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: DialTimeout is the amount of time to wait until a
-                      connection to a backend server can be established.
-                    x-kubernetes-int-or-string: true
-                  idleConnTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: IdleConnTimeout is the maximum period for which an
-                      idle HTTP keep-alive connection will remain open before closing
-                      itself.
-                    x-kubernetes-int-or-string: true
-                  pingTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: PingTimeout is the timeout after which the HTTP/2
-                      connection will be closed if a response to ping is not received.
-                    x-kubernetes-int-or-string: true
-                  readIdleTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ReadIdleTimeout is the timeout after which a health
-                      check using ping frame will be carried out if no frame is received
-                      on the HTTP/2 connection.
-                    x-kubernetes-int-or-string: true
-                  responseHeaderTimeout:
-                    anyOf:
-                    - type: integer
-                    - type: string
-                    description: ResponseHeaderTimeout is the amount of time to wait
-                      for a server's response headers after fully writing the request
-                      (including its body, if any).
-                    x-kubernetes-int-or-string: true
-                type: object
-              insecureSkipVerify:
-                description: InsecureSkipVerify disables SSL certificate verification.
-                type: boolean
-              maxIdleConnsPerHost:
-                description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                  to keep per-host.
-                type: integer
-              peerCertURI:
-                description: PeerCertURI defines the peer cert URI used to match against
-                  SAN URI during the peer certificate verification.
-                type: string
-              rootCAsSecrets:
-                description: RootCAsSecrets defines a list of CA secret used to validate
-                  self-signed certificate.
-                items:
-                  type: string
-                type: array
-              serverName:
-                description: ServerName defines the server name used to contact the
-                  server.
-                type: string
-              spiffe:
-                description: Spiffe defines the SPIFFE configuration.
-                properties:
-                  ids:
-                    description: IDs defines the allowed SPIFFE IDs (takes precedence
-                      over the SPIFFE TrustDomain).
-                    items:
-                      type: string
-                    type: array
-                  trustDomain:
-                    description: TrustDomain defines the allowed SPIFFE trust domain.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: serverstransporttcps.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: ServersTransportTCP
-    listKind: ServersTransportTCPList
-    plural: serverstransporttcps
-    singular: serverstransporttcp
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'ServersTransportTCP is the CRD implementation of a TCPServersTransport.
-          If no tcpServersTransport is specified, a default one named default@internal
-          will be used. The default@internal tcpServersTransport can be configured
-          in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3'
-        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: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.
-            properties:
-              dialKeepAlive:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialKeepAlive is the interval between keep-alive probes
-                  for an active network connection. If zero, keep-alive probes are
-                  sent with a default value (currently 15 seconds), if supported by
-                  the protocol and operating system. Network protocols or operating
-                  systems that do not support keep-alives ignore this field. If negative,
-                  keep-alive probes are disabled.
-                x-kubernetes-int-or-string: true
-              dialTimeout:
-                anyOf:
-                - type: integer
-                - type: string
-                description: DialTimeout is the amount of time to wait until a connection
-                  to a backend server can be established.
-                x-kubernetes-int-or-string: true
-              terminationDelay:
-                anyOf:
-                - type: integer
-                - type: string
-                description: TerminationDelay defines the delay to wait before fully
-                  terminating the connection, after one connected peer has closed
-                  its writing capability.
-                x-kubernetes-int-or-string: true
-              tls:
-                description: TLS defines the TLS configuration
-                properties:
-                  certificatesSecrets:
-                    description: CertificatesSecrets defines a list of secret storing
-                      client certificates for mTLS.
-                    items:
-                      type: string
-                    type: array
-                  insecureSkipVerify:
-                    description: InsecureSkipVerify disables TLS certificate verification.
-                    type: boolean
-                  peerCertURI:
-                    description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
-                      to keep per-host. PeerCertURI defines the peer cert URI used
-                      to match against SAN URI during the peer certificate verification.
-                    type: string
-                  rootCAsSecrets:
-                    description: RootCAsSecrets defines a list of CA secret used to
-                      validate self-signed certificates.
-                    items:
-                      type: string
-                    type: array
-                  serverName:
-                    description: ServerName defines the server name used to contact
-                      the server.
-                    type: string
-                  spiffe:
-                    description: Spiffe defines the SPIFFE configuration.
-                    properties:
-                      ids:
-                        description: IDs defines the allowed SPIFFE IDs (takes precedence
-                          over the SPIFFE TrustDomain).
-                        items:
-                          type: string
-                        type: array
-                      trustDomain:
-                        description: TrustDomain defines the allowed SPIFFE trust
-                          domain.
-                        type: string
-                    type: object
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsoptions.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSOption
-    listKind: TLSOptionList
-    plural: tlsoptions
-    singular: tlsoption
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSOption is the CRD implementation of a Traefik TLS Option,
-          allowing to configure some parameters of the TLS connection. More info:
-          https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options'
-        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: TLSOptionSpec defines the desired state of a TLSOption.
-            properties:
-              alpnProtocols:
-                description: 'ALPNProtocols defines the list of supported application
-                  level protocols for the TLS handshake, in order of preference. More
-                  info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols'
-                items:
-                  type: string
-                type: array
-              cipherSuites:
-                description: 'CipherSuites defines the list of supported cipher suites
-                  for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#cipher-suites'
-                items:
-                  type: string
-                type: array
-              clientAuth:
-                description: ClientAuth defines the server's policy for TLS Client
-                  Authentication.
-                properties:
-                  clientAuthType:
-                    description: ClientAuthType defines the client authentication
-                      type to apply.
-                    enum:
-                    - NoClientCert
-                    - RequestClientCert
-                    - RequireAnyClientCert
-                    - VerifyClientCertIfGiven
-                    - RequireAndVerifyClientCert
-                    type: string
-                  secretNames:
-                    description: SecretNames defines the names of the referenced Kubernetes
-                      Secret storing certificate details.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              curvePreferences:
-                description: 'CurvePreferences defines the preferred elliptic curves
-                  in a specific order. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#curve-preferences'
-                items:
-                  type: string
-                type: array
-              maxVersion:
-                description: 'MaxVersion defines the maximum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: None.'
-                type: string
-              minVersion:
-                description: 'MinVersion defines the minimum TLS version that Traefik
-                  will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12,
-                  VersionTLS13. Default: VersionTLS10.'
-                type: string
-              sniStrict:
-                description: SniStrict defines whether Traefik allows connections
-                  from clients connections that do not specify a server_name extension.
-                type: boolean
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  name: tlsstores.traefik.containo.us
-spec:
-  group: traefik.containo.us
-  names:
-    kind: TLSStore
-    listKind: TLSStoreList
-    plural: tlsstores
-    singular: tlsstore
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'TLSStore is the CRD implementation of a Traefik TLS Store. For
-          the time being, only the TLSStore named default is supported. This means
-          that you cannot have two stores that are named default in different Kubernetes
-          namespaces. More info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores'
-        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: TLSStoreSpec defines the desired state of a TLSStore.
-            properties:
-              certificates:
-                description: Certificates is a list of secret names, each secret holding
-                  a key/certificate pair to add to the store.
-                items:
-                  description: Certificate holds a secret name for the TLSStore resource.
-                  properties:
-                    secretName:
-                      description: SecretName is the name of the referenced Kubernetes
-                        Secret to specify the certificate details.
-                      type: string
-                  required:
-                  - secretName
-                  type: object
-                type: array
-              defaultCertificate:
-                description: DefaultCertificate defines the default certificate configuration.
-                properties:
-                  secretName:
-                    description: SecretName is the name of the referenced Kubernetes
-                      Secret to specify the certificate details.
-                    type: string
-                required:
-                - secretName
-                type: object
-              defaultGeneratedCert:
-                description: DefaultGeneratedCert defines the default generated certificate
-                  configuration.
-                properties:
-                  domain:
-                    description: Domain is the domain definition for the DefaultCertificate.
-                    properties:
-                      main:
-                        description: Main defines the main domain name.
-                        type: string
-                      sans:
-                        description: SANs defines the subject alternative domain names.
-                        items:
-                          type: string
-                        type: array
-                    type: object
-                  resolver:
-                    description: Resolver is the name of the resolver that will be
-                      used to issue the DefaultCertificate.
-                    type: string
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
-
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.6.2
-  creationTimestamp: null
-  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/v3.0/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/v3.0/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/v3.0/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/v3.0/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/v3.0/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
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/integration/fixtures/k8s/03-ingressroute-containous.yml b/integration/fixtures/k8s/03-ingressroute-containous.yml
deleted file mode 100644
index 462cf92e7abd819466697dfaf08bcd5813ea2ba5..0000000000000000000000000000000000000000
--- a/integration/fixtures/k8s/03-ingressroute-containous.yml
+++ /dev/null
@@ -1,93 +0,0 @@
-# This IngressRoute is expected to be ignored, because it already declared in API GroupVersion "traefik.io/v1alpha1".
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
-  name: test.route
-  namespace: default
-  labels:
-    app: traefik
-
-spec:
-  entryPoints:
-    - web
-
-  routes:
-    - match: Host(`collision`)
-      kind: Rule
-      priority: 12
-      services:
-        - name: whoami
-          port: 80
-
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
-  name: test.route.containous
-  namespace: default
-  labels:
-    app: traefik
-
-spec:
-  entryPoints:
-    - web
-
-  routes:
-  - match: Host(`bar.com`) && PathPrefix(`/foo`)
-    kind: Rule
-    priority: 12
-    middlewares:
-      - name: stripprefix-containous
-    services:
-    - name: whoami
-      port: 80
-
-  tls:
-    options:
-      name: mytlsoption-containous
-    store:
-      name: mytlsstore-containous
-
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
-  name: stripprefix-containous
-  namespace: default
-  labels:
-    app: traefik
-
-spec:
-  stripPrefix:
-    prefixes:
-      - /tobestripped
-
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: TLSOption
-metadata:
-  name: mytlsoption-containous
-  namespace: default
-  labels:
-    app: traefik
-
-spec:
-  minVersion: VersionTLS12
-  sniStrict: true
-  cipherSuites:
-    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
-    - TLS_RSA_WITH_AES_256_GCM_SHA384
-
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: TLSStore
-metadata:
-  name: mytlsstore-containous
-  namespace: default
-  labels:
-    app: traefik
-
-spec:
-  defaultCertificate:
-    secretName: tls-cert
diff --git a/integration/fixtures/k8s/05-ingressroutetcp-containous.yml b/integration/fixtures/k8s/05-ingressroutetcp-containous.yml
deleted file mode 100644
index bb48868c825079d85eed23d44287eedf3add783e..0000000000000000000000000000000000000000
--- a/integration/fixtures/k8s/05-ingressroutetcp-containous.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRouteTCP
-metadata:
-  name: test3.route-containous
-  namespace: default
-
-spec:
-  entryPoints:
-    - footcp
-  routes:
-  - match: HostSNI(`*`)
-    services:
-    - name: whoamitcp
-      namespace: default
-      port: 8080
-    - name: externalname-svc
-      port: 9090
-  tls:
-    options:
-      name: mytlsoption-containous
-    store:
-      name: mytlsstore-containous
diff --git a/integration/fixtures/k8s/05-ingressrouteudp-containous.yml b/integration/fixtures/k8s/05-ingressrouteudp-containous.yml
deleted file mode 100644
index 12c0897bde1c28a4535b8b1310a9654a6c1327ce..0000000000000000000000000000000000000000
--- a/integration/fixtures/k8s/05-ingressrouteudp-containous.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRouteUDP
-metadata:
-  name: test3.route-containous
-  namespace: default
-
-spec:
-  entryPoints:
-    - fooudp
-  routes:
-  - services:
-    - name: whoamiudp
-      namespace: default
-      port: 8090
-    - name: externalname-svc
-      port: 9090
diff --git a/integration/testdata/rawdata-crd-label-selector.json b/integration/testdata/rawdata-crd-label-selector.json
index 42219ba2b987ceb9ab92cbf55e0b34069eebe11a..b5c9f1669a8713149f0fdc3f296b7bbc1b4b8f9d 100644
--- a/integration/testdata/rawdata-crd-label-selector.json
+++ b/integration/testdata/rawdata-crd-label-selector.json
@@ -26,37 +26,6 @@
 			"using": [
 				"web"
 			]
-		},
-		"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd": {
-			"entryPoints": [
-				"web"
-			],
-			"middlewares": [
-				"default-stripprefix-containous@kubernetescrd"
-			],
-			"service": "default-test-route-containous-1bc3efa892379bb93c6e",
-			"rule": "Host(`bar.com`) \u0026\u0026 PathPrefix(`/foo`)",
-			"priority": 12,
-			"tls": {
-				"options": "default-mytlsoption-containous"
-			},
-			"status": "enabled",
-			"using": [
-				"web"
-			]
-		}
-	},
-	"middlewares": {
-		"default-stripprefix-containous@kubernetescrd": {
-			"stripPrefix": {
-				"prefixes": [
-					"/tobestripped"
-				]
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd"
-			]
 		}
 	},
 	"services": {
@@ -76,7 +45,7 @@
 						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.7:80"
+						"url": "http://10.42.0.6:80"
 					}
 				],
 				"passHostHeader": true,
@@ -90,35 +59,11 @@
 			],
 			"serverStatus": {
 				"http://10.42.0.3:80": "UP",
-				"http://10.42.0.7:80": "UP"
-			}
-		},
-		"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"url": "http://10.42.0.3:80"
-					},
-					{
-						"url": "http://10.42.0.7:80"
-					}
-				],
-				"passHostHeader": true,
-				"responseForwarding": {
-					"flushInterval": "100ms"
-				}
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd"
-			],
-			"serverStatus": {
-				"http://10.42.0.3:80": "UP",
-				"http://10.42.0.7:80": "UP"
+				"http://10.42.0.6:80": "UP"
 			}
 		},
 		"noop@internal": {
 			"status": "enabled"
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/integration/testdata/rawdata-crd.json b/integration/testdata/rawdata-crd.json
index 8bb2a967bbe846493ef0867bcbb72f0e01a5f213..81f397196943c4a3319e6225fa075990e42545f9 100644
--- a/integration/testdata/rawdata-crd.json
+++ b/integration/testdata/rawdata-crd.json
@@ -27,24 +27,6 @@
 				"web"
 			]
 		},
-		"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd": {
-			"entryPoints": [
-				"web"
-			],
-			"middlewares": [
-				"default-stripprefix-containous@kubernetescrd"
-			],
-			"service": "default-test-route-containous-1bc3efa892379bb93c6e",
-			"rule": "Host(`bar.com`) \u0026\u0026 PathPrefix(`/foo`)",
-			"priority": 12,
-			"tls": {
-				"options": "default-mytlsoption-containous"
-			},
-			"status": "enabled",
-			"using": [
-				"web"
-			]
-		},
 		"default-test2-route-23c7f4c450289ee29016@kubernetescrd": {
 			"entryPoints": [
 				"web"
@@ -112,17 +94,6 @@
 				"default-test2-route-23c7f4c450289ee29016@kubernetescrd"
 			]
 		},
-		"default-stripprefix-containous@kubernetescrd": {
-			"stripPrefix": {
-				"prefixes": [
-					"/tobestripped"
-				]
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd"
-			]
-		},
 		"default-stripprefix2@kubernetescrd": {
 			"stripPrefix": {
 				"prefixes": [
@@ -165,10 +136,10 @@
 			"loadBalancer": {
 				"servers": [
 					{
-						"url": "http://10.42.0.4:80"
+						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.6:80"
+						"url": "http://10.42.0.7:80"
 					}
 				],
 				"passHostHeader": true,
@@ -181,42 +152,18 @@
 				"default-test-route-6b204d94623b3df4370c@kubernetescrd"
 			],
 			"serverStatus": {
-				"http://10.42.0.4:80": "UP",
-				"http://10.42.0.6:80": "UP"
-			}
-		},
-		"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"url": "http://10.42.0.4:80"
-					},
-					{
-						"url": "http://10.42.0.6:80"
-					}
-				],
-				"passHostHeader": true,
-				"responseForwarding": {
-					"flushInterval": "100ms"
-				}
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test-route-containous-1bc3efa892379bb93c6e@kubernetescrd"
-			],
-			"serverStatus": {
-				"http://10.42.0.4:80": "UP",
-				"http://10.42.0.6:80": "UP"
+				"http://10.42.0.3:80": "UP",
+				"http://10.42.0.7:80": "UP"
 			}
 		},
 		"default-test2-route-23c7f4c450289ee29016@kubernetescrd": {
 			"loadBalancer": {
 				"servers": [
 					{
-						"url": "http://10.42.0.4:80"
+						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.6:80"
+						"url": "http://10.42.0.7:80"
 					}
 				],
 				"passHostHeader": true,
@@ -229,18 +176,18 @@
 				"default-test2-route-23c7f4c450289ee29016@kubernetescrd"
 			],
 			"serverStatus": {
-				"http://10.42.0.4:80": "UP",
-				"http://10.42.0.6:80": "UP"
+				"http://10.42.0.3:80": "UP",
+				"http://10.42.0.7:80": "UP"
 			}
 		},
 		"default-testst-route-60ad45fcb5fc1f5f3629@kubernetescrd": {
 			"loadBalancer": {
 				"servers": [
 					{
-						"url": "http://10.42.0.4:80"
+						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.6:80"
+						"url": "http://10.42.0.7:80"
 					}
 				],
 				"passHostHeader": true,
@@ -254,18 +201,18 @@
 				"default-testst-route-60ad45fcb5fc1f5f3629@kubernetescrd"
 			],
 			"serverStatus": {
-				"http://10.42.0.4:80": "UP",
-				"http://10.42.0.6:80": "UP"
+				"http://10.42.0.3:80": "UP",
+				"http://10.42.0.7:80": "UP"
 			}
 		},
 		"default-whoami-80@kubernetescrd": {
 			"loadBalancer": {
 				"servers": [
 					{
-						"url": "http://10.42.0.4:80"
+						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.6:80"
+						"url": "http://10.42.0.7:80"
 					}
 				],
 				"passHostHeader": true,
@@ -275,8 +222,8 @@
 			},
 			"status": "enabled",
 			"serverStatus": {
-				"http://10.42.0.4:80": "UP",
-				"http://10.42.0.6:80": "UP"
+				"http://10.42.0.3:80": "UP",
+				"http://10.42.0.7:80": "UP"
 			}
 		},
 		"default-wrr1@kubernetescrd": {
@@ -328,22 +275,6 @@
 			"using": [
 				"footcp"
 			]
-		},
-		"default-test3.route-containous-673acf455cb2dab0b43a@kubernetescrd": {
-			"entryPoints": [
-				"footcp"
-			],
-			"service": "default-test3.route-containous-673acf455cb2dab0b43a",
-			"rule": "HostSNI(`*`)",
-			"priority": -1,
-			"tls": {
-				"passthrough": false,
-				"options": "default-mytlsoption-containous"
-			},
-			"status": "enabled",
-			"using": [
-				"footcp"
-			]
 		}
 	},
 	"tcpServices": {
@@ -364,7 +295,7 @@
 						"address": "10.42.0.2:8080"
 					},
 					{
-						"address": "10.42.0.3:8080"
+						"address": "10.42.0.4:8080"
 					}
 				]
 			},
@@ -387,47 +318,6 @@
 			"usedBy": [
 				"default-test3.route-673acf455cb2dab0b43a@kubernetescrd"
 			]
-		},
-		"default-test3.route-containous-673acf455cb2dab0b43a-externalname-svc-9090@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"address": "domain.com:9090"
-					}
-				]
-			},
-			"status": "enabled"
-		},
-		"default-test3.route-containous-673acf455cb2dab0b43a-whoamitcp-8080@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"address": "10.42.0.2:8080"
-					},
-					{
-						"address": "10.42.0.3:8080"
-					}
-				]
-			},
-			"status": "enabled"
-		},
-		"default-test3.route-containous-673acf455cb2dab0b43a@kubernetescrd": {
-			"weighted": {
-				"services": [
-					{
-						"name": "default-test3.route-containous-673acf455cb2dab0b43a-whoamitcp-8080",
-						"weight": 1
-					},
-					{
-						"name": "default-test3.route-containous-673acf455cb2dab0b43a-externalname-svc-9090",
-						"weight": 1
-					}
-				]
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test3.route-containous-673acf455cb2dab0b43a@kubernetescrd"
-			]
 		}
 	},
 	"udpRouters": {
@@ -440,16 +330,6 @@
 			"using": [
 				"fooudp"
 			]
-		},
-		"default-test3.route-containous-0@kubernetescrd": {
-			"entryPoints": [
-				"fooudp"
-			],
-			"service": "default-test3.route-containous-0",
-			"status": "enabled",
-			"using": [
-				"fooudp"
-			]
 		}
 	},
 	"udpServices": {
@@ -470,7 +350,7 @@
 						"address": "10.42.0.5:8090"
 					},
 					{
-						"address": "10.42.0.7:8090"
+						"address": "10.42.0.6:8090"
 					}
 				]
 			},
@@ -493,47 +373,6 @@
 			"usedBy": [
 				"default-test3.route-0@kubernetescrd"
 			]
-		},
-		"default-test3.route-containous-0-externalname-svc-9090@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"address": "domain.com:9090"
-					}
-				]
-			},
-			"status": "enabled"
-		},
-		"default-test3.route-containous-0-whoamiudp-8090@kubernetescrd": {
-			"loadBalancer": {
-				"servers": [
-					{
-						"address": "10.42.0.5:8090"
-					},
-					{
-						"address": "10.42.0.7:8090"
-					}
-				]
-			},
-			"status": "enabled"
-		},
-		"default-test3.route-containous-0@kubernetescrd": {
-			"weighted": {
-				"services": [
-					{
-						"name": "default-test3.route-containous-0-whoamiudp-8090",
-						"weight": 1
-					},
-					{
-						"name": "default-test3.route-containous-0-externalname-svc-9090",
-						"weight": 1
-					}
-				]
-			},
-			"status": "enabled",
-			"usedBy": [
-				"default-test3.route-containous-0@kubernetescrd"
-			]
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/integration/testdata/rawdata-gateway.json b/integration/testdata/rawdata-gateway.json
index 9c695ef061771e48e486aa8e78b94de4f13fea14..d629cfc41b12108c9826d1f9dbe34fb8c3c33f72 100644
--- a/integration/testdata/rawdata-gateway.json
+++ b/integration/testdata/rawdata-gateway.json
@@ -124,10 +124,10 @@
 			"loadBalancer": {
 				"servers": [
 					{
-						"url": "http://10.42.0.6:80"
+						"url": "http://10.42.0.3:80"
 					},
 					{
-						"url": "http://10.42.0.7:80"
+						"url": "http://10.42.0.4:80"
 					}
 				],
 				"passHostHeader": true,
@@ -137,8 +137,8 @@
 			},
 			"status": "enabled",
 			"serverStatus": {
-				"http://10.42.0.6:80": "UP",
-				"http://10.42.0.7:80": "UP"
+				"http://10.42.0.3:80": "UP",
+				"http://10.42.0.4:80": "UP"
 			}
 		},
 		"noop@internal": {
@@ -239,7 +239,7 @@
 						"address": "10.42.0.2:8080"
 					},
 					{
-						"address": "10.42.0.4:8080"
+						"address": "10.42.0.6:8080"
 					}
 				]
 			},
diff --git a/pkg/config/static/experimental.go b/pkg/config/static/experimental.go
index e549b64b1bbb3437c240544acb17e7fef9a02ff9..7428f6a089461e519dc76bf5dd97d0f03da496f3 100644
--- a/pkg/config/static/experimental.go
+++ b/pkg/config/static/experimental.go
@@ -8,6 +8,4 @@ type Experimental struct {
 	LocalPlugins map[string]plugins.LocalDescriptor `description:"Local plugins configuration." json:"localPlugins,omitempty" toml:"localPlugins,omitempty" yaml:"localPlugins,omitempty" export:"true"`
 
 	KubernetesGateway bool `description:"Allow the Kubernetes gateway api provider usage." json:"kubernetesGateway,omitempty" toml:"kubernetesGateway,omitempty" yaml:"kubernetesGateway,omitempty" export:"true"`
-	// Deprecated.
-	Hub bool `description:"Enable the Traefik Hub provider." json:"hub,omitempty" toml:"hub,omitempty" yaml:"hub,omitempty" export:"true"`
 }
diff --git a/pkg/config/static/hub.go b/pkg/config/static/hub.go
index 8165a425852e16641bbe607a77a01e5c8f102333..2a87b342ab16dad02b61bbd1b34da29435b7bb8a 100644
--- a/pkg/config/static/hub.go
+++ b/pkg/config/static/hub.go
@@ -9,10 +9,6 @@ import (
 )
 
 func (c *Configuration) initHubProvider() error {
-	if c.Experimental != nil && c.Experimental.Hub {
-		log.Warn().Msg("Experimental flag for Traefik Hub is deprecated, because Traefik Hub is now GA.")
-	}
-
 	if _, ok := c.EntryPoints[hub.TunnelEntrypoint]; !ok {
 		var ep EntryPoint
 		ep.SetDefaults()
diff --git a/pkg/provider/kubernetes/crd/client-containous.go b/pkg/provider/kubernetes/crd/client-containous.go
deleted file mode 100644
index aea8d07cc02fa36ab2406d3808b46b89e1178928..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/client-containous.go
+++ /dev/null
@@ -1,369 +0,0 @@
-package crd
-
-import (
-	"fmt"
-
-	"github.com/rs/zerolog/log"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/k8s"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/labels"
-)
-
-func (c *clientWrapper) appendContainousIngressRoutes(result []*v1alpha1.IngressRoute) []*v1alpha1.IngressRoute {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		ings, err := factory.TraefikContainous().V1alpha1().IngressRoutes().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list ingress routes")
-		}
-
-		for _, ing := range ings {
-			key := objectKey(ing.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 ingress route (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(ing, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert ingress route in namespace")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.IngressRoute))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousIngressRouteTCPs(result []*v1alpha1.IngressRouteTCP) []*v1alpha1.IngressRouteTCP {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		ings, err := factory.TraefikContainous().V1alpha1().IngressRouteTCPs().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list tcp ingress routes")
-		}
-
-		for _, ing := range ings {
-			key := objectKey(ing.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 tcp ingress route (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(ing, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert tcp ingress route")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.IngressRouteTCP))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousIngressRouteUDPs(result []*v1alpha1.IngressRouteUDP) []*v1alpha1.IngressRouteUDP {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		ings, err := factory.TraefikContainous().V1alpha1().IngressRouteUDPs().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list udp ingress routes")
-		}
-
-		for _, ing := range ings {
-			key := objectKey(ing.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 udp ingress route (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(ing, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert udp ingress route")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.IngressRouteUDP))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousMiddlewares(result []*v1alpha1.Middleware) []*v1alpha1.Middleware {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		middlewares, err := factory.TraefikContainous().V1alpha1().Middlewares().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list middlewares")
-		}
-
-		for _, middleware := range middlewares {
-			key := objectKey(middleware.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 middleware (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(middleware, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert middleware")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.Middleware))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousMiddlewareTCPs(result []*v1alpha1.MiddlewareTCP) []*v1alpha1.MiddlewareTCP {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		middlewares, err := factory.TraefikContainous().V1alpha1().MiddlewareTCPs().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list tcp middlewares")
-		}
-
-		for _, middleware := range middlewares {
-			key := objectKey(middleware.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 middleware (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(middleware, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert tcp middleware")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.MiddlewareTCP))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousTraefikServices(result []*v1alpha1.TraefikService) []*v1alpha1.TraefikService {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		traefikServices, err := factory.TraefikContainous().V1alpha1().TraefikServices().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list Traefik services")
-		}
-
-		for _, traefikService := range traefikServices {
-			key := objectKey(traefikService.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 Traefik service (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(traefikService, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert Traefik service")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.TraefikService))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousServersTransport(result []*v1alpha1.ServersTransport) []*v1alpha1.ServersTransport {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		serversTransports, err := factory.TraefikContainous().V1alpha1().ServersTransports().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list servers transports")
-		}
-
-		for _, serversTransport := range serversTransports {
-			key := objectKey(serversTransport.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 servers transport (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(serversTransport, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert servers transport")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.ServersTransport))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousServersTransportTCP(result []*v1alpha1.ServersTransportTCP) []*v1alpha1.ServersTransportTCP {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		serversTransports, err := factory.TraefikContainous().V1alpha1().ServersTransportTCPs().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list servers transports TCP")
-		}
-
-		for _, serversTransport := range serversTransports {
-			key := objectKey(serversTransport.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 servers transport TCP (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(serversTransport, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert servers transport TCP")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.ServersTransportTCP))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousTLSOptions(result []*v1alpha1.TLSOption) []*v1alpha1.TLSOption {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		options, err := factory.TraefikContainous().V1alpha1().TLSOptions().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list tls options")
-		}
-
-		for _, option := range options {
-			key := objectKey(option.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 tls option (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(option, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert tls option")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.TLSOption))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) appendContainousTLSStores(result []*v1alpha1.TLSStore) []*v1alpha1.TLSStore {
-	listed := map[string]struct{}{}
-	for _, obj := range result {
-		listed[objectKey(obj.ObjectMeta)] = struct{}{}
-	}
-
-	for ns, factory := range c.factoriesCrd {
-		stores, err := factory.TraefikContainous().V1alpha1().TLSStores().Lister().List(labels.Everything())
-		if err != nil {
-			log.Error().Err(err).Str("namespace", ns).Msg("Failed to list tls stores")
-		}
-
-		for _, store := range stores {
-			key := objectKey(store.ObjectMeta)
-			if _, ok := listed[key]; ok {
-				log.Debug().Msgf("Ignoring traefik.containo.us/v1alpha1 tls store (%s) already listed within traefik.io/v1alpha1 API GroupVersion", key)
-				continue
-			}
-
-			toVersion, err := scheme.Scheme.ConvertToVersion(store, GroupVersioner)
-			if err != nil {
-				log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert tls store")
-				continue
-			}
-
-			result = append(result, toVersion.(*v1alpha1.TLSStore))
-		}
-	}
-
-	return result
-}
-
-func (c *clientWrapper) getContainousTraefikService(ns, name string) (*v1alpha1.TraefikService, bool, error) {
-	if !c.isWatchedNamespace(ns) {
-		return nil, false, fmt.Errorf("failed to get service %s/%s: namespace is not within watched namespaces", ns, name)
-	}
-
-	service, err := c.factoriesCrd[c.lookupNamespace(ns)].TraefikContainous().V1alpha1().TraefikServices().Lister().TraefikServices(ns).Get(name)
-	exist, err := translateNotFoundError(err)
-
-	if !exist {
-		return nil, false, err
-	}
-
-	toVersion, err := scheme.Scheme.ConvertToVersion(service, GroupVersioner)
-	if err != nil {
-		log.Error().Err(err).Str("namespace", ns).Msg("Failed to convert Traefik service")
-	}
-
-	return toVersion.(*v1alpha1.TraefikService), exist, err
-}
-
-func addContainousInformers(factoryCrd externalversions.SharedInformerFactory, eventHandler *k8s.ResourceEventHandler) {
-	factoryCrd.TraefikContainous().V1alpha1().IngressRoutes().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().Middlewares().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().MiddlewareTCPs().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().IngressRouteTCPs().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().IngressRouteUDPs().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().TLSOptions().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().ServersTransports().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().TLSStores().Informer().AddEventHandler(eventHandler)
-	factoryCrd.TraefikContainous().V1alpha1().TraefikServices().Informer().AddEventHandler(eventHandler)
-}
-
-func objectKey(meta metav1.ObjectMeta) string {
-	return fmt.Sprintf("%s/%s", meta.Namespace, meta.Name)
-}
diff --git a/pkg/provider/kubernetes/crd/client.go b/pkg/provider/kubernetes/crd/client.go
index 9aa561d38c6eae4538392d8d4f69fc4eb2fda070..44e0cb29c854855ed26fea73caf9dbe708bacab1 100644
--- a/pkg/provider/kubernetes/crd/client.go
+++ b/pkg/provider/kubernetes/crd/client.go
@@ -175,8 +175,6 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
 		factoryCrd.Traefik().V1alpha1().TLSStores().Informer().AddEventHandler(eventHandler)
 		factoryCrd.Traefik().V1alpha1().TraefikServices().Informer().AddEventHandler(eventHandler)
 
-		addContainousInformers(factoryCrd, eventHandler)
-
 		factoryKube := informers.NewSharedInformerFactoryWithOptions(c.csKube, resyncPeriod, informers.WithNamespace(ns))
 		factoryKube.Core().V1().Services().Informer().AddEventHandler(eventHandler)
 		factoryKube.Core().V1().Endpoints().Informer().AddEventHandler(eventHandler)
@@ -229,7 +227,7 @@ func (c *clientWrapper) GetIngressRoutes() []*v1alpha1.IngressRoute {
 		result = append(result, ings...)
 	}
 
-	return c.appendContainousIngressRoutes(result)
+	return result
 }
 
 func (c *clientWrapper) GetIngressRouteTCPs() []*v1alpha1.IngressRouteTCP {
@@ -243,7 +241,7 @@ func (c *clientWrapper) GetIngressRouteTCPs() []*v1alpha1.IngressRouteTCP {
 		result = append(result, ings...)
 	}
 
-	return c.appendContainousIngressRouteTCPs(result)
+	return result
 }
 
 func (c *clientWrapper) GetIngressRouteUDPs() []*v1alpha1.IngressRouteUDP {
@@ -257,7 +255,7 @@ func (c *clientWrapper) GetIngressRouteUDPs() []*v1alpha1.IngressRouteUDP {
 		result = append(result, ings...)
 	}
 
-	return c.appendContainousIngressRouteUDPs(result)
+	return result
 }
 
 func (c *clientWrapper) GetMiddlewares() []*v1alpha1.Middleware {
@@ -271,7 +269,7 @@ func (c *clientWrapper) GetMiddlewares() []*v1alpha1.Middleware {
 		result = append(result, middlewares...)
 	}
 
-	return c.appendContainousMiddlewares(result)
+	return result
 }
 
 func (c *clientWrapper) GetMiddlewareTCPs() []*v1alpha1.MiddlewareTCP {
@@ -285,7 +283,7 @@ func (c *clientWrapper) GetMiddlewareTCPs() []*v1alpha1.MiddlewareTCP {
 		result = append(result, middlewares...)
 	}
 
-	return c.appendContainousMiddlewareTCPs(result)
+	return result
 }
 
 // GetTraefikService returns the named service from the given namespace.
@@ -297,10 +295,6 @@ func (c *clientWrapper) GetTraefikService(namespace, name string) (*v1alpha1.Tra
 	service, err := c.factoriesCrd[c.lookupNamespace(namespace)].Traefik().V1alpha1().TraefikServices().Lister().TraefikServices(namespace).Get(name)
 	exist, err := translateNotFoundError(err)
 
-	if !exist {
-		return c.getContainousTraefikService(namespace, name)
-	}
-
 	return service, exist, err
 }
 
@@ -315,7 +309,7 @@ func (c *clientWrapper) GetTraefikServices() []*v1alpha1.TraefikService {
 		result = append(result, traefikServices...)
 	}
 
-	return c.appendContainousTraefikServices(result)
+	return result
 }
 
 // GetServersTransports returns all ServersTransport.
@@ -330,7 +324,7 @@ func (c *clientWrapper) GetServersTransports() []*v1alpha1.ServersTransport {
 		result = append(result, serversTransports...)
 	}
 
-	return c.appendContainousServersTransport(result)
+	return result
 }
 
 // GetServersTransportTCPs returns all ServersTransportTCP.
@@ -345,7 +339,7 @@ func (c *clientWrapper) GetServersTransportTCPs() []*v1alpha1.ServersTransportTC
 		result = append(result, serversTransports...)
 	}
 
-	return c.appendContainousServersTransportTCP(result)
+	return result
 }
 
 // GetTLSOptions returns all TLS options.
@@ -360,7 +354,7 @@ func (c *clientWrapper) GetTLSOptions() []*v1alpha1.TLSOption {
 		result = append(result, options...)
 	}
 
-	return c.appendContainousTLSOptions(result)
+	return result
 }
 
 // GetTLSStores returns all TLS stores.
@@ -375,7 +369,7 @@ func (c *clientWrapper) GetTLSStores() []*v1alpha1.TLSStore {
 		result = append(result, stores...)
 	}
 
-	return c.appendContainousTLSStores(result)
+	return result
 }
 
 // GetService returns the named service from the given namespace.
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/clientset.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/clientset.go
index 2909a988283914931f05329a69f1348d32788044..ec71200a70ee250b0875fc10e09e5dfe0289e5ca 100644
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/clientset.go
+++ b/pkg/provider/kubernetes/crd/generated/clientset/versioned/clientset.go
@@ -29,7 +29,6 @@ package versioned
 import (
 	"fmt"
 
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1"
 	traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikio/v1alpha1"
 	discovery "k8s.io/client-go/discovery"
 	rest "k8s.io/client-go/rest"
@@ -38,7 +37,6 @@ import (
 
 type Interface interface {
 	Discovery() discovery.DiscoveryInterface
-	TraefikContainousV1alpha1() traefikcontainousv1alpha1.TraefikContainousV1alpha1Interface
 	TraefikV1alpha1() traefikv1alpha1.TraefikV1alpha1Interface
 }
 
@@ -46,13 +44,7 @@ type Interface interface {
 // version included in a Clientset.
 type Clientset struct {
 	*discovery.DiscoveryClient
-	traefikContainousV1alpha1 *traefikcontainousv1alpha1.TraefikContainousV1alpha1Client
-	traefikV1alpha1           *traefikv1alpha1.TraefikV1alpha1Client
-}
-
-// TraefikContainousV1alpha1 retrieves the TraefikContainousV1alpha1Client
-func (c *Clientset) TraefikContainousV1alpha1() traefikcontainousv1alpha1.TraefikContainousV1alpha1Interface {
-	return c.traefikContainousV1alpha1
+	traefikV1alpha1 *traefikv1alpha1.TraefikV1alpha1Client
 }
 
 // TraefikV1alpha1 retrieves the TraefikV1alpha1Client
@@ -81,10 +73,6 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
 	}
 	var cs Clientset
 	var err error
-	cs.traefikContainousV1alpha1, err = traefikcontainousv1alpha1.NewForConfig(&configShallowCopy)
-	if err != nil {
-		return nil, err
-	}
 	cs.traefikV1alpha1, err = traefikv1alpha1.NewForConfig(&configShallowCopy)
 	if err != nil {
 		return nil, err
@@ -101,7 +89,6 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
 // panics if there is an error in the config.
 func NewForConfigOrDie(c *rest.Config) *Clientset {
 	var cs Clientset
-	cs.traefikContainousV1alpha1 = traefikcontainousv1alpha1.NewForConfigOrDie(c)
 	cs.traefikV1alpha1 = traefikv1alpha1.NewForConfigOrDie(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
@@ -111,7 +98,6 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
 // New creates a new Clientset for the given RESTClient.
 func New(c rest.Interface) *Clientset {
 	var cs Clientset
-	cs.traefikContainousV1alpha1 = traefikcontainousv1alpha1.New(c)
 	cs.traefikV1alpha1 = traefikv1alpha1.New(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClient(c)
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/clientset_generated.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/clientset_generated.go
index ab9b619cf8c7f16fe41e13e20ea9e9d1d460b81b..55b5edcb25b171b826e1153b698133305b4e0479 100644
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/clientset_generated.go
+++ b/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/clientset_generated.go
@@ -28,8 +28,6 @@ package fake
 
 import (
 	clientset "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1"
-	faketraefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake"
 	traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikio/v1alpha1"
 	faketraefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikio/v1alpha1/fake"
 	"k8s.io/apimachinery/pkg/runtime"
@@ -86,11 +84,6 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
 
 var _ clientset.Interface = &Clientset{}
 
-// TraefikContainousV1alpha1 retrieves the TraefikContainousV1alpha1Client
-func (c *Clientset) TraefikContainousV1alpha1() traefikcontainousv1alpha1.TraefikContainousV1alpha1Interface {
-	return &faketraefikcontainousv1alpha1.FakeTraefikContainousV1alpha1{Fake: &c.Fake}
-}
-
 // TraefikV1alpha1 retrieves the TraefikV1alpha1Client
 func (c *Clientset) TraefikV1alpha1() traefikv1alpha1.TraefikV1alpha1Interface {
 	return &faketraefikv1alpha1.FakeTraefikV1alpha1{Fake: &c.Fake}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/register.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/register.go
index 5324ac36a690a239b24dd41832c64b4fb5ddbc78..c25b16318c3bd3412a90ac92e4e2079e3757cb41 100644
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/register.go
+++ b/pkg/provider/kubernetes/crd/generated/clientset/versioned/fake/register.go
@@ -27,7 +27,6 @@ THE SOFTWARE.
 package fake
 
 import (
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
 	traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
@@ -40,7 +39,6 @@ var scheme = runtime.NewScheme()
 var codecs = serializer.NewCodecFactory(scheme)
 
 var localSchemeBuilder = runtime.SchemeBuilder{
-	traefikcontainousv1alpha1.AddToScheme,
 	traefikv1alpha1.AddToScheme,
 }
 
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme/register.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme/register.go
index 364fcda83f16b14cc97dc5d3d558c86d7c19c0a3..cb048b1546106d41414f5820c5d1668a40fb6f2f 100644
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme/register.go
+++ b/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme/register.go
@@ -27,7 +27,6 @@ THE SOFTWARE.
 package scheme
 
 import (
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
 	traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
@@ -40,7 +39,6 @@ var Scheme = runtime.NewScheme()
 var Codecs = serializer.NewCodecFactory(Scheme)
 var ParameterCodec = runtime.NewParameterCodec(Scheme)
 var localSchemeBuilder = runtime.SchemeBuilder{
-	traefikcontainousv1alpha1.AddToScheme,
 	traefikv1alpha1.AddToScheme,
 }
 
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/doc.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/doc.go
deleted file mode 100644
index e39212eab4294a757c8aab615994d8107db4c2af..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/doc.go
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// This package has the automatically generated typed clients.
-package v1alpha1
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/doc.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/doc.go
deleted file mode 100644
index 24ecc2be057d09e405a830dee12068d652d17b4a..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/doc.go
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-// Package fake has the automatically generated clients.
-package fake
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroute.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroute.go
deleted file mode 100644
index 4ae4f0c9b842f7e616fef55a5150dd38706b4397..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroute.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeIngressRoutes implements IngressRouteInterface
-type FakeIngressRoutes struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var ingressroutesResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "ingressroutes"}
-
-var ingressroutesKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "IngressRoute"}
-
-// Get takes name of the ingressRoute, and returns the corresponding ingressRoute object, and an error if there is any.
-func (c *FakeIngressRoutes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRoute, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(ingressroutesResource, c.ns, name), &v1alpha1.IngressRoute{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRoute), err
-}
-
-// List takes label and field selectors, and returns the list of IngressRoutes that match those selectors.
-func (c *FakeIngressRoutes) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(ingressroutesResource, ingressroutesKind, c.ns, opts), &v1alpha1.IngressRouteList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.IngressRouteList{ListMeta: obj.(*v1alpha1.IngressRouteList).ListMeta}
-	for _, item := range obj.(*v1alpha1.IngressRouteList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRoutes.
-func (c *FakeIngressRoutes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(ingressroutesResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a ingressRoute and creates it.  Returns the server's representation of the ingressRoute, and an error, if there is any.
-func (c *FakeIngressRoutes) Create(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.CreateOptions) (result *v1alpha1.IngressRoute, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(ingressroutesResource, c.ns, ingressRoute), &v1alpha1.IngressRoute{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRoute), err
-}
-
-// Update takes the representation of a ingressRoute and updates it. Returns the server's representation of the ingressRoute, and an error, if there is any.
-func (c *FakeIngressRoutes) Update(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.UpdateOptions) (result *v1alpha1.IngressRoute, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(ingressroutesResource, c.ns, ingressRoute), &v1alpha1.IngressRoute{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRoute), err
-}
-
-// Delete takes name of the ingressRoute and deletes it. Returns an error if one occurs.
-func (c *FakeIngressRoutes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(ingressroutesResource, c.ns, name), &v1alpha1.IngressRoute{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeIngressRoutes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(ingressroutesResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.IngressRouteList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched ingressRoute.
-func (c *FakeIngressRoutes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRoute, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(ingressroutesResource, c.ns, name, pt, data, subresources...), &v1alpha1.IngressRoute{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRoute), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroutetcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroutetcp.go
deleted file mode 100644
index 164553c918f4ce18438fcfe4b84a1be091957772..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressroutetcp.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeIngressRouteTCPs implements IngressRouteTCPInterface
-type FakeIngressRouteTCPs struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var ingressroutetcpsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "ingressroutetcps"}
-
-var ingressroutetcpsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "IngressRouteTCP"}
-
-// Get takes name of the ingressRouteTCP, and returns the corresponding ingressRouteTCP object, and an error if there is any.
-func (c *FakeIngressRouteTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(ingressroutetcpsResource, c.ns, name), &v1alpha1.IngressRouteTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteTCP), err
-}
-
-// List takes label and field selectors, and returns the list of IngressRouteTCPs that match those selectors.
-func (c *FakeIngressRouteTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteTCPList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(ingressroutetcpsResource, ingressroutetcpsKind, c.ns, opts), &v1alpha1.IngressRouteTCPList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.IngressRouteTCPList{ListMeta: obj.(*v1alpha1.IngressRouteTCPList).ListMeta}
-	for _, item := range obj.(*v1alpha1.IngressRouteTCPList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRouteTCPs.
-func (c *FakeIngressRouteTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(ingressroutetcpsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a ingressRouteTCP and creates it.  Returns the server's representation of the ingressRouteTCP, and an error, if there is any.
-func (c *FakeIngressRouteTCPs) Create(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.CreateOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(ingressroutetcpsResource, c.ns, ingressRouteTCP), &v1alpha1.IngressRouteTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteTCP), err
-}
-
-// Update takes the representation of a ingressRouteTCP and updates it. Returns the server's representation of the ingressRouteTCP, and an error, if there is any.
-func (c *FakeIngressRouteTCPs) Update(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.UpdateOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(ingressroutetcpsResource, c.ns, ingressRouteTCP), &v1alpha1.IngressRouteTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteTCP), err
-}
-
-// Delete takes name of the ingressRouteTCP and deletes it. Returns an error if one occurs.
-func (c *FakeIngressRouteTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(ingressroutetcpsResource, c.ns, name), &v1alpha1.IngressRouteTCP{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeIngressRouteTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(ingressroutetcpsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.IngressRouteTCPList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched ingressRouteTCP.
-func (c *FakeIngressRouteTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(ingressroutetcpsResource, c.ns, name, pt, data, subresources...), &v1alpha1.IngressRouteTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteTCP), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressrouteudp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressrouteudp.go
deleted file mode 100644
index 63193fd3f47305650a867b4939f14748ef43e6a4..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_ingressrouteudp.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeIngressRouteUDPs implements IngressRouteUDPInterface
-type FakeIngressRouteUDPs struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var ingressrouteudpsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "ingressrouteudps"}
-
-var ingressrouteudpsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "IngressRouteUDP"}
-
-// Get takes name of the ingressRouteUDP, and returns the corresponding ingressRouteUDP object, and an error if there is any.
-func (c *FakeIngressRouteUDPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(ingressrouteudpsResource, c.ns, name), &v1alpha1.IngressRouteUDP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteUDP), err
-}
-
-// List takes label and field selectors, and returns the list of IngressRouteUDPs that match those selectors.
-func (c *FakeIngressRouteUDPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteUDPList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(ingressrouteudpsResource, ingressrouteudpsKind, c.ns, opts), &v1alpha1.IngressRouteUDPList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.IngressRouteUDPList{ListMeta: obj.(*v1alpha1.IngressRouteUDPList).ListMeta}
-	for _, item := range obj.(*v1alpha1.IngressRouteUDPList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRouteUDPs.
-func (c *FakeIngressRouteUDPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(ingressrouteudpsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a ingressRouteUDP and creates it.  Returns the server's representation of the ingressRouteUDP, and an error, if there is any.
-func (c *FakeIngressRouteUDPs) Create(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.CreateOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(ingressrouteudpsResource, c.ns, ingressRouteUDP), &v1alpha1.IngressRouteUDP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteUDP), err
-}
-
-// Update takes the representation of a ingressRouteUDP and updates it. Returns the server's representation of the ingressRouteUDP, and an error, if there is any.
-func (c *FakeIngressRouteUDPs) Update(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.UpdateOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(ingressrouteudpsResource, c.ns, ingressRouteUDP), &v1alpha1.IngressRouteUDP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteUDP), err
-}
-
-// Delete takes name of the ingressRouteUDP and deletes it. Returns an error if one occurs.
-func (c *FakeIngressRouteUDPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(ingressrouteudpsResource, c.ns, name), &v1alpha1.IngressRouteUDP{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeIngressRouteUDPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(ingressrouteudpsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.IngressRouteUDPList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched ingressRouteUDP.
-func (c *FakeIngressRouteUDPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteUDP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(ingressrouteudpsResource, c.ns, name, pt, data, subresources...), &v1alpha1.IngressRouteUDP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.IngressRouteUDP), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middleware.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middleware.go
deleted file mode 100644
index 804d8bfe140d19bcaa84534e780b97ec70e5a3c7..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middleware.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeMiddlewares implements MiddlewareInterface
-type FakeMiddlewares struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var middlewaresResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "middlewares"}
-
-var middlewaresKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "Middleware"}
-
-// Get takes name of the middleware, and returns the corresponding middleware object, and an error if there is any.
-func (c *FakeMiddlewares) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Middleware, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(middlewaresResource, c.ns, name), &v1alpha1.Middleware{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.Middleware), err
-}
-
-// List takes label and field selectors, and returns the list of Middlewares that match those selectors.
-func (c *FakeMiddlewares) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.MiddlewareList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(middlewaresResource, middlewaresKind, c.ns, opts), &v1alpha1.MiddlewareList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.MiddlewareList{ListMeta: obj.(*v1alpha1.MiddlewareList).ListMeta}
-	for _, item := range obj.(*v1alpha1.MiddlewareList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested middlewares.
-func (c *FakeMiddlewares) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(middlewaresResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a middleware and creates it.  Returns the server's representation of the middleware, and an error, if there is any.
-func (c *FakeMiddlewares) Create(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.CreateOptions) (result *v1alpha1.Middleware, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(middlewaresResource, c.ns, middleware), &v1alpha1.Middleware{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.Middleware), err
-}
-
-// Update takes the representation of a middleware and updates it. Returns the server's representation of the middleware, and an error, if there is any.
-func (c *FakeMiddlewares) Update(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.UpdateOptions) (result *v1alpha1.Middleware, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(middlewaresResource, c.ns, middleware), &v1alpha1.Middleware{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.Middleware), err
-}
-
-// Delete takes name of the middleware and deletes it. Returns an error if one occurs.
-func (c *FakeMiddlewares) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(middlewaresResource, c.ns, name), &v1alpha1.Middleware{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeMiddlewares) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(middlewaresResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.MiddlewareList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched middleware.
-func (c *FakeMiddlewares) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Middleware, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(middlewaresResource, c.ns, name, pt, data, subresources...), &v1alpha1.Middleware{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.Middleware), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middlewaretcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middlewaretcp.go
deleted file mode 100644
index f13b6a7da044730cf1dfffbff198bec922692d0e..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_middlewaretcp.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeMiddlewareTCPs implements MiddlewareTCPInterface
-type FakeMiddlewareTCPs struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var middlewaretcpsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "middlewaretcps"}
-
-var middlewaretcpsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "MiddlewareTCP"}
-
-// Get takes name of the middlewareTCP, and returns the corresponding middlewareTCP object, and an error if there is any.
-func (c *FakeMiddlewareTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(middlewaretcpsResource, c.ns, name), &v1alpha1.MiddlewareTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.MiddlewareTCP), err
-}
-
-// List takes label and field selectors, and returns the list of MiddlewareTCPs that match those selectors.
-func (c *FakeMiddlewareTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.MiddlewareTCPList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(middlewaretcpsResource, middlewaretcpsKind, c.ns, opts), &v1alpha1.MiddlewareTCPList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.MiddlewareTCPList{ListMeta: obj.(*v1alpha1.MiddlewareTCPList).ListMeta}
-	for _, item := range obj.(*v1alpha1.MiddlewareTCPList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested middlewareTCPs.
-func (c *FakeMiddlewareTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(middlewaretcpsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a middlewareTCP and creates it.  Returns the server's representation of the middlewareTCP, and an error, if there is any.
-func (c *FakeMiddlewareTCPs) Create(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.CreateOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(middlewaretcpsResource, c.ns, middlewareTCP), &v1alpha1.MiddlewareTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.MiddlewareTCP), err
-}
-
-// Update takes the representation of a middlewareTCP and updates it. Returns the server's representation of the middlewareTCP, and an error, if there is any.
-func (c *FakeMiddlewareTCPs) Update(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.UpdateOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(middlewaretcpsResource, c.ns, middlewareTCP), &v1alpha1.MiddlewareTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.MiddlewareTCP), err
-}
-
-// Delete takes name of the middlewareTCP and deletes it. Returns an error if one occurs.
-func (c *FakeMiddlewareTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(middlewaretcpsResource, c.ns, name), &v1alpha1.MiddlewareTCP{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeMiddlewareTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(middlewaretcpsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.MiddlewareTCPList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched middlewareTCP.
-func (c *FakeMiddlewareTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.MiddlewareTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(middlewaretcpsResource, c.ns, name, pt, data, subresources...), &v1alpha1.MiddlewareTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.MiddlewareTCP), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransport.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransport.go
deleted file mode 100644
index 31fb545ecf5321c2163f9b07bae091d1fdfc6115..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransport.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeServersTransports implements ServersTransportInterface
-type FakeServersTransports struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var serverstransportsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "serverstransports"}
-
-var serverstransportsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "ServersTransport"}
-
-// Get takes name of the serversTransport, and returns the corresponding serversTransport object, and an error if there is any.
-func (c *FakeServersTransports) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServersTransport, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(serverstransportsResource, c.ns, name), &v1alpha1.ServersTransport{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransport), err
-}
-
-// List takes label and field selectors, and returns the list of ServersTransports that match those selectors.
-func (c *FakeServersTransports) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServersTransportList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(serverstransportsResource, serverstransportsKind, c.ns, opts), &v1alpha1.ServersTransportList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.ServersTransportList{ListMeta: obj.(*v1alpha1.ServersTransportList).ListMeta}
-	for _, item := range obj.(*v1alpha1.ServersTransportList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested serversTransports.
-func (c *FakeServersTransports) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(serverstransportsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a serversTransport and creates it.  Returns the server's representation of the serversTransport, and an error, if there is any.
-func (c *FakeServersTransports) Create(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.CreateOptions) (result *v1alpha1.ServersTransport, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(serverstransportsResource, c.ns, serversTransport), &v1alpha1.ServersTransport{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransport), err
-}
-
-// Update takes the representation of a serversTransport and updates it. Returns the server's representation of the serversTransport, and an error, if there is any.
-func (c *FakeServersTransports) Update(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.UpdateOptions) (result *v1alpha1.ServersTransport, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(serverstransportsResource, c.ns, serversTransport), &v1alpha1.ServersTransport{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransport), err
-}
-
-// Delete takes name of the serversTransport and deletes it. Returns an error if one occurs.
-func (c *FakeServersTransports) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(serverstransportsResource, c.ns, name), &v1alpha1.ServersTransport{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeServersTransports) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(serverstransportsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.ServersTransportList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched serversTransport.
-func (c *FakeServersTransports) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransport, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(serverstransportsResource, c.ns, name, pt, data, subresources...), &v1alpha1.ServersTransport{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransport), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransporttcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransporttcp.go
deleted file mode 100644
index f56d8d11f928d12ea077eda15013a94e27d28f20..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_serverstransporttcp.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeServersTransportTCPs implements ServersTransportTCPInterface
-type FakeServersTransportTCPs struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var serverstransporttcpsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "serverstransporttcps"}
-
-var serverstransporttcpsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "ServersTransportTCP"}
-
-// Get takes name of the serversTransportTCP, and returns the corresponding serversTransportTCP object, and an error if there is any.
-func (c *FakeServersTransportTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(serverstransporttcpsResource, c.ns, name), &v1alpha1.ServersTransportTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransportTCP), err
-}
-
-// List takes label and field selectors, and returns the list of ServersTransportTCPs that match those selectors.
-func (c *FakeServersTransportTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServersTransportTCPList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(serverstransporttcpsResource, serverstransporttcpsKind, c.ns, opts), &v1alpha1.ServersTransportTCPList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.ServersTransportTCPList{ListMeta: obj.(*v1alpha1.ServersTransportTCPList).ListMeta}
-	for _, item := range obj.(*v1alpha1.ServersTransportTCPList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested serversTransportTCPs.
-func (c *FakeServersTransportTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(serverstransporttcpsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a serversTransportTCP and creates it.  Returns the server's representation of the serversTransportTCP, and an error, if there is any.
-func (c *FakeServersTransportTCPs) Create(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.CreateOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(serverstransporttcpsResource, c.ns, serversTransportTCP), &v1alpha1.ServersTransportTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransportTCP), err
-}
-
-// Update takes the representation of a serversTransportTCP and updates it. Returns the server's representation of the serversTransportTCP, and an error, if there is any.
-func (c *FakeServersTransportTCPs) Update(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.UpdateOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(serverstransporttcpsResource, c.ns, serversTransportTCP), &v1alpha1.ServersTransportTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransportTCP), err
-}
-
-// Delete takes name of the serversTransportTCP and deletes it. Returns an error if one occurs.
-func (c *FakeServersTransportTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(serverstransporttcpsResource, c.ns, name), &v1alpha1.ServersTransportTCP{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeServersTransportTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(serverstransporttcpsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.ServersTransportTCPList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched serversTransportTCP.
-func (c *FakeServersTransportTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransportTCP, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(serverstransporttcpsResource, c.ns, name, pt, data, subresources...), &v1alpha1.ServersTransportTCP{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.ServersTransportTCP), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsoption.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsoption.go
deleted file mode 100644
index a24b69bbf83d6dfda2d5402c791216c8353a7b68..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsoption.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeTLSOptions implements TLSOptionInterface
-type FakeTLSOptions struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var tlsoptionsResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "tlsoptions"}
-
-var tlsoptionsKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "TLSOption"}
-
-// Get takes name of the tLSOption, and returns the corresponding tLSOption object, and an error if there is any.
-func (c *FakeTLSOptions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TLSOption, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(tlsoptionsResource, c.ns, name), &v1alpha1.TLSOption{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSOption), err
-}
-
-// List takes label and field selectors, and returns the list of TLSOptions that match those selectors.
-func (c *FakeTLSOptions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TLSOptionList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(tlsoptionsResource, tlsoptionsKind, c.ns, opts), &v1alpha1.TLSOptionList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.TLSOptionList{ListMeta: obj.(*v1alpha1.TLSOptionList).ListMeta}
-	for _, item := range obj.(*v1alpha1.TLSOptionList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested tLSOptions.
-func (c *FakeTLSOptions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(tlsoptionsResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a tLSOption and creates it.  Returns the server's representation of the tLSOption, and an error, if there is any.
-func (c *FakeTLSOptions) Create(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.CreateOptions) (result *v1alpha1.TLSOption, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(tlsoptionsResource, c.ns, tLSOption), &v1alpha1.TLSOption{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSOption), err
-}
-
-// Update takes the representation of a tLSOption and updates it. Returns the server's representation of the tLSOption, and an error, if there is any.
-func (c *FakeTLSOptions) Update(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.UpdateOptions) (result *v1alpha1.TLSOption, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(tlsoptionsResource, c.ns, tLSOption), &v1alpha1.TLSOption{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSOption), err
-}
-
-// Delete takes name of the tLSOption and deletes it. Returns an error if one occurs.
-func (c *FakeTLSOptions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(tlsoptionsResource, c.ns, name), &v1alpha1.TLSOption{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeTLSOptions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(tlsoptionsResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.TLSOptionList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched tLSOption.
-func (c *FakeTLSOptions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSOption, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(tlsoptionsResource, c.ns, name, pt, data, subresources...), &v1alpha1.TLSOption{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSOption), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsstore.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsstore.go
deleted file mode 100644
index 8639e54dfe1e3c9b7fd25d5e84938a400bb70add..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_tlsstore.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeTLSStores implements TLSStoreInterface
-type FakeTLSStores struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var tlsstoresResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "tlsstores"}
-
-var tlsstoresKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "TLSStore"}
-
-// Get takes name of the tLSStore, and returns the corresponding tLSStore object, and an error if there is any.
-func (c *FakeTLSStores) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TLSStore, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(tlsstoresResource, c.ns, name), &v1alpha1.TLSStore{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSStore), err
-}
-
-// List takes label and field selectors, and returns the list of TLSStores that match those selectors.
-func (c *FakeTLSStores) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TLSStoreList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(tlsstoresResource, tlsstoresKind, c.ns, opts), &v1alpha1.TLSStoreList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.TLSStoreList{ListMeta: obj.(*v1alpha1.TLSStoreList).ListMeta}
-	for _, item := range obj.(*v1alpha1.TLSStoreList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested tLSStores.
-func (c *FakeTLSStores) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(tlsstoresResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a tLSStore and creates it.  Returns the server's representation of the tLSStore, and an error, if there is any.
-func (c *FakeTLSStores) Create(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.CreateOptions) (result *v1alpha1.TLSStore, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(tlsstoresResource, c.ns, tLSStore), &v1alpha1.TLSStore{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSStore), err
-}
-
-// Update takes the representation of a tLSStore and updates it. Returns the server's representation of the tLSStore, and an error, if there is any.
-func (c *FakeTLSStores) Update(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.UpdateOptions) (result *v1alpha1.TLSStore, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(tlsstoresResource, c.ns, tLSStore), &v1alpha1.TLSStore{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSStore), err
-}
-
-// Delete takes name of the tLSStore and deletes it. Returns an error if one occurs.
-func (c *FakeTLSStores) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(tlsstoresResource, c.ns, name), &v1alpha1.TLSStore{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeTLSStores) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(tlsstoresResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.TLSStoreList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched tLSStore.
-func (c *FakeTLSStores) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSStore, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(tlsstoresResource, c.ns, name, pt, data, subresources...), &v1alpha1.TLSStore{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TLSStore), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikcontainous_client.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikcontainous_client.go
deleted file mode 100644
index ada81ef3eb75a8c8fce874e26ee4ec872646c604..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikcontainous_client.go
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1"
-	rest "k8s.io/client-go/rest"
-	testing "k8s.io/client-go/testing"
-)
-
-type FakeTraefikContainousV1alpha1 struct {
-	*testing.Fake
-}
-
-func (c *FakeTraefikContainousV1alpha1) IngressRoutes(namespace string) v1alpha1.IngressRouteInterface {
-	return &FakeIngressRoutes{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) IngressRouteTCPs(namespace string) v1alpha1.IngressRouteTCPInterface {
-	return &FakeIngressRouteTCPs{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) IngressRouteUDPs(namespace string) v1alpha1.IngressRouteUDPInterface {
-	return &FakeIngressRouteUDPs{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) Middlewares(namespace string) v1alpha1.MiddlewareInterface {
-	return &FakeMiddlewares{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) MiddlewareTCPs(namespace string) v1alpha1.MiddlewareTCPInterface {
-	return &FakeMiddlewareTCPs{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) ServersTransports(namespace string) v1alpha1.ServersTransportInterface {
-	return &FakeServersTransports{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) ServersTransportTCPs(namespace string) v1alpha1.ServersTransportTCPInterface {
-	return &FakeServersTransportTCPs{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) TLSOptions(namespace string) v1alpha1.TLSOptionInterface {
-	return &FakeTLSOptions{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) TLSStores(namespace string) v1alpha1.TLSStoreInterface {
-	return &FakeTLSStores{c, namespace}
-}
-
-func (c *FakeTraefikContainousV1alpha1) TraefikServices(namespace string) v1alpha1.TraefikServiceInterface {
-	return &FakeTraefikServices{c, namespace}
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *FakeTraefikContainousV1alpha1) RESTClient() rest.Interface {
-	var ret *rest.RESTClient
-	return ret
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikservice.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikservice.go
deleted file mode 100644
index fb0beb6b2a167880c71fa4c47836ada4fb4c0e69..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/fake/fake_traefikservice.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package fake
-
-import (
-	"context"
-
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	labels "k8s.io/apimachinery/pkg/labels"
-	schema "k8s.io/apimachinery/pkg/runtime/schema"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	testing "k8s.io/client-go/testing"
-)
-
-// FakeTraefikServices implements TraefikServiceInterface
-type FakeTraefikServices struct {
-	Fake *FakeTraefikContainousV1alpha1
-	ns   string
-}
-
-var traefikservicesResource = schema.GroupVersionResource{Group: "traefik.containo.us", Version: "v1alpha1", Resource: "traefikservices"}
-
-var traefikservicesKind = schema.GroupVersionKind{Group: "traefik.containo.us", Version: "v1alpha1", Kind: "TraefikService"}
-
-// Get takes name of the traefikService, and returns the corresponding traefikService object, and an error if there is any.
-func (c *FakeTraefikServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TraefikService, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewGetAction(traefikservicesResource, c.ns, name), &v1alpha1.TraefikService{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TraefikService), err
-}
-
-// List takes label and field selectors, and returns the list of TraefikServices that match those selectors.
-func (c *FakeTraefikServices) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TraefikServiceList, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewListAction(traefikservicesResource, traefikservicesKind, c.ns, opts), &v1alpha1.TraefikServiceList{})
-
-	if obj == nil {
-		return nil, err
-	}
-
-	label, _, _ := testing.ExtractFromListOptions(opts)
-	if label == nil {
-		label = labels.Everything()
-	}
-	list := &v1alpha1.TraefikServiceList{ListMeta: obj.(*v1alpha1.TraefikServiceList).ListMeta}
-	for _, item := range obj.(*v1alpha1.TraefikServiceList).Items {
-		if label.Matches(labels.Set(item.Labels)) {
-			list.Items = append(list.Items, item)
-		}
-	}
-	return list, err
-}
-
-// Watch returns a watch.Interface that watches the requested traefikServices.
-func (c *FakeTraefikServices) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	return c.Fake.
-		InvokesWatch(testing.NewWatchAction(traefikservicesResource, c.ns, opts))
-
-}
-
-// Create takes the representation of a traefikService and creates it.  Returns the server's representation of the traefikService, and an error, if there is any.
-func (c *FakeTraefikServices) Create(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.CreateOptions) (result *v1alpha1.TraefikService, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewCreateAction(traefikservicesResource, c.ns, traefikService), &v1alpha1.TraefikService{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TraefikService), err
-}
-
-// Update takes the representation of a traefikService and updates it. Returns the server's representation of the traefikService, and an error, if there is any.
-func (c *FakeTraefikServices) Update(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.UpdateOptions) (result *v1alpha1.TraefikService, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewUpdateAction(traefikservicesResource, c.ns, traefikService), &v1alpha1.TraefikService{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TraefikService), err
-}
-
-// Delete takes name of the traefikService and deletes it. Returns an error if one occurs.
-func (c *FakeTraefikServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	_, err := c.Fake.
-		Invokes(testing.NewDeleteAction(traefikservicesResource, c.ns, name), &v1alpha1.TraefikService{})
-
-	return err
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *FakeTraefikServices) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	action := testing.NewDeleteCollectionAction(traefikservicesResource, c.ns, listOpts)
-
-	_, err := c.Fake.Invokes(action, &v1alpha1.TraefikServiceList{})
-	return err
-}
-
-// Patch applies the patch and returns the patched traefikService.
-func (c *FakeTraefikServices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TraefikService, err error) {
-	obj, err := c.Fake.
-		Invokes(testing.NewPatchSubresourceAction(traefikservicesResource, c.ns, name, pt, data, subresources...), &v1alpha1.TraefikService{})
-
-	if obj == nil {
-		return nil, err
-	}
-	return obj.(*v1alpha1.TraefikService), err
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/generated_expansion.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/generated_expansion.go
deleted file mode 100644
index 0fbf0a82f0eaaf7e9f37884e00847e8acde89146..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/generated_expansion.go
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-type IngressRouteExpansion interface{}
-
-type IngressRouteTCPExpansion interface{}
-
-type IngressRouteUDPExpansion interface{}
-
-type MiddlewareExpansion interface{}
-
-type MiddlewareTCPExpansion interface{}
-
-type ServersTransportExpansion interface{}
-
-type ServersTransportTCPExpansion interface{}
-
-type TLSOptionExpansion interface{}
-
-type TLSStoreExpansion interface{}
-
-type TraefikServiceExpansion interface{}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroute.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroute.go
deleted file mode 100644
index 9a30fece807f2bbc09652748be32eed600407503..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroute.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// IngressRoutesGetter has a method to return a IngressRouteInterface.
-// A group's client should implement this interface.
-type IngressRoutesGetter interface {
-	IngressRoutes(namespace string) IngressRouteInterface
-}
-
-// IngressRouteInterface has methods to work with IngressRoute resources.
-type IngressRouteInterface interface {
-	Create(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.CreateOptions) (*v1alpha1.IngressRoute, error)
-	Update(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.UpdateOptions) (*v1alpha1.IngressRoute, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.IngressRoute, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.IngressRouteList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRoute, err error)
-	IngressRouteExpansion
-}
-
-// ingressRoutes implements IngressRouteInterface
-type ingressRoutes struct {
-	client rest.Interface
-	ns     string
-}
-
-// newIngressRoutes returns a IngressRoutes
-func newIngressRoutes(c *TraefikContainousV1alpha1Client, namespace string) *ingressRoutes {
-	return &ingressRoutes{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the ingressRoute, and returns the corresponding ingressRoute object, and an error if there is any.
-func (c *ingressRoutes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRoute, err error) {
-	result = &v1alpha1.IngressRoute{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of IngressRoutes that match those selectors.
-func (c *ingressRoutes) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.IngressRouteList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRoutes.
-func (c *ingressRoutes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a ingressRoute and creates it.  Returns the server's representation of the ingressRoute, and an error, if there is any.
-func (c *ingressRoutes) Create(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.CreateOptions) (result *v1alpha1.IngressRoute, err error) {
-	result = &v1alpha1.IngressRoute{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRoute).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a ingressRoute and updates it. Returns the server's representation of the ingressRoute, and an error, if there is any.
-func (c *ingressRoutes) Update(ctx context.Context, ingressRoute *v1alpha1.IngressRoute, opts v1.UpdateOptions) (result *v1alpha1.IngressRoute, err error) {
-	result = &v1alpha1.IngressRoute{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		Name(ingressRoute.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRoute).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the ingressRoute and deletes it. Returns an error if one occurs.
-func (c *ingressRoutes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *ingressRoutes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched ingressRoute.
-func (c *ingressRoutes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRoute, err error) {
-	result = &v1alpha1.IngressRoute{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("ingressroutes").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroutetcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroutetcp.go
deleted file mode 100644
index 3981e361c55ae4d273f4577f7801a88611f62008..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressroutetcp.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// IngressRouteTCPsGetter has a method to return a IngressRouteTCPInterface.
-// A group's client should implement this interface.
-type IngressRouteTCPsGetter interface {
-	IngressRouteTCPs(namespace string) IngressRouteTCPInterface
-}
-
-// IngressRouteTCPInterface has methods to work with IngressRouteTCP resources.
-type IngressRouteTCPInterface interface {
-	Create(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.CreateOptions) (*v1alpha1.IngressRouteTCP, error)
-	Update(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.UpdateOptions) (*v1alpha1.IngressRouteTCP, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.IngressRouteTCP, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.IngressRouteTCPList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteTCP, err error)
-	IngressRouteTCPExpansion
-}
-
-// ingressRouteTCPs implements IngressRouteTCPInterface
-type ingressRouteTCPs struct {
-	client rest.Interface
-	ns     string
-}
-
-// newIngressRouteTCPs returns a IngressRouteTCPs
-func newIngressRouteTCPs(c *TraefikContainousV1alpha1Client, namespace string) *ingressRouteTCPs {
-	return &ingressRouteTCPs{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the ingressRouteTCP, and returns the corresponding ingressRouteTCP object, and an error if there is any.
-func (c *ingressRouteTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	result = &v1alpha1.IngressRouteTCP{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of IngressRouteTCPs that match those selectors.
-func (c *ingressRouteTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteTCPList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.IngressRouteTCPList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRouteTCPs.
-func (c *ingressRouteTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a ingressRouteTCP and creates it.  Returns the server's representation of the ingressRouteTCP, and an error, if there is any.
-func (c *ingressRouteTCPs) Create(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.CreateOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	result = &v1alpha1.IngressRouteTCP{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRouteTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a ingressRouteTCP and updates it. Returns the server's representation of the ingressRouteTCP, and an error, if there is any.
-func (c *ingressRouteTCPs) Update(ctx context.Context, ingressRouteTCP *v1alpha1.IngressRouteTCP, opts v1.UpdateOptions) (result *v1alpha1.IngressRouteTCP, err error) {
-	result = &v1alpha1.IngressRouteTCP{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		Name(ingressRouteTCP.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRouteTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the ingressRouteTCP and deletes it. Returns an error if one occurs.
-func (c *ingressRouteTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *ingressRouteTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched ingressRouteTCP.
-func (c *ingressRouteTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteTCP, err error) {
-	result = &v1alpha1.IngressRouteTCP{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("ingressroutetcps").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressrouteudp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressrouteudp.go
deleted file mode 100644
index fc5f58dfd1173edaebdc6708213109665d8f0c86..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/ingressrouteudp.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// IngressRouteUDPsGetter has a method to return a IngressRouteUDPInterface.
-// A group's client should implement this interface.
-type IngressRouteUDPsGetter interface {
-	IngressRouteUDPs(namespace string) IngressRouteUDPInterface
-}
-
-// IngressRouteUDPInterface has methods to work with IngressRouteUDP resources.
-type IngressRouteUDPInterface interface {
-	Create(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.CreateOptions) (*v1alpha1.IngressRouteUDP, error)
-	Update(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.UpdateOptions) (*v1alpha1.IngressRouteUDP, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.IngressRouteUDP, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.IngressRouteUDPList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteUDP, err error)
-	IngressRouteUDPExpansion
-}
-
-// ingressRouteUDPs implements IngressRouteUDPInterface
-type ingressRouteUDPs struct {
-	client rest.Interface
-	ns     string
-}
-
-// newIngressRouteUDPs returns a IngressRouteUDPs
-func newIngressRouteUDPs(c *TraefikContainousV1alpha1Client, namespace string) *ingressRouteUDPs {
-	return &ingressRouteUDPs{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the ingressRouteUDP, and returns the corresponding ingressRouteUDP object, and an error if there is any.
-func (c *ingressRouteUDPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	result = &v1alpha1.IngressRouteUDP{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of IngressRouteUDPs that match those selectors.
-func (c *ingressRouteUDPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.IngressRouteUDPList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.IngressRouteUDPList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested ingressRouteUDPs.
-func (c *ingressRouteUDPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a ingressRouteUDP and creates it.  Returns the server's representation of the ingressRouteUDP, and an error, if there is any.
-func (c *ingressRouteUDPs) Create(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.CreateOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	result = &v1alpha1.IngressRouteUDP{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRouteUDP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a ingressRouteUDP and updates it. Returns the server's representation of the ingressRouteUDP, and an error, if there is any.
-func (c *ingressRouteUDPs) Update(ctx context.Context, ingressRouteUDP *v1alpha1.IngressRouteUDP, opts v1.UpdateOptions) (result *v1alpha1.IngressRouteUDP, err error) {
-	result = &v1alpha1.IngressRouteUDP{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		Name(ingressRouteUDP.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(ingressRouteUDP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the ingressRouteUDP and deletes it. Returns an error if one occurs.
-func (c *ingressRouteUDPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *ingressRouteUDPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched ingressRouteUDP.
-func (c *ingressRouteUDPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.IngressRouteUDP, err error) {
-	result = &v1alpha1.IngressRouteUDP{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("ingressrouteudps").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middleware.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middleware.go
deleted file mode 100644
index 05ff56a9da7fb243f50bfac72bd899fbb1272b56..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middleware.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// MiddlewaresGetter has a method to return a MiddlewareInterface.
-// A group's client should implement this interface.
-type MiddlewaresGetter interface {
-	Middlewares(namespace string) MiddlewareInterface
-}
-
-// MiddlewareInterface has methods to work with Middleware resources.
-type MiddlewareInterface interface {
-	Create(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.CreateOptions) (*v1alpha1.Middleware, error)
-	Update(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.UpdateOptions) (*v1alpha1.Middleware, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.Middleware, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.MiddlewareList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Middleware, err error)
-	MiddlewareExpansion
-}
-
-// middlewares implements MiddlewareInterface
-type middlewares struct {
-	client rest.Interface
-	ns     string
-}
-
-// newMiddlewares returns a Middlewares
-func newMiddlewares(c *TraefikContainousV1alpha1Client, namespace string) *middlewares {
-	return &middlewares{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the middleware, and returns the corresponding middleware object, and an error if there is any.
-func (c *middlewares) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.Middleware, err error) {
-	result = &v1alpha1.Middleware{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewares").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of Middlewares that match those selectors.
-func (c *middlewares) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.MiddlewareList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.MiddlewareList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewares").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested middlewares.
-func (c *middlewares) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewares").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a middleware and creates it.  Returns the server's representation of the middleware, and an error, if there is any.
-func (c *middlewares) Create(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.CreateOptions) (result *v1alpha1.Middleware, err error) {
-	result = &v1alpha1.Middleware{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("middlewares").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(middleware).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a middleware and updates it. Returns the server's representation of the middleware, and an error, if there is any.
-func (c *middlewares) Update(ctx context.Context, middleware *v1alpha1.Middleware, opts v1.UpdateOptions) (result *v1alpha1.Middleware, err error) {
-	result = &v1alpha1.Middleware{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("middlewares").
-		Name(middleware.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(middleware).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the middleware and deletes it. Returns an error if one occurs.
-func (c *middlewares) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("middlewares").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *middlewares) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("middlewares").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched middleware.
-func (c *middlewares) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Middleware, err error) {
-	result = &v1alpha1.Middleware{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("middlewares").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middlewaretcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middlewaretcp.go
deleted file mode 100644
index 204d3bf9a6d8f40f51035e8abf2b78c20595de89..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/middlewaretcp.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// MiddlewareTCPsGetter has a method to return a MiddlewareTCPInterface.
-// A group's client should implement this interface.
-type MiddlewareTCPsGetter interface {
-	MiddlewareTCPs(namespace string) MiddlewareTCPInterface
-}
-
-// MiddlewareTCPInterface has methods to work with MiddlewareTCP resources.
-type MiddlewareTCPInterface interface {
-	Create(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.CreateOptions) (*v1alpha1.MiddlewareTCP, error)
-	Update(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.UpdateOptions) (*v1alpha1.MiddlewareTCP, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.MiddlewareTCP, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.MiddlewareTCPList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.MiddlewareTCP, err error)
-	MiddlewareTCPExpansion
-}
-
-// middlewareTCPs implements MiddlewareTCPInterface
-type middlewareTCPs struct {
-	client rest.Interface
-	ns     string
-}
-
-// newMiddlewareTCPs returns a MiddlewareTCPs
-func newMiddlewareTCPs(c *TraefikContainousV1alpha1Client, namespace string) *middlewareTCPs {
-	return &middlewareTCPs{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the middlewareTCP, and returns the corresponding middlewareTCP object, and an error if there is any.
-func (c *middlewareTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	result = &v1alpha1.MiddlewareTCP{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of MiddlewareTCPs that match those selectors.
-func (c *middlewareTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.MiddlewareTCPList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.MiddlewareTCPList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested middlewareTCPs.
-func (c *middlewareTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a middlewareTCP and creates it.  Returns the server's representation of the middlewareTCP, and an error, if there is any.
-func (c *middlewareTCPs) Create(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.CreateOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	result = &v1alpha1.MiddlewareTCP{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(middlewareTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a middlewareTCP and updates it. Returns the server's representation of the middlewareTCP, and an error, if there is any.
-func (c *middlewareTCPs) Update(ctx context.Context, middlewareTCP *v1alpha1.MiddlewareTCP, opts v1.UpdateOptions) (result *v1alpha1.MiddlewareTCP, err error) {
-	result = &v1alpha1.MiddlewareTCP{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		Name(middlewareTCP.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(middlewareTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the middlewareTCP and deletes it. Returns an error if one occurs.
-func (c *middlewareTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *middlewareTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched middlewareTCP.
-func (c *middlewareTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.MiddlewareTCP, err error) {
-	result = &v1alpha1.MiddlewareTCP{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("middlewaretcps").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransport.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransport.go
deleted file mode 100644
index e8a07563d1e54854387dda421d18adf4210276c9..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransport.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// ServersTransportsGetter has a method to return a ServersTransportInterface.
-// A group's client should implement this interface.
-type ServersTransportsGetter interface {
-	ServersTransports(namespace string) ServersTransportInterface
-}
-
-// ServersTransportInterface has methods to work with ServersTransport resources.
-type ServersTransportInterface interface {
-	Create(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.CreateOptions) (*v1alpha1.ServersTransport, error)
-	Update(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.UpdateOptions) (*v1alpha1.ServersTransport, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ServersTransport, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ServersTransportList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransport, err error)
-	ServersTransportExpansion
-}
-
-// serversTransports implements ServersTransportInterface
-type serversTransports struct {
-	client rest.Interface
-	ns     string
-}
-
-// newServersTransports returns a ServersTransports
-func newServersTransports(c *TraefikContainousV1alpha1Client, namespace string) *serversTransports {
-	return &serversTransports{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the serversTransport, and returns the corresponding serversTransport object, and an error if there is any.
-func (c *serversTransports) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServersTransport, err error) {
-	result = &v1alpha1.ServersTransport{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of ServersTransports that match those selectors.
-func (c *serversTransports) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServersTransportList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.ServersTransportList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested serversTransports.
-func (c *serversTransports) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a serversTransport and creates it.  Returns the server's representation of the serversTransport, and an error, if there is any.
-func (c *serversTransports) Create(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.CreateOptions) (result *v1alpha1.ServersTransport, err error) {
-	result = &v1alpha1.ServersTransport{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(serversTransport).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a serversTransport and updates it. Returns the server's representation of the serversTransport, and an error, if there is any.
-func (c *serversTransports) Update(ctx context.Context, serversTransport *v1alpha1.ServersTransport, opts v1.UpdateOptions) (result *v1alpha1.ServersTransport, err error) {
-	result = &v1alpha1.ServersTransport{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		Name(serversTransport.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(serversTransport).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the serversTransport and deletes it. Returns an error if one occurs.
-func (c *serversTransports) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *serversTransports) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("serverstransports").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched serversTransport.
-func (c *serversTransports) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransport, err error) {
-	result = &v1alpha1.ServersTransport{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("serverstransports").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransporttcp.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransporttcp.go
deleted file mode 100644
index 4c0bc2a594654df1ae05f3a5ff685c7226c4e835..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/serverstransporttcp.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// ServersTransportTCPsGetter has a method to return a ServersTransportTCPInterface.
-// A group's client should implement this interface.
-type ServersTransportTCPsGetter interface {
-	ServersTransportTCPs(namespace string) ServersTransportTCPInterface
-}
-
-// ServersTransportTCPInterface has methods to work with ServersTransportTCP resources.
-type ServersTransportTCPInterface interface {
-	Create(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.CreateOptions) (*v1alpha1.ServersTransportTCP, error)
-	Update(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.UpdateOptions) (*v1alpha1.ServersTransportTCP, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ServersTransportTCP, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ServersTransportTCPList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransportTCP, err error)
-	ServersTransportTCPExpansion
-}
-
-// serversTransportTCPs implements ServersTransportTCPInterface
-type serversTransportTCPs struct {
-	client rest.Interface
-	ns     string
-}
-
-// newServersTransportTCPs returns a ServersTransportTCPs
-func newServersTransportTCPs(c *TraefikContainousV1alpha1Client, namespace string) *serversTransportTCPs {
-	return &serversTransportTCPs{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the serversTransportTCP, and returns the corresponding serversTransportTCP object, and an error if there is any.
-func (c *serversTransportTCPs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	result = &v1alpha1.ServersTransportTCP{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of ServersTransportTCPs that match those selectors.
-func (c *serversTransportTCPs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ServersTransportTCPList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.ServersTransportTCPList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested serversTransportTCPs.
-func (c *serversTransportTCPs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a serversTransportTCP and creates it.  Returns the server's representation of the serversTransportTCP, and an error, if there is any.
-func (c *serversTransportTCPs) Create(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.CreateOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	result = &v1alpha1.ServersTransportTCP{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(serversTransportTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a serversTransportTCP and updates it. Returns the server's representation of the serversTransportTCP, and an error, if there is any.
-func (c *serversTransportTCPs) Update(ctx context.Context, serversTransportTCP *v1alpha1.ServersTransportTCP, opts v1.UpdateOptions) (result *v1alpha1.ServersTransportTCP, err error) {
-	result = &v1alpha1.ServersTransportTCP{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		Name(serversTransportTCP.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(serversTransportTCP).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the serversTransportTCP and deletes it. Returns an error if one occurs.
-func (c *serversTransportTCPs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *serversTransportTCPs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched serversTransportTCP.
-func (c *serversTransportTCPs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ServersTransportTCP, err error) {
-	result = &v1alpha1.ServersTransportTCP{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("serverstransporttcps").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsoption.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsoption.go
deleted file mode 100644
index b0bbe2a0dd288eedb168976884d65389d70085aa..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsoption.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// TLSOptionsGetter has a method to return a TLSOptionInterface.
-// A group's client should implement this interface.
-type TLSOptionsGetter interface {
-	TLSOptions(namespace string) TLSOptionInterface
-}
-
-// TLSOptionInterface has methods to work with TLSOption resources.
-type TLSOptionInterface interface {
-	Create(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.CreateOptions) (*v1alpha1.TLSOption, error)
-	Update(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.UpdateOptions) (*v1alpha1.TLSOption, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.TLSOption, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.TLSOptionList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSOption, err error)
-	TLSOptionExpansion
-}
-
-// tLSOptions implements TLSOptionInterface
-type tLSOptions struct {
-	client rest.Interface
-	ns     string
-}
-
-// newTLSOptions returns a TLSOptions
-func newTLSOptions(c *TraefikContainousV1alpha1Client, namespace string) *tLSOptions {
-	return &tLSOptions{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the tLSOption, and returns the corresponding tLSOption object, and an error if there is any.
-func (c *tLSOptions) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TLSOption, err error) {
-	result = &v1alpha1.TLSOption{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of TLSOptions that match those selectors.
-func (c *tLSOptions) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TLSOptionList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.TLSOptionList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested tLSOptions.
-func (c *tLSOptions) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a tLSOption and creates it.  Returns the server's representation of the tLSOption, and an error, if there is any.
-func (c *tLSOptions) Create(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.CreateOptions) (result *v1alpha1.TLSOption, err error) {
-	result = &v1alpha1.TLSOption{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(tLSOption).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a tLSOption and updates it. Returns the server's representation of the tLSOption, and an error, if there is any.
-func (c *tLSOptions) Update(ctx context.Context, tLSOption *v1alpha1.TLSOption, opts v1.UpdateOptions) (result *v1alpha1.TLSOption, err error) {
-	result = &v1alpha1.TLSOption{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		Name(tLSOption.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(tLSOption).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the tLSOption and deletes it. Returns an error if one occurs.
-func (c *tLSOptions) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *tLSOptions) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched tLSOption.
-func (c *tLSOptions) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSOption, err error) {
-	result = &v1alpha1.TLSOption{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("tlsoptions").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsstore.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsstore.go
deleted file mode 100644
index 380da07968d3ff4f1d45206125fc86f68f8e6f88..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/tlsstore.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// TLSStoresGetter has a method to return a TLSStoreInterface.
-// A group's client should implement this interface.
-type TLSStoresGetter interface {
-	TLSStores(namespace string) TLSStoreInterface
-}
-
-// TLSStoreInterface has methods to work with TLSStore resources.
-type TLSStoreInterface interface {
-	Create(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.CreateOptions) (*v1alpha1.TLSStore, error)
-	Update(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.UpdateOptions) (*v1alpha1.TLSStore, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.TLSStore, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.TLSStoreList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSStore, err error)
-	TLSStoreExpansion
-}
-
-// tLSStores implements TLSStoreInterface
-type tLSStores struct {
-	client rest.Interface
-	ns     string
-}
-
-// newTLSStores returns a TLSStores
-func newTLSStores(c *TraefikContainousV1alpha1Client, namespace string) *tLSStores {
-	return &tLSStores{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the tLSStore, and returns the corresponding tLSStore object, and an error if there is any.
-func (c *tLSStores) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TLSStore, err error) {
-	result = &v1alpha1.TLSStore{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of TLSStores that match those selectors.
-func (c *tLSStores) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TLSStoreList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.TLSStoreList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested tLSStores.
-func (c *tLSStores) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a tLSStore and creates it.  Returns the server's representation of the tLSStore, and an error, if there is any.
-func (c *tLSStores) Create(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.CreateOptions) (result *v1alpha1.TLSStore, err error) {
-	result = &v1alpha1.TLSStore{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(tLSStore).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a tLSStore and updates it. Returns the server's representation of the tLSStore, and an error, if there is any.
-func (c *tLSStores) Update(ctx context.Context, tLSStore *v1alpha1.TLSStore, opts v1.UpdateOptions) (result *v1alpha1.TLSStore, err error) {
-	result = &v1alpha1.TLSStore{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		Name(tLSStore.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(tLSStore).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the tLSStore and deletes it. Returns an error if one occurs.
-func (c *tLSStores) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *tLSStores) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("tlsstores").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched tLSStore.
-func (c *tLSStores) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TLSStore, err error) {
-	result = &v1alpha1.TLSStore{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("tlsstores").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikcontainous_client.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikcontainous_client.go
deleted file mode 100644
index 6c2c5267dd2c08a76d2a853f2715c9cf2f8b80af..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikcontainous_client.go
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	rest "k8s.io/client-go/rest"
-)
-
-type TraefikContainousV1alpha1Interface interface {
-	RESTClient() rest.Interface
-	IngressRoutesGetter
-	IngressRouteTCPsGetter
-	IngressRouteUDPsGetter
-	MiddlewaresGetter
-	MiddlewareTCPsGetter
-	ServersTransportsGetter
-	ServersTransportTCPsGetter
-	TLSOptionsGetter
-	TLSStoresGetter
-	TraefikServicesGetter
-}
-
-// TraefikContainousV1alpha1Client is used to interact with features provided by the traefik.containo.us group.
-type TraefikContainousV1alpha1Client struct {
-	restClient rest.Interface
-}
-
-func (c *TraefikContainousV1alpha1Client) IngressRoutes(namespace string) IngressRouteInterface {
-	return newIngressRoutes(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) IngressRouteTCPs(namespace string) IngressRouteTCPInterface {
-	return newIngressRouteTCPs(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) IngressRouteUDPs(namespace string) IngressRouteUDPInterface {
-	return newIngressRouteUDPs(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) Middlewares(namespace string) MiddlewareInterface {
-	return newMiddlewares(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) MiddlewareTCPs(namespace string) MiddlewareTCPInterface {
-	return newMiddlewareTCPs(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) ServersTransports(namespace string) ServersTransportInterface {
-	return newServersTransports(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) ServersTransportTCPs(namespace string) ServersTransportTCPInterface {
-	return newServersTransportTCPs(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) TLSOptions(namespace string) TLSOptionInterface {
-	return newTLSOptions(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) TLSStores(namespace string) TLSStoreInterface {
-	return newTLSStores(c, namespace)
-}
-
-func (c *TraefikContainousV1alpha1Client) TraefikServices(namespace string) TraefikServiceInterface {
-	return newTraefikServices(c, namespace)
-}
-
-// NewForConfig creates a new TraefikContainousV1alpha1Client for the given config.
-func NewForConfig(c *rest.Config) (*TraefikContainousV1alpha1Client, error) {
-	config := *c
-	if err := setConfigDefaults(&config); err != nil {
-		return nil, err
-	}
-	client, err := rest.RESTClientFor(&config)
-	if err != nil {
-		return nil, err
-	}
-	return &TraefikContainousV1alpha1Client{client}, nil
-}
-
-// NewForConfigOrDie creates a new TraefikContainousV1alpha1Client for the given config and
-// panics if there is an error in the config.
-func NewForConfigOrDie(c *rest.Config) *TraefikContainousV1alpha1Client {
-	client, err := NewForConfig(c)
-	if err != nil {
-		panic(err)
-	}
-	return client
-}
-
-// New creates a new TraefikContainousV1alpha1Client for the given RESTClient.
-func New(c rest.Interface) *TraefikContainousV1alpha1Client {
-	return &TraefikContainousV1alpha1Client{c}
-}
-
-func setConfigDefaults(config *rest.Config) error {
-	gv := v1alpha1.SchemeGroupVersion
-	config.GroupVersion = &gv
-	config.APIPath = "/apis"
-	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
-
-	if config.UserAgent == "" {
-		config.UserAgent = rest.DefaultKubernetesUserAgent()
-	}
-
-	return nil
-}
-
-// RESTClient returns a RESTClient that is used to communicate
-// with API server by this client implementation.
-func (c *TraefikContainousV1alpha1Client) RESTClient() rest.Interface {
-	if c == nil {
-		return nil
-	}
-	return c.restClient
-}
diff --git a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikservice.go b/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikservice.go
deleted file mode 100644
index 89a38e66fe24cf3b7fdc6051670bac36f75936ad..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/clientset/versioned/typed/traefikcontainous/v1alpha1/traefikservice.go
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by client-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	"time"
-
-	scheme "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	types "k8s.io/apimachinery/pkg/types"
-	watch "k8s.io/apimachinery/pkg/watch"
-	rest "k8s.io/client-go/rest"
-)
-
-// TraefikServicesGetter has a method to return a TraefikServiceInterface.
-// A group's client should implement this interface.
-type TraefikServicesGetter interface {
-	TraefikServices(namespace string) TraefikServiceInterface
-}
-
-// TraefikServiceInterface has methods to work with TraefikService resources.
-type TraefikServiceInterface interface {
-	Create(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.CreateOptions) (*v1alpha1.TraefikService, error)
-	Update(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.UpdateOptions) (*v1alpha1.TraefikService, error)
-	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
-	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
-	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.TraefikService, error)
-	List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.TraefikServiceList, error)
-	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
-	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TraefikService, err error)
-	TraefikServiceExpansion
-}
-
-// traefikServices implements TraefikServiceInterface
-type traefikServices struct {
-	client rest.Interface
-	ns     string
-}
-
-// newTraefikServices returns a TraefikServices
-func newTraefikServices(c *TraefikContainousV1alpha1Client, namespace string) *traefikServices {
-	return &traefikServices{
-		client: c.RESTClient(),
-		ns:     namespace,
-	}
-}
-
-// Get takes name of the traefikService, and returns the corresponding traefikService object, and an error if there is any.
-func (c *traefikServices) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.TraefikService, err error) {
-	result = &v1alpha1.TraefikService{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of TraefikServices that match those selectors.
-func (c *traefikServices) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.TraefikServiceList, err error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	result = &v1alpha1.TraefikServiceList{}
-	err = c.client.Get().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested traefikServices.
-func (c *traefikServices) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
-	var timeout time.Duration
-	if opts.TimeoutSeconds != nil {
-		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
-	}
-	opts.Watch = true
-	return c.client.Get().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Watch(ctx)
-}
-
-// Create takes the representation of a traefikService and creates it.  Returns the server's representation of the traefikService, and an error, if there is any.
-func (c *traefikServices) Create(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.CreateOptions) (result *v1alpha1.TraefikService, err error) {
-	result = &v1alpha1.TraefikService{}
-	err = c.client.Post().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(traefikService).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Update takes the representation of a traefikService and updates it. Returns the server's representation of the traefikService, and an error, if there is any.
-func (c *traefikServices) Update(ctx context.Context, traefikService *v1alpha1.TraefikService, opts v1.UpdateOptions) (result *v1alpha1.TraefikService, err error) {
-	result = &v1alpha1.TraefikService{}
-	err = c.client.Put().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		Name(traefikService.Name).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(traefikService).
-		Do(ctx).
-		Into(result)
-	return
-}
-
-// Delete takes name of the traefikService and deletes it. Returns an error if one occurs.
-func (c *traefikServices) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		Name(name).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// DeleteCollection deletes a collection of objects.
-func (c *traefikServices) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
-	var timeout time.Duration
-	if listOpts.TimeoutSeconds != nil {
-		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
-	}
-	return c.client.Delete().
-		Namespace(c.ns).
-		Resource("traefikservices").
-		VersionedParams(&listOpts, scheme.ParameterCodec).
-		Timeout(timeout).
-		Body(&opts).
-		Do(ctx).
-		Error()
-}
-
-// Patch applies the patch and returns the patched traefikService.
-func (c *traefikServices) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.TraefikService, err error) {
-	result = &v1alpha1.TraefikService{}
-	err = c.client.Patch(pt).
-		Namespace(c.ns).
-		Resource("traefikservices").
-		Name(name).
-		SubResource(subresources...).
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Body(data).
-		Do(ctx).
-		Into(result)
-	return
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/factory.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/factory.go
index 5d8affbf385518d0f4ce52261c5e043c738fd3d4..75b79d658a0a0d6cabc4c402c96644ab7239bd6c 100644
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/factory.go
+++ b/pkg/provider/kubernetes/crd/generated/informers/externalversions/factory.go
@@ -33,7 +33,6 @@ import (
 
 	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
 	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	traefikcontainous "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous"
 	traefikio "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikio"
 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	runtime "k8s.io/apimachinery/pkg/runtime"
@@ -181,14 +180,9 @@ type SharedInformerFactory interface {
 	ForResource(resource schema.GroupVersionResource) (GenericInformer, error)
 	WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool
 
-	TraefikContainous() traefikcontainous.Interface
 	Traefik() traefikio.Interface
 }
 
-func (f *sharedInformerFactory) TraefikContainous() traefikcontainous.Interface {
-	return traefikcontainous.New(f, f.namespace, f.tweakListOptions)
-}
-
 func (f *sharedInformerFactory) Traefik() traefikio.Interface {
 	return traefikio.New(f, f.namespace, f.tweakListOptions)
 }
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/generic.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/generic.go
index 5d6d0b27e49026c16d3b81ca77dbb2edd566f38f..93ba25251959ef86ea6a5d330647e8cfdbb733d1 100644
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/generic.go
+++ b/pkg/provider/kubernetes/crd/generated/informers/externalversions/generic.go
@@ -29,8 +29,7 @@ package externalversions
 import (
 	"fmt"
 
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	traefikiov1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
+	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
 	schema "k8s.io/apimachinery/pkg/runtime/schema"
 	cache "k8s.io/client-go/tools/cache"
 )
@@ -61,48 +60,26 @@ func (f *genericInformer) Lister() cache.GenericLister {
 // TODO extend this to unknown resources with a client pool
 func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
 	switch resource {
-	// Group=traefik.containo.us, Version=v1alpha1
+	// Group=traefik.io, Version=v1alpha1
 	case v1alpha1.SchemeGroupVersion.WithResource("ingressroutes"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().IngressRoutes().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("ingressroutetcps"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().IngressRouteTCPs().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("ingressrouteudps"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().IngressRouteUDPs().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("middlewares"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().Middlewares().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("middlewaretcps"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().MiddlewareTCPs().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("serverstransports"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().ServersTransports().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("serverstransporttcps"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().ServersTransportTCPs().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("tlsoptions"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().TLSOptions().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("tlsstores"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().TLSStores().Informer()}, nil
-	case v1alpha1.SchemeGroupVersion.WithResource("traefikservices"):
-		return &genericInformer{resource: resource.GroupResource(), informer: f.TraefikContainous().V1alpha1().TraefikServices().Informer()}, nil
-
-		// Group=traefik.io, Version=v1alpha1
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("ingressroutes"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().IngressRoutes().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("ingressroutetcps"):
+	case v1alpha1.SchemeGroupVersion.WithResource("ingressroutetcps"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().IngressRouteTCPs().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("ingressrouteudps"):
+	case v1alpha1.SchemeGroupVersion.WithResource("ingressrouteudps"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().IngressRouteUDPs().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("middlewares"):
+	case v1alpha1.SchemeGroupVersion.WithResource("middlewares"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().Middlewares().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("middlewaretcps"):
+	case v1alpha1.SchemeGroupVersion.WithResource("middlewaretcps"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().MiddlewareTCPs().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("serverstransports"):
+	case v1alpha1.SchemeGroupVersion.WithResource("serverstransports"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().ServersTransports().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("serverstransporttcps"):
+	case v1alpha1.SchemeGroupVersion.WithResource("serverstransporttcps"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().ServersTransportTCPs().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("tlsoptions"):
+	case v1alpha1.SchemeGroupVersion.WithResource("tlsoptions"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().TLSOptions().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("tlsstores"):
+	case v1alpha1.SchemeGroupVersion.WithResource("tlsstores"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().TLSStores().Informer()}, nil
-	case traefikiov1alpha1.SchemeGroupVersion.WithResource("traefikservices"):
+	case v1alpha1.SchemeGroupVersion.WithResource("traefikservices"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Traefik().V1alpha1().TraefikServices().Informer()}, nil
 
 	}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/interface.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/interface.go
deleted file mode 100644
index 3165fac52a6c73e54eeb29e1832a3a730dc910fa..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/interface.go
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package traefikcontainous
-
-import (
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1"
-)
-
-// Interface provides access to each of this group's versions.
-type Interface interface {
-	// V1alpha1 provides access to shared informers for resources in V1alpha1.
-	V1alpha1() v1alpha1.Interface
-}
-
-type group struct {
-	factory          internalinterfaces.SharedInformerFactory
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-}
-
-// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
-	return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
-}
-
-// V1alpha1 returns a new v1alpha1.Interface.
-func (g *group) V1alpha1() v1alpha1.Interface {
-	return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroute.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroute.go
deleted file mode 100644
index d868ac320e848e620e1dcb8d8816d275c5815f82..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroute.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteInformer provides access to a shared informer and lister for
-// IngressRoutes.
-type IngressRouteInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.IngressRouteLister
-}
-
-type ingressRouteInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewIngressRouteInformer constructs a new informer for IngressRoute type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredIngressRouteInformer constructs a new informer for IngressRoute type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredIngressRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRoutes(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRoutes(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.IngressRoute{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *ingressRouteInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *ingressRouteInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.IngressRoute{}, f.defaultInformer)
-}
-
-func (f *ingressRouteInformer) Lister() v1alpha1.IngressRouteLister {
-	return v1alpha1.NewIngressRouteLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroutetcp.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroutetcp.go
deleted file mode 100644
index f01ccdc1eaf3c7507d2539698b68a86e7ed01f9f..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressroutetcp.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteTCPInformer provides access to a shared informer and lister for
-// IngressRouteTCPs.
-type IngressRouteTCPInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.IngressRouteTCPLister
-}
-
-type ingressRouteTCPInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteTCPInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredIngressRouteTCPInformer constructs a new informer for IngressRouteTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredIngressRouteTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRouteTCPs(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRouteTCPs(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.IngressRouteTCP{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *ingressRouteTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteTCPInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *ingressRouteTCPInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.IngressRouteTCP{}, f.defaultInformer)
-}
-
-func (f *ingressRouteTCPInformer) Lister() v1alpha1.IngressRouteTCPLister {
-	return v1alpha1.NewIngressRouteTCPLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressrouteudp.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressrouteudp.go
deleted file mode 100644
index 57ead9177664a82731d226d825fde26da8f7ff46..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/ingressrouteudp.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteUDPInformer provides access to a shared informer and lister for
-// IngressRouteUDPs.
-type IngressRouteUDPInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.IngressRouteUDPLister
-}
-
-type ingressRouteUDPInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteUDPInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredIngressRouteUDPInformer constructs a new informer for IngressRouteUDP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredIngressRouteUDPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRouteUDPs(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().IngressRouteUDPs(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.IngressRouteUDP{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *ingressRouteUDPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredIngressRouteUDPInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *ingressRouteUDPInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.IngressRouteUDP{}, f.defaultInformer)
-}
-
-func (f *ingressRouteUDPInformer) Lister() v1alpha1.IngressRouteUDPLister {
-	return v1alpha1.NewIngressRouteUDPLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/interface.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/interface.go
deleted file mode 100644
index a611e3c78e05147bb23ee8b4ce6f958cec0e0df3..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/interface.go
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-)
-
-// Interface provides access to all the informers in this group version.
-type Interface interface {
-	// IngressRoutes returns a IngressRouteInformer.
-	IngressRoutes() IngressRouteInformer
-	// IngressRouteTCPs returns a IngressRouteTCPInformer.
-	IngressRouteTCPs() IngressRouteTCPInformer
-	// IngressRouteUDPs returns a IngressRouteUDPInformer.
-	IngressRouteUDPs() IngressRouteUDPInformer
-	// Middlewares returns a MiddlewareInformer.
-	Middlewares() MiddlewareInformer
-	// MiddlewareTCPs returns a MiddlewareTCPInformer.
-	MiddlewareTCPs() MiddlewareTCPInformer
-	// ServersTransports returns a ServersTransportInformer.
-	ServersTransports() ServersTransportInformer
-	// ServersTransportTCPs returns a ServersTransportTCPInformer.
-	ServersTransportTCPs() ServersTransportTCPInformer
-	// TLSOptions returns a TLSOptionInformer.
-	TLSOptions() TLSOptionInformer
-	// TLSStores returns a TLSStoreInformer.
-	TLSStores() TLSStoreInformer
-	// TraefikServices returns a TraefikServiceInformer.
-	TraefikServices() TraefikServiceInformer
-}
-
-type version struct {
-	factory          internalinterfaces.SharedInformerFactory
-	namespace        string
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-}
-
-// New returns a new Interface.
-func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
-	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
-}
-
-// IngressRoutes returns a IngressRouteInformer.
-func (v *version) IngressRoutes() IngressRouteInformer {
-	return &ingressRouteInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// IngressRouteTCPs returns a IngressRouteTCPInformer.
-func (v *version) IngressRouteTCPs() IngressRouteTCPInformer {
-	return &ingressRouteTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// IngressRouteUDPs returns a IngressRouteUDPInformer.
-func (v *version) IngressRouteUDPs() IngressRouteUDPInformer {
-	return &ingressRouteUDPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// Middlewares returns a MiddlewareInformer.
-func (v *version) Middlewares() MiddlewareInformer {
-	return &middlewareInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// MiddlewareTCPs returns a MiddlewareTCPInformer.
-func (v *version) MiddlewareTCPs() MiddlewareTCPInformer {
-	return &middlewareTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// ServersTransports returns a ServersTransportInformer.
-func (v *version) ServersTransports() ServersTransportInformer {
-	return &serversTransportInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// ServersTransportTCPs returns a ServersTransportTCPInformer.
-func (v *version) ServersTransportTCPs() ServersTransportTCPInformer {
-	return &serversTransportTCPInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// TLSOptions returns a TLSOptionInformer.
-func (v *version) TLSOptions() TLSOptionInformer {
-	return &tLSOptionInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// TLSStores returns a TLSStoreInformer.
-func (v *version) TLSStores() TLSStoreInformer {
-	return &tLSStoreInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
-
-// TraefikServices returns a TraefikServiceInformer.
-func (v *version) TraefikServices() TraefikServiceInformer {
-	return &traefikServiceInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middleware.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middleware.go
deleted file mode 100644
index d557121d1b1c0055f9a8dd9b61b04cdc62728f21..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middleware.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// MiddlewareInformer provides access to a shared informer and lister for
-// Middlewares.
-type MiddlewareInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.MiddlewareLister
-}
-
-type middlewareInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewMiddlewareInformer constructs a new informer for Middleware type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredMiddlewareInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredMiddlewareInformer constructs a new informer for Middleware type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredMiddlewareInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().Middlewares(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().Middlewares(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.Middleware{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *middlewareInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredMiddlewareInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *middlewareInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.Middleware{}, f.defaultInformer)
-}
-
-func (f *middlewareInformer) Lister() v1alpha1.MiddlewareLister {
-	return v1alpha1.NewMiddlewareLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middlewaretcp.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middlewaretcp.go
deleted file mode 100644
index 13376ce75267362b5f2f7b4a36bd1314df1a947b..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/middlewaretcp.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// MiddlewareTCPInformer provides access to a shared informer and lister for
-// MiddlewareTCPs.
-type MiddlewareTCPInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.MiddlewareTCPLister
-}
-
-type middlewareTCPInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredMiddlewareTCPInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredMiddlewareTCPInformer constructs a new informer for MiddlewareTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredMiddlewareTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().MiddlewareTCPs(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().MiddlewareTCPs(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.MiddlewareTCP{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *middlewareTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredMiddlewareTCPInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *middlewareTCPInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.MiddlewareTCP{}, f.defaultInformer)
-}
-
-func (f *middlewareTCPInformer) Lister() v1alpha1.MiddlewareTCPLister {
-	return v1alpha1.NewMiddlewareTCPLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransport.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransport.go
deleted file mode 100644
index b4586ba07d721282da566d5885a02e8847509fc9..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransport.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// ServersTransportInformer provides access to a shared informer and lister for
-// ServersTransports.
-type ServersTransportInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.ServersTransportLister
-}
-
-type serversTransportInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewServersTransportInformer constructs a new informer for ServersTransport type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredServersTransportInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredServersTransportInformer constructs a new informer for ServersTransport type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredServersTransportInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().ServersTransports(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().ServersTransports(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.ServersTransport{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *serversTransportInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredServersTransportInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *serversTransportInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.ServersTransport{}, f.defaultInformer)
-}
-
-func (f *serversTransportInformer) Lister() v1alpha1.ServersTransportLister {
-	return v1alpha1.NewServersTransportLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransporttcp.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransporttcp.go
deleted file mode 100644
index 4f20f101107367ee95f32db09e92f40d5f627db6..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/serverstransporttcp.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// ServersTransportTCPInformer provides access to a shared informer and lister for
-// ServersTransportTCPs.
-type ServersTransportTCPInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.ServersTransportTCPLister
-}
-
-type serversTransportTCPInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredServersTransportTCPInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredServersTransportTCPInformer constructs a new informer for ServersTransportTCP type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredServersTransportTCPInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().ServersTransportTCPs(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().ServersTransportTCPs(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.ServersTransportTCP{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *serversTransportTCPInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredServersTransportTCPInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *serversTransportTCPInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.ServersTransportTCP{}, f.defaultInformer)
-}
-
-func (f *serversTransportTCPInformer) Lister() v1alpha1.ServersTransportTCPLister {
-	return v1alpha1.NewServersTransportTCPLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsoption.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsoption.go
deleted file mode 100644
index a2890c28bd8068ebacdafeaa7096ae1af9323083..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsoption.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// TLSOptionInformer provides access to a shared informer and lister for
-// TLSOptions.
-type TLSOptionInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.TLSOptionLister
-}
-
-type tLSOptionInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewTLSOptionInformer constructs a new informer for TLSOption type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredTLSOptionInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredTLSOptionInformer constructs a new informer for TLSOption type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredTLSOptionInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TLSOptions(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TLSOptions(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.TLSOption{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *tLSOptionInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredTLSOptionInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *tLSOptionInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.TLSOption{}, f.defaultInformer)
-}
-
-func (f *tLSOptionInformer) Lister() v1alpha1.TLSOptionLister {
-	return v1alpha1.NewTLSOptionLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsstore.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsstore.go
deleted file mode 100644
index d350945e852340bd5da059c2c1cb85f4ef8f2807..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/tlsstore.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// TLSStoreInformer provides access to a shared informer and lister for
-// TLSStores.
-type TLSStoreInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.TLSStoreLister
-}
-
-type tLSStoreInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewTLSStoreInformer constructs a new informer for TLSStore type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredTLSStoreInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredTLSStoreInformer constructs a new informer for TLSStore type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredTLSStoreInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TLSStores(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TLSStores(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.TLSStore{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *tLSStoreInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredTLSStoreInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *tLSStoreInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.TLSStore{}, f.defaultInformer)
-}
-
-func (f *tLSStoreInformer) Lister() v1alpha1.TLSStoreLister {
-	return v1alpha1.NewTLSStoreLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/traefikservice.go b/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/traefikservice.go
deleted file mode 100644
index 2db4e558f06c96713dc36d93663c0748241bf2e6..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/informers/externalversions/traefikcontainous/v1alpha1/traefikservice.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by informer-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	"context"
-	time "time"
-
-	versioned "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned"
-	internalinterfaces "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/informers/externalversions/internalinterfaces"
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1"
-	traefikcontainousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	watch "k8s.io/apimachinery/pkg/watch"
-	cache "k8s.io/client-go/tools/cache"
-)
-
-// TraefikServiceInformer provides access to a shared informer and lister for
-// TraefikServices.
-type TraefikServiceInformer interface {
-	Informer() cache.SharedIndexInformer
-	Lister() v1alpha1.TraefikServiceLister
-}
-
-type traefikServiceInformer struct {
-	factory          internalinterfaces.SharedInformerFactory
-	tweakListOptions internalinterfaces.TweakListOptionsFunc
-	namespace        string
-}
-
-// NewTraefikServiceInformer constructs a new informer for TraefikService type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
-	return NewFilteredTraefikServiceInformer(client, namespace, resyncPeriod, indexers, nil)
-}
-
-// NewFilteredTraefikServiceInformer constructs a new informer for TraefikService type.
-// Always prefer using an informer factory to get a shared informer instead of getting an independent
-// one. This reduces memory footprint and number of connections to the server.
-func NewFilteredTraefikServiceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
-	return cache.NewSharedIndexInformer(
-		&cache.ListWatch{
-			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TraefikServices(namespace).List(context.TODO(), options)
-			},
-			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
-				if tweakListOptions != nil {
-					tweakListOptions(&options)
-				}
-				return client.TraefikContainousV1alpha1().TraefikServices(namespace).Watch(context.TODO(), options)
-			},
-		},
-		&traefikcontainousv1alpha1.TraefikService{},
-		resyncPeriod,
-		indexers,
-	)
-}
-
-func (f *traefikServiceInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
-	return NewFilteredTraefikServiceInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
-}
-
-func (f *traefikServiceInformer) Informer() cache.SharedIndexInformer {
-	return f.factory.InformerFor(&traefikcontainousv1alpha1.TraefikService{}, f.defaultInformer)
-}
-
-func (f *traefikServiceInformer) Lister() v1alpha1.TraefikServiceLister {
-	return v1alpha1.NewTraefikServiceLister(f.Informer().GetIndexer())
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/expansion_generated.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/expansion_generated.go
deleted file mode 100644
index a8df13373bb093b8716be3d77d86f523c5c55f0d..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/expansion_generated.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-// IngressRouteListerExpansion allows custom methods to be added to
-// IngressRouteLister.
-type IngressRouteListerExpansion interface{}
-
-// IngressRouteNamespaceListerExpansion allows custom methods to be added to
-// IngressRouteNamespaceLister.
-type IngressRouteNamespaceListerExpansion interface{}
-
-// IngressRouteTCPListerExpansion allows custom methods to be added to
-// IngressRouteTCPLister.
-type IngressRouteTCPListerExpansion interface{}
-
-// IngressRouteTCPNamespaceListerExpansion allows custom methods to be added to
-// IngressRouteTCPNamespaceLister.
-type IngressRouteTCPNamespaceListerExpansion interface{}
-
-// IngressRouteUDPListerExpansion allows custom methods to be added to
-// IngressRouteUDPLister.
-type IngressRouteUDPListerExpansion interface{}
-
-// IngressRouteUDPNamespaceListerExpansion allows custom methods to be added to
-// IngressRouteUDPNamespaceLister.
-type IngressRouteUDPNamespaceListerExpansion interface{}
-
-// MiddlewareListerExpansion allows custom methods to be added to
-// MiddlewareLister.
-type MiddlewareListerExpansion interface{}
-
-// MiddlewareNamespaceListerExpansion allows custom methods to be added to
-// MiddlewareNamespaceLister.
-type MiddlewareNamespaceListerExpansion interface{}
-
-// MiddlewareTCPListerExpansion allows custom methods to be added to
-// MiddlewareTCPLister.
-type MiddlewareTCPListerExpansion interface{}
-
-// MiddlewareTCPNamespaceListerExpansion allows custom methods to be added to
-// MiddlewareTCPNamespaceLister.
-type MiddlewareTCPNamespaceListerExpansion interface{}
-
-// ServersTransportListerExpansion allows custom methods to be added to
-// ServersTransportLister.
-type ServersTransportListerExpansion interface{}
-
-// ServersTransportNamespaceListerExpansion allows custom methods to be added to
-// ServersTransportNamespaceLister.
-type ServersTransportNamespaceListerExpansion interface{}
-
-// ServersTransportTCPListerExpansion allows custom methods to be added to
-// ServersTransportTCPLister.
-type ServersTransportTCPListerExpansion interface{}
-
-// ServersTransportTCPNamespaceListerExpansion allows custom methods to be added to
-// ServersTransportTCPNamespaceLister.
-type ServersTransportTCPNamespaceListerExpansion interface{}
-
-// TLSOptionListerExpansion allows custom methods to be added to
-// TLSOptionLister.
-type TLSOptionListerExpansion interface{}
-
-// TLSOptionNamespaceListerExpansion allows custom methods to be added to
-// TLSOptionNamespaceLister.
-type TLSOptionNamespaceListerExpansion interface{}
-
-// TLSStoreListerExpansion allows custom methods to be added to
-// TLSStoreLister.
-type TLSStoreListerExpansion interface{}
-
-// TLSStoreNamespaceListerExpansion allows custom methods to be added to
-// TLSStoreNamespaceLister.
-type TLSStoreNamespaceListerExpansion interface{}
-
-// TraefikServiceListerExpansion allows custom methods to be added to
-// TraefikServiceLister.
-type TraefikServiceListerExpansion interface{}
-
-// TraefikServiceNamespaceListerExpansion allows custom methods to be added to
-// TraefikServiceNamespaceLister.
-type TraefikServiceNamespaceListerExpansion interface{}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroute.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroute.go
deleted file mode 100644
index 71efe40cf7c70515b357dbd7dcced485896ae60a..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroute.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteLister helps list IngressRoutes.
-// All objects returned here must be treated as read-only.
-type IngressRouteLister interface {
-	// List lists all IngressRoutes in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRoute, err error)
-	// IngressRoutes returns an object that can list and get IngressRoutes.
-	IngressRoutes(namespace string) IngressRouteNamespaceLister
-	IngressRouteListerExpansion
-}
-
-// ingressRouteLister implements the IngressRouteLister interface.
-type ingressRouteLister struct {
-	indexer cache.Indexer
-}
-
-// NewIngressRouteLister returns a new IngressRouteLister.
-func NewIngressRouteLister(indexer cache.Indexer) IngressRouteLister {
-	return &ingressRouteLister{indexer: indexer}
-}
-
-// List lists all IngressRoutes in the indexer.
-func (s *ingressRouteLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRoute, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRoute))
-	})
-	return ret, err
-}
-
-// IngressRoutes returns an object that can list and get IngressRoutes.
-func (s *ingressRouteLister) IngressRoutes(namespace string) IngressRouteNamespaceLister {
-	return ingressRouteNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// IngressRouteNamespaceLister helps list and get IngressRoutes.
-// All objects returned here must be treated as read-only.
-type IngressRouteNamespaceLister interface {
-	// List lists all IngressRoutes in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRoute, err error)
-	// Get retrieves the IngressRoute from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.IngressRoute, error)
-	IngressRouteNamespaceListerExpansion
-}
-
-// ingressRouteNamespaceLister implements the IngressRouteNamespaceLister
-// interface.
-type ingressRouteNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all IngressRoutes in the indexer for a given namespace.
-func (s ingressRouteNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRoute, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRoute))
-	})
-	return ret, err
-}
-
-// Get retrieves the IngressRoute from the indexer for a given namespace and name.
-func (s ingressRouteNamespaceLister) Get(name string) (*v1alpha1.IngressRoute, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("ingressroute"), name)
-	}
-	return obj.(*v1alpha1.IngressRoute), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroutetcp.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroutetcp.go
deleted file mode 100644
index ea99df1986d09da5720672ea16f7c366e32e53d1..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressroutetcp.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteTCPLister helps list IngressRouteTCPs.
-// All objects returned here must be treated as read-only.
-type IngressRouteTCPLister interface {
-	// List lists all IngressRouteTCPs in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRouteTCP, err error)
-	// IngressRouteTCPs returns an object that can list and get IngressRouteTCPs.
-	IngressRouteTCPs(namespace string) IngressRouteTCPNamespaceLister
-	IngressRouteTCPListerExpansion
-}
-
-// ingressRouteTCPLister implements the IngressRouteTCPLister interface.
-type ingressRouteTCPLister struct {
-	indexer cache.Indexer
-}
-
-// NewIngressRouteTCPLister returns a new IngressRouteTCPLister.
-func NewIngressRouteTCPLister(indexer cache.Indexer) IngressRouteTCPLister {
-	return &ingressRouteTCPLister{indexer: indexer}
-}
-
-// List lists all IngressRouteTCPs in the indexer.
-func (s *ingressRouteTCPLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRouteTCP, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRouteTCP))
-	})
-	return ret, err
-}
-
-// IngressRouteTCPs returns an object that can list and get IngressRouteTCPs.
-func (s *ingressRouteTCPLister) IngressRouteTCPs(namespace string) IngressRouteTCPNamespaceLister {
-	return ingressRouteTCPNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// IngressRouteTCPNamespaceLister helps list and get IngressRouteTCPs.
-// All objects returned here must be treated as read-only.
-type IngressRouteTCPNamespaceLister interface {
-	// List lists all IngressRouteTCPs in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRouteTCP, err error)
-	// Get retrieves the IngressRouteTCP from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.IngressRouteTCP, error)
-	IngressRouteTCPNamespaceListerExpansion
-}
-
-// ingressRouteTCPNamespaceLister implements the IngressRouteTCPNamespaceLister
-// interface.
-type ingressRouteTCPNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all IngressRouteTCPs in the indexer for a given namespace.
-func (s ingressRouteTCPNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRouteTCP, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRouteTCP))
-	})
-	return ret, err
-}
-
-// Get retrieves the IngressRouteTCP from the indexer for a given namespace and name.
-func (s ingressRouteTCPNamespaceLister) Get(name string) (*v1alpha1.IngressRouteTCP, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("ingressroutetcp"), name)
-	}
-	return obj.(*v1alpha1.IngressRouteTCP), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressrouteudp.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressrouteudp.go
deleted file mode 100644
index 36f916608e42e1b097cc924600b02daf5188a3f9..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/ingressrouteudp.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// IngressRouteUDPLister helps list IngressRouteUDPs.
-// All objects returned here must be treated as read-only.
-type IngressRouteUDPLister interface {
-	// List lists all IngressRouteUDPs in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRouteUDP, err error)
-	// IngressRouteUDPs returns an object that can list and get IngressRouteUDPs.
-	IngressRouteUDPs(namespace string) IngressRouteUDPNamespaceLister
-	IngressRouteUDPListerExpansion
-}
-
-// ingressRouteUDPLister implements the IngressRouteUDPLister interface.
-type ingressRouteUDPLister struct {
-	indexer cache.Indexer
-}
-
-// NewIngressRouteUDPLister returns a new IngressRouteUDPLister.
-func NewIngressRouteUDPLister(indexer cache.Indexer) IngressRouteUDPLister {
-	return &ingressRouteUDPLister{indexer: indexer}
-}
-
-// List lists all IngressRouteUDPs in the indexer.
-func (s *ingressRouteUDPLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRouteUDP, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRouteUDP))
-	})
-	return ret, err
-}
-
-// IngressRouteUDPs returns an object that can list and get IngressRouteUDPs.
-func (s *ingressRouteUDPLister) IngressRouteUDPs(namespace string) IngressRouteUDPNamespaceLister {
-	return ingressRouteUDPNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// IngressRouteUDPNamespaceLister helps list and get IngressRouteUDPs.
-// All objects returned here must be treated as read-only.
-type IngressRouteUDPNamespaceLister interface {
-	// List lists all IngressRouteUDPs in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.IngressRouteUDP, err error)
-	// Get retrieves the IngressRouteUDP from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.IngressRouteUDP, error)
-	IngressRouteUDPNamespaceListerExpansion
-}
-
-// ingressRouteUDPNamespaceLister implements the IngressRouteUDPNamespaceLister
-// interface.
-type ingressRouteUDPNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all IngressRouteUDPs in the indexer for a given namespace.
-func (s ingressRouteUDPNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.IngressRouteUDP, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.IngressRouteUDP))
-	})
-	return ret, err
-}
-
-// Get retrieves the IngressRouteUDP from the indexer for a given namespace and name.
-func (s ingressRouteUDPNamespaceLister) Get(name string) (*v1alpha1.IngressRouteUDP, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("ingressrouteudp"), name)
-	}
-	return obj.(*v1alpha1.IngressRouteUDP), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middleware.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middleware.go
deleted file mode 100644
index 51027b1c94a8883f1f0fca804990ff8f56073b4a..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middleware.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// MiddlewareLister helps list Middlewares.
-// All objects returned here must be treated as read-only.
-type MiddlewareLister interface {
-	// List lists all Middlewares in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.Middleware, err error)
-	// Middlewares returns an object that can list and get Middlewares.
-	Middlewares(namespace string) MiddlewareNamespaceLister
-	MiddlewareListerExpansion
-}
-
-// middlewareLister implements the MiddlewareLister interface.
-type middlewareLister struct {
-	indexer cache.Indexer
-}
-
-// NewMiddlewareLister returns a new MiddlewareLister.
-func NewMiddlewareLister(indexer cache.Indexer) MiddlewareLister {
-	return &middlewareLister{indexer: indexer}
-}
-
-// List lists all Middlewares in the indexer.
-func (s *middlewareLister) List(selector labels.Selector) (ret []*v1alpha1.Middleware, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.Middleware))
-	})
-	return ret, err
-}
-
-// Middlewares returns an object that can list and get Middlewares.
-func (s *middlewareLister) Middlewares(namespace string) MiddlewareNamespaceLister {
-	return middlewareNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// MiddlewareNamespaceLister helps list and get Middlewares.
-// All objects returned here must be treated as read-only.
-type MiddlewareNamespaceLister interface {
-	// List lists all Middlewares in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.Middleware, err error)
-	// Get retrieves the Middleware from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.Middleware, error)
-	MiddlewareNamespaceListerExpansion
-}
-
-// middlewareNamespaceLister implements the MiddlewareNamespaceLister
-// interface.
-type middlewareNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all Middlewares in the indexer for a given namespace.
-func (s middlewareNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.Middleware, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.Middleware))
-	})
-	return ret, err
-}
-
-// Get retrieves the Middleware from the indexer for a given namespace and name.
-func (s middlewareNamespaceLister) Get(name string) (*v1alpha1.Middleware, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("middleware"), name)
-	}
-	return obj.(*v1alpha1.Middleware), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middlewaretcp.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middlewaretcp.go
deleted file mode 100644
index 485f3573431f4aff7bba1835ec82a820463c7c12..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/middlewaretcp.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// MiddlewareTCPLister helps list MiddlewareTCPs.
-// All objects returned here must be treated as read-only.
-type MiddlewareTCPLister interface {
-	// List lists all MiddlewareTCPs in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.MiddlewareTCP, err error)
-	// MiddlewareTCPs returns an object that can list and get MiddlewareTCPs.
-	MiddlewareTCPs(namespace string) MiddlewareTCPNamespaceLister
-	MiddlewareTCPListerExpansion
-}
-
-// middlewareTCPLister implements the MiddlewareTCPLister interface.
-type middlewareTCPLister struct {
-	indexer cache.Indexer
-}
-
-// NewMiddlewareTCPLister returns a new MiddlewareTCPLister.
-func NewMiddlewareTCPLister(indexer cache.Indexer) MiddlewareTCPLister {
-	return &middlewareTCPLister{indexer: indexer}
-}
-
-// List lists all MiddlewareTCPs in the indexer.
-func (s *middlewareTCPLister) List(selector labels.Selector) (ret []*v1alpha1.MiddlewareTCP, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.MiddlewareTCP))
-	})
-	return ret, err
-}
-
-// MiddlewareTCPs returns an object that can list and get MiddlewareTCPs.
-func (s *middlewareTCPLister) MiddlewareTCPs(namespace string) MiddlewareTCPNamespaceLister {
-	return middlewareTCPNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// MiddlewareTCPNamespaceLister helps list and get MiddlewareTCPs.
-// All objects returned here must be treated as read-only.
-type MiddlewareTCPNamespaceLister interface {
-	// List lists all MiddlewareTCPs in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.MiddlewareTCP, err error)
-	// Get retrieves the MiddlewareTCP from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.MiddlewareTCP, error)
-	MiddlewareTCPNamespaceListerExpansion
-}
-
-// middlewareTCPNamespaceLister implements the MiddlewareTCPNamespaceLister
-// interface.
-type middlewareTCPNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all MiddlewareTCPs in the indexer for a given namespace.
-func (s middlewareTCPNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.MiddlewareTCP, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.MiddlewareTCP))
-	})
-	return ret, err
-}
-
-// Get retrieves the MiddlewareTCP from the indexer for a given namespace and name.
-func (s middlewareTCPNamespaceLister) Get(name string) (*v1alpha1.MiddlewareTCP, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("middlewaretcp"), name)
-	}
-	return obj.(*v1alpha1.MiddlewareTCP), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransport.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransport.go
deleted file mode 100644
index 7cc7579209143a6ffe48db80858f2b77b7f629e3..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransport.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// ServersTransportLister helps list ServersTransports.
-// All objects returned here must be treated as read-only.
-type ServersTransportLister interface {
-	// List lists all ServersTransports in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.ServersTransport, err error)
-	// ServersTransports returns an object that can list and get ServersTransports.
-	ServersTransports(namespace string) ServersTransportNamespaceLister
-	ServersTransportListerExpansion
-}
-
-// serversTransportLister implements the ServersTransportLister interface.
-type serversTransportLister struct {
-	indexer cache.Indexer
-}
-
-// NewServersTransportLister returns a new ServersTransportLister.
-func NewServersTransportLister(indexer cache.Indexer) ServersTransportLister {
-	return &serversTransportLister{indexer: indexer}
-}
-
-// List lists all ServersTransports in the indexer.
-func (s *serversTransportLister) List(selector labels.Selector) (ret []*v1alpha1.ServersTransport, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.ServersTransport))
-	})
-	return ret, err
-}
-
-// ServersTransports returns an object that can list and get ServersTransports.
-func (s *serversTransportLister) ServersTransports(namespace string) ServersTransportNamespaceLister {
-	return serversTransportNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// ServersTransportNamespaceLister helps list and get ServersTransports.
-// All objects returned here must be treated as read-only.
-type ServersTransportNamespaceLister interface {
-	// List lists all ServersTransports in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.ServersTransport, err error)
-	// Get retrieves the ServersTransport from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.ServersTransport, error)
-	ServersTransportNamespaceListerExpansion
-}
-
-// serversTransportNamespaceLister implements the ServersTransportNamespaceLister
-// interface.
-type serversTransportNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all ServersTransports in the indexer for a given namespace.
-func (s serversTransportNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.ServersTransport, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.ServersTransport))
-	})
-	return ret, err
-}
-
-// Get retrieves the ServersTransport from the indexer for a given namespace and name.
-func (s serversTransportNamespaceLister) Get(name string) (*v1alpha1.ServersTransport, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("serverstransport"), name)
-	}
-	return obj.(*v1alpha1.ServersTransport), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransporttcp.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransporttcp.go
deleted file mode 100644
index 06fb011edb66c009d8682e7979a177b8ae6bc195..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/serverstransporttcp.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// ServersTransportTCPLister helps list ServersTransportTCPs.
-// All objects returned here must be treated as read-only.
-type ServersTransportTCPLister interface {
-	// List lists all ServersTransportTCPs in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.ServersTransportTCP, err error)
-	// ServersTransportTCPs returns an object that can list and get ServersTransportTCPs.
-	ServersTransportTCPs(namespace string) ServersTransportTCPNamespaceLister
-	ServersTransportTCPListerExpansion
-}
-
-// serversTransportTCPLister implements the ServersTransportTCPLister interface.
-type serversTransportTCPLister struct {
-	indexer cache.Indexer
-}
-
-// NewServersTransportTCPLister returns a new ServersTransportTCPLister.
-func NewServersTransportTCPLister(indexer cache.Indexer) ServersTransportTCPLister {
-	return &serversTransportTCPLister{indexer: indexer}
-}
-
-// List lists all ServersTransportTCPs in the indexer.
-func (s *serversTransportTCPLister) List(selector labels.Selector) (ret []*v1alpha1.ServersTransportTCP, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.ServersTransportTCP))
-	})
-	return ret, err
-}
-
-// ServersTransportTCPs returns an object that can list and get ServersTransportTCPs.
-func (s *serversTransportTCPLister) ServersTransportTCPs(namespace string) ServersTransportTCPNamespaceLister {
-	return serversTransportTCPNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// ServersTransportTCPNamespaceLister helps list and get ServersTransportTCPs.
-// All objects returned here must be treated as read-only.
-type ServersTransportTCPNamespaceLister interface {
-	// List lists all ServersTransportTCPs in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.ServersTransportTCP, err error)
-	// Get retrieves the ServersTransportTCP from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.ServersTransportTCP, error)
-	ServersTransportTCPNamespaceListerExpansion
-}
-
-// serversTransportTCPNamespaceLister implements the ServersTransportTCPNamespaceLister
-// interface.
-type serversTransportTCPNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all ServersTransportTCPs in the indexer for a given namespace.
-func (s serversTransportTCPNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.ServersTransportTCP, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.ServersTransportTCP))
-	})
-	return ret, err
-}
-
-// Get retrieves the ServersTransportTCP from the indexer for a given namespace and name.
-func (s serversTransportTCPNamespaceLister) Get(name string) (*v1alpha1.ServersTransportTCP, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("serverstransporttcp"), name)
-	}
-	return obj.(*v1alpha1.ServersTransportTCP), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsoption.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsoption.go
deleted file mode 100644
index 997cb346afa2e34e17516d0236f4315eaba99545..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsoption.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// TLSOptionLister helps list TLSOptions.
-// All objects returned here must be treated as read-only.
-type TLSOptionLister interface {
-	// List lists all TLSOptions in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TLSOption, err error)
-	// TLSOptions returns an object that can list and get TLSOptions.
-	TLSOptions(namespace string) TLSOptionNamespaceLister
-	TLSOptionListerExpansion
-}
-
-// tLSOptionLister implements the TLSOptionLister interface.
-type tLSOptionLister struct {
-	indexer cache.Indexer
-}
-
-// NewTLSOptionLister returns a new TLSOptionLister.
-func NewTLSOptionLister(indexer cache.Indexer) TLSOptionLister {
-	return &tLSOptionLister{indexer: indexer}
-}
-
-// List lists all TLSOptions in the indexer.
-func (s *tLSOptionLister) List(selector labels.Selector) (ret []*v1alpha1.TLSOption, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TLSOption))
-	})
-	return ret, err
-}
-
-// TLSOptions returns an object that can list and get TLSOptions.
-func (s *tLSOptionLister) TLSOptions(namespace string) TLSOptionNamespaceLister {
-	return tLSOptionNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// TLSOptionNamespaceLister helps list and get TLSOptions.
-// All objects returned here must be treated as read-only.
-type TLSOptionNamespaceLister interface {
-	// List lists all TLSOptions in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TLSOption, err error)
-	// Get retrieves the TLSOption from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.TLSOption, error)
-	TLSOptionNamespaceListerExpansion
-}
-
-// tLSOptionNamespaceLister implements the TLSOptionNamespaceLister
-// interface.
-type tLSOptionNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all TLSOptions in the indexer for a given namespace.
-func (s tLSOptionNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.TLSOption, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TLSOption))
-	})
-	return ret, err
-}
-
-// Get retrieves the TLSOption from the indexer for a given namespace and name.
-func (s tLSOptionNamespaceLister) Get(name string) (*v1alpha1.TLSOption, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("tlsoption"), name)
-	}
-	return obj.(*v1alpha1.TLSOption), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsstore.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsstore.go
deleted file mode 100644
index ff74680bdf13cd7e27c4edab47a2db0c059caa56..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/tlsstore.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// TLSStoreLister helps list TLSStores.
-// All objects returned here must be treated as read-only.
-type TLSStoreLister interface {
-	// List lists all TLSStores in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TLSStore, err error)
-	// TLSStores returns an object that can list and get TLSStores.
-	TLSStores(namespace string) TLSStoreNamespaceLister
-	TLSStoreListerExpansion
-}
-
-// tLSStoreLister implements the TLSStoreLister interface.
-type tLSStoreLister struct {
-	indexer cache.Indexer
-}
-
-// NewTLSStoreLister returns a new TLSStoreLister.
-func NewTLSStoreLister(indexer cache.Indexer) TLSStoreLister {
-	return &tLSStoreLister{indexer: indexer}
-}
-
-// List lists all TLSStores in the indexer.
-func (s *tLSStoreLister) List(selector labels.Selector) (ret []*v1alpha1.TLSStore, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TLSStore))
-	})
-	return ret, err
-}
-
-// TLSStores returns an object that can list and get TLSStores.
-func (s *tLSStoreLister) TLSStores(namespace string) TLSStoreNamespaceLister {
-	return tLSStoreNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// TLSStoreNamespaceLister helps list and get TLSStores.
-// All objects returned here must be treated as read-only.
-type TLSStoreNamespaceLister interface {
-	// List lists all TLSStores in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TLSStore, err error)
-	// Get retrieves the TLSStore from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.TLSStore, error)
-	TLSStoreNamespaceListerExpansion
-}
-
-// tLSStoreNamespaceLister implements the TLSStoreNamespaceLister
-// interface.
-type tLSStoreNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all TLSStores in the indexer for a given namespace.
-func (s tLSStoreNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.TLSStore, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TLSStore))
-	})
-	return ret, err
-}
-
-// Get retrieves the TLSStore from the indexer for a given namespace and name.
-func (s tLSStoreNamespaceLister) Get(name string) (*v1alpha1.TLSStore, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("tlsstore"), name)
-	}
-	return obj.(*v1alpha1.TLSStore), nil
-}
diff --git a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/traefikservice.go b/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/traefikservice.go
deleted file mode 100644
index d0d722314691a0d09d31a12ed9706211d052c771..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/generated/listers/traefikcontainous/v1alpha1/traefikservice.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by lister-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	v1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"k8s.io/apimachinery/pkg/api/errors"
-	"k8s.io/apimachinery/pkg/labels"
-	"k8s.io/client-go/tools/cache"
-)
-
-// TraefikServiceLister helps list TraefikServices.
-// All objects returned here must be treated as read-only.
-type TraefikServiceLister interface {
-	// List lists all TraefikServices in the indexer.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TraefikService, err error)
-	// TraefikServices returns an object that can list and get TraefikServices.
-	TraefikServices(namespace string) TraefikServiceNamespaceLister
-	TraefikServiceListerExpansion
-}
-
-// traefikServiceLister implements the TraefikServiceLister interface.
-type traefikServiceLister struct {
-	indexer cache.Indexer
-}
-
-// NewTraefikServiceLister returns a new TraefikServiceLister.
-func NewTraefikServiceLister(indexer cache.Indexer) TraefikServiceLister {
-	return &traefikServiceLister{indexer: indexer}
-}
-
-// List lists all TraefikServices in the indexer.
-func (s *traefikServiceLister) List(selector labels.Selector) (ret []*v1alpha1.TraefikService, err error) {
-	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TraefikService))
-	})
-	return ret, err
-}
-
-// TraefikServices returns an object that can list and get TraefikServices.
-func (s *traefikServiceLister) TraefikServices(namespace string) TraefikServiceNamespaceLister {
-	return traefikServiceNamespaceLister{indexer: s.indexer, namespace: namespace}
-}
-
-// TraefikServiceNamespaceLister helps list and get TraefikServices.
-// All objects returned here must be treated as read-only.
-type TraefikServiceNamespaceLister interface {
-	// List lists all TraefikServices in the indexer for a given namespace.
-	// Objects returned here must be treated as read-only.
-	List(selector labels.Selector) (ret []*v1alpha1.TraefikService, err error)
-	// Get retrieves the TraefikService from the indexer for a given namespace and name.
-	// Objects returned here must be treated as read-only.
-	Get(name string) (*v1alpha1.TraefikService, error)
-	TraefikServiceNamespaceListerExpansion
-}
-
-// traefikServiceNamespaceLister implements the TraefikServiceNamespaceLister
-// interface.
-type traefikServiceNamespaceLister struct {
-	indexer   cache.Indexer
-	namespace string
-}
-
-// List lists all TraefikServices in the indexer for a given namespace.
-func (s traefikServiceNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.TraefikService, err error) {
-	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
-		ret = append(ret, m.(*v1alpha1.TraefikService))
-	})
-	return ret, err
-}
-
-// Get retrieves the TraefikService from the indexer for a given namespace and name.
-func (s traefikServiceNamespaceLister) Get(name string) (*v1alpha1.TraefikService, error) {
-	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
-	if err != nil {
-		return nil, err
-	}
-	if !exists {
-		return nil, errors.NewNotFound(v1alpha1.Resource("traefikservice"), name)
-	}
-	return obj.(*v1alpha1.TraefikService), nil
-}
diff --git a/pkg/provider/kubernetes/crd/kubernetes.go b/pkg/provider/kubernetes/crd/kubernetes.go
index a508c952ae63eeef2d794c56e505ad8b9905e957..c0180b639b1e848f6fcf80c56eb039bb1867274d 100644
--- a/pkg/provider/kubernetes/crd/kubernetes.go
+++ b/pkg/provider/kubernetes/crd/kubernetes.go
@@ -104,7 +104,6 @@ func (p *Provider) Provide(configurationChan chan<- dynamic.Message, pool *safe.
 	logger := log.With().Str(logs.ProviderName, providerName).Logger()
 	ctxLog := logger.WithContext(context.Background())
 
-	logger.Warn().Msg("CRDs API Group \"traefik.containo.us\" is deprecated, and its support will end starting with Traefik v3. Please use the API Group \"traefik.io\" instead.")
 	logger.Warn().Msg("CRDs API Version \"traefik.io/v1alpha1\" will not be supported in Traefik v3 itself. However, an automatic migration path to the next version will be available.")
 
 	k8sClient, err := p.newK8sClient(ctxLog)
diff --git a/pkg/provider/kubernetes/crd/scheme.go b/pkg/provider/kubernetes/crd/scheme.go
deleted file mode 100644
index 25837b0194d067896f70442842d36eed2ee74974..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/scheme.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package crd
-
-import (
-	"fmt"
-
-	"github.com/rs/zerolog/log"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/generated/clientset/versioned/scheme"
-	containousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
-	"github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
-	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-	"k8s.io/apimachinery/pkg/conversion"
-	k8sruntime "k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-var GroupVersioner k8sruntime.GroupVersioner
-
-func init() {
-	GroupVersioner = k8sruntime.NewMultiGroupVersioner(
-		v1alpha1.SchemeGroupVersion,
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.IngressRoute{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.IngressRouteTCP{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.IngressRouteUDP{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.Middleware{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.MiddlewareTCP{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.TLSOption{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.TLSStore{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.ServersTransport{}.Kind},
-		schema.GroupKind{Group: containousv1alpha1.GroupName, Kind: containousv1alpha1.TraefikService{}.Kind},
-	)
-
-	convert := map[interface{}]interface{}{}
-	convert[&containousv1alpha1.IngressRoute{}] = &v1alpha1.IngressRoute{}
-	convert[&containousv1alpha1.IngressRouteTCP{}] = &v1alpha1.IngressRouteTCP{}
-	convert[&containousv1alpha1.IngressRouteUDP{}] = &v1alpha1.IngressRouteUDP{}
-	convert[&containousv1alpha1.Middleware{}] = &v1alpha1.Middleware{}
-	convert[&containousv1alpha1.MiddlewareTCP{}] = &v1alpha1.MiddlewareTCP{}
-	convert[&containousv1alpha1.TLSOption{}] = &v1alpha1.TLSOption{}
-	convert[&containousv1alpha1.TLSStore{}] = &v1alpha1.TLSStore{}
-	convert[&containousv1alpha1.ServersTransport{}] = &v1alpha1.ServersTransport{}
-	convert[&containousv1alpha1.TraefikService{}] = &v1alpha1.TraefikService{}
-
-	for interfaceA, interfaceB := range convert {
-		err := scheme.Scheme.AddConversionFunc(interfaceA, interfaceB, func(a, b interface{}, scope conversion.Scope) error {
-			unstruct, err := k8sruntime.DefaultUnstructuredConverter.ToUnstructured(a)
-			if err != nil {
-				return fmt.Errorf("failed to unstruct interface: %w", err)
-			}
-
-			u := &unstructured.Unstructured{Object: unstruct}
-			u.SetGroupVersionKind(v1alpha1.SchemeGroupVersion.WithKind(u.GetKind()))
-
-			if err = k8sruntime.DefaultUnstructuredConverter.FromUnstructured(u.Object, b); err != nil {
-				return fmt.Errorf("failed to convert interface: %w", err)
-			}
-
-			return nil
-		})
-		if err != nil {
-			log.Error().Msg("Failed to add conversion func.")
-		}
-	}
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/doc.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/doc.go
deleted file mode 100644
index 62a0746e5ed3b13867df4a980aff99bf868db137..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/doc.go
+++ /dev/null
@@ -1,6 +0,0 @@
-// +k8s:deepcopy-gen=package
-
-// Package v1alpha1 is the v1alpha1 version of the API.
-// +groupName=traefik.containo.us
-// +groupGoName=TraefikContainous
-package v1alpha1
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroute.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroute.go
deleted file mode 100644
index 6471381ae739ea728992f84bab405533b7e5d264..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroute.go
+++ /dev/null
@@ -1,175 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	"github.com/traefik/traefik/v3/pkg/types"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// IngressRouteSpec defines the desired state of IngressRoute.
-type IngressRouteSpec struct {
-	// Routes defines the list of routes.
-	Routes []Route `json:"routes"`
-	// EntryPoints defines the list of entry point names to bind to.
-	// Entry points have to be configured in the static configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-	// Default: all.
-	EntryPoints []string `json:"entryPoints,omitempty"`
-	// TLS defines the TLS configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls
-	TLS *TLS `json:"tls,omitempty"`
-}
-
-// Route holds the HTTP route configuration.
-type Route struct {
-	// Match defines the router's rule.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule
-	Match string `json:"match"`
-	// Kind defines the kind of the route.
-	// Rule is the only supported kind.
-	// +kubebuilder:validation:Enum=Rule
-	Kind string `json:"kind"`
-	// Priority defines the router's priority.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority
-	Priority int `json:"priority,omitempty"`
-	// Services defines the list of Service.
-	// It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
-	Services []Service `json:"services,omitempty"`
-	// Middlewares defines the list of references to Middleware resources.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-middleware
-	Middlewares []MiddlewareRef `json:"middlewares,omitempty"`
-}
-
-// TLS holds the TLS configuration.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls
-type TLS struct {
-	// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details.
-	SecretName string `json:"secretName,omitempty"`
-	// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
-	// If not defined, the `default` TLSOption is used.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options
-	Options *TLSOptionRef `json:"options,omitempty"`
-	// Store defines the reference to the TLSStore, that will be used to store certificates.
-	// Please note that only `default` TLSStore can be used.
-	Store *TLSStoreRef `json:"store,omitempty"`
-	// CertResolver defines the name of the certificate resolver to use.
-	// Cert resolvers have to be configured in the static configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers
-	CertResolver string `json:"certResolver,omitempty"`
-	// Domains defines the list of domains that will be used to issue certificates.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains
-	Domains []types.Domain `json:"domains,omitempty"`
-}
-
-// TLSOptionRef is a reference to a TLSOption resource.
-type TLSOptionRef struct {
-	// Name defines the name of the referenced TLSOption.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced TLSOption.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsoption
-	Namespace string `json:"namespace,omitempty"`
-}
-
-// TLSStoreRef is a reference to a TLSStore resource.
-type TLSStoreRef struct {
-	// Name defines the name of the referenced TLSStore.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced TLSStore.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-tlsstore
-	Namespace string `json:"namespace,omitempty"`
-}
-
-// LoadBalancerSpec defines the desired state of LoadBalancer.
-// It can reference either a Kubernetes Service object (a load-balancer of servers),
-// or a TraefikService object (a load-balancer of Traefik services).
-type LoadBalancerSpec struct {
-	// Name defines the name of the referenced Kubernetes Service or TraefikService.
-	// The differentiation between the two is specified in the Kind field.
-	Name string `json:"name"`
-	// Kind defines the kind of the Service.
-	// +kubebuilder:validation:Enum=Service;TraefikService
-	Kind string `json:"kind,omitempty"`
-	// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService.
-	Namespace string `json:"namespace,omitempty"`
-	// Sticky defines the sticky sessions configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#sticky-sessions
-	Sticky *dynamic.Sticky `json:"sticky,omitempty"`
-	// Port defines the port of a Kubernetes Service.
-	// This can be a reference to a named port.
-	Port intstr.IntOrString `json:"port,omitempty"`
-	// 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.
-	Scheme string `json:"scheme,omitempty"`
-	// Strategy defines the load balancing strategy between the servers.
-	// RoundRobin is the only supported value at the moment.
-	Strategy string `json:"strategy,omitempty"`
-	// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
-	// By default, passHostHeader is true.
-	PassHostHeader *bool `json:"passHostHeader,omitempty"`
-	// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.
-	ResponseForwarding *ResponseForwarding `json:"responseForwarding,omitempty"`
-	// 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.
-	ServersTransport string `json:"serversTransport,omitempty"`
-	// 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).
-	Weight *int `json:"weight,omitempty"`
-	// 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.
-	NativeLB bool `json:"nativeLB,omitempty"`
-}
-
-type ResponseForwarding struct {
-	// 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
-	FlushInterval string `json:"flushInterval,omitempty"`
-}
-
-// Service defines an upstream HTTP service to proxy traffic to.
-type Service struct {
-	LoadBalancerSpec `json:",inline"`
-}
-
-// MiddlewareRef is a reference to a Middleware resource.
-type MiddlewareRef struct {
-	// Name defines the name of the referenced Middleware resource.
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced Middleware resource.
-	Namespace string `json:"namespace,omitempty"`
-}
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// IngressRoute is the CRD implementation of a Traefik HTTP Router.
-type IngressRoute struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec IngressRouteSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// IngressRouteList is a collection of IngressRoute.
-type IngressRouteList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of IngressRoute.
-	Items []IngressRoute `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroutetcp.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroutetcp.go
deleted file mode 100644
index 5669e8f4f66e394512449d92660103529484248c..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressroutetcp.go
+++ /dev/null
@@ -1,113 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	"github.com/traefik/traefik/v3/pkg/types"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// IngressRouteTCPSpec defines the desired state of IngressRouteTCP.
-type IngressRouteTCPSpec struct {
-	// Routes defines the list of routes.
-	Routes []RouteTCP `json:"routes"`
-	// EntryPoints defines the list of entry point names to bind to.
-	// Entry points have to be configured in the static configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-	// Default: all.
-	EntryPoints []string `json:"entryPoints,omitempty"`
-	// TLS defines the TLS configuration on a layer 4 / TCP Route.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls_1
-	TLS *TLSTCP `json:"tls,omitempty"`
-}
-
-// RouteTCP holds the TCP route configuration.
-type RouteTCP struct {
-	// Match defines the router's rule.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#rule_1
-	Match string `json:"match"`
-	// Priority defines the router's priority.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#priority_1
-	Priority int `json:"priority,omitempty"`
-	// Services defines the list of TCP services.
-	Services []ServiceTCP `json:"services,omitempty"`
-	// Middlewares defines the list of references to MiddlewareTCP resources.
-	Middlewares []ObjectReference `json:"middlewares,omitempty"`
-}
-
-// TLSTCP holds the TLS configuration for an IngressRouteTCP.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#tls_1
-type TLSTCP struct {
-	// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details.
-	SecretName string `json:"secretName,omitempty"`
-	// Passthrough defines whether a TLS router will terminate the TLS connection.
-	Passthrough bool `json:"passthrough,omitempty"`
-	// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
-	// If not defined, the `default` TLSOption is used.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options
-	Options *ObjectReference `json:"options,omitempty"`
-	// Store defines the reference to the TLSStore, that will be used to store certificates.
-	// Please note that only `default` TLSStore can be used.
-	Store *ObjectReference `json:"store,omitempty"`
-	// CertResolver defines the name of the certificate resolver to use.
-	// Cert resolvers have to be configured in the static configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/acme/#certificate-resolvers
-	CertResolver string `json:"certResolver,omitempty"`
-	// Domains defines the list of domains that will be used to issue certificates.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/routers/#domains
-	Domains []types.Domain `json:"domains,omitempty"`
-}
-
-// ServiceTCP defines an upstream TCP service to proxy traffic to.
-type ServiceTCP struct {
-	// Name defines the name of the referenced Kubernetes Service.
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced Kubernetes Service.
-	Namespace string `json:"namespace,omitempty"`
-	// Port defines the port of a Kubernetes Service.
-	// This can be a reference to a named port.
-	Port intstr.IntOrString `json:"port"`
-	// Weight defines the weight used when balancing requests between multiple Kubernetes Service.
-	Weight *int `json:"weight,omitempty"`
-	// ProxyProtocol defines the PROXY protocol configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol
-	ProxyProtocol *dynamic.ProxyProtocol `json:"proxyProtocol,omitempty"`
-	// ServersTransport defines the name of ServersTransportTCP resource to use.
-	// It allows to configure the transport between Traefik and your servers.
-	// Can only be used on a Kubernetes Service.
-	ServersTransport string `json:"serversTransport,omitempty"`
-	// TLS determines whether to use TLS when dialing with the backend.
-	TLS bool `json:"tls,omitempty"`
-	// 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.
-	NativeLB bool `json:"nativeLB,omitempty"`
-}
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// IngressRouteTCP is the CRD implementation of a Traefik TCP Router.
-type IngressRouteTCP struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec IngressRouteTCPSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// IngressRouteTCPList is a collection of IngressRouteTCP.
-type IngressRouteTCPList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of IngressRouteTCP.
-	Items []IngressRouteTCP `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressrouteudp.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressrouteudp.go
deleted file mode 100644
index 18773f43724b54ab8f593f17e8ddb1a1663b7422..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/ingressrouteudp.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package v1alpha1
-
-import (
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.
-type IngressRouteUDPSpec struct {
-	// Routes defines the list of routes.
-	Routes []RouteUDP `json:"routes"`
-	// EntryPoints defines the list of entry point names to bind to.
-	// Entry points have to be configured in the static configuration.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/entrypoints/
-	// Default: all.
-	EntryPoints []string `json:"entryPoints,omitempty"`
-}
-
-// RouteUDP holds the UDP route configuration.
-type RouteUDP struct {
-	// Services defines the list of UDP services.
-	Services []ServiceUDP `json:"services,omitempty"`
-}
-
-// ServiceUDP defines an upstream UDP service to proxy traffic to.
-type ServiceUDP struct {
-	// Name defines the name of the referenced Kubernetes Service.
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced Kubernetes Service.
-	Namespace string `json:"namespace,omitempty"`
-	// Port defines the port of a Kubernetes Service.
-	// This can be a reference to a named port.
-	Port intstr.IntOrString `json:"port"`
-	// Weight defines the weight used when balancing requests between multiple Kubernetes Service.
-	Weight *int `json:"weight,omitempty"`
-	// 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.
-	NativeLB bool `json:"nativeLB,omitempty"`
-}
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// IngressRouteUDP is a CRD implementation of a Traefik UDP Router.
-type IngressRouteUDP struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec IngressRouteUDPSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// IngressRouteUDPList is a collection of IngressRouteUDP.
-type IngressRouteUDPList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of IngressRouteUDP.
-	Items []IngressRouteUDP `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middleware.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middleware.go
deleted file mode 100644
index 51078f8560a51d61221775179099006b8b94a74a..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middleware.go
+++ /dev/null
@@ -1,223 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	apiextensionv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// Middleware is the CRD implementation of a Traefik Middleware.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/
-type Middleware struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec MiddlewareSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// MiddlewareSpec defines the desired state of a Middleware.
-type MiddlewareSpec struct {
-	AddPrefix         *dynamic.AddPrefix         `json:"addPrefix,omitempty"`
-	StripPrefix       *dynamic.StripPrefix       `json:"stripPrefix,omitempty"`
-	StripPrefixRegex  *dynamic.StripPrefixRegex  `json:"stripPrefixRegex,omitempty"`
-	ReplacePath       *dynamic.ReplacePath       `json:"replacePath,omitempty"`
-	ReplacePathRegex  *dynamic.ReplacePathRegex  `json:"replacePathRegex,omitempty"`
-	Chain             *Chain                     `json:"chain,omitempty"`
-	IPAllowList       *dynamic.IPAllowList       `json:"ipAllowList,omitempty"`
-	Headers           *dynamic.Headers           `json:"headers,omitempty"`
-	Errors            *ErrorPage                 `json:"errors,omitempty"`
-	RateLimit         *RateLimit                 `json:"rateLimit,omitempty"`
-	RedirectRegex     *dynamic.RedirectRegex     `json:"redirectRegex,omitempty"`
-	RedirectScheme    *dynamic.RedirectScheme    `json:"redirectScheme,omitempty"`
-	BasicAuth         *BasicAuth                 `json:"basicAuth,omitempty"`
-	DigestAuth        *DigestAuth                `json:"digestAuth,omitempty"`
-	ForwardAuth       *ForwardAuth               `json:"forwardAuth,omitempty"`
-	InFlightReq       *dynamic.InFlightReq       `json:"inFlightReq,omitempty"`
-	Buffering         *dynamic.Buffering         `json:"buffering,omitempty"`
-	CircuitBreaker    *CircuitBreaker            `json:"circuitBreaker,omitempty"`
-	Compress          *dynamic.Compress          `json:"compress,omitempty"`
-	PassTLSClientCert *dynamic.PassTLSClientCert `json:"passTLSClientCert,omitempty"`
-	Retry             *Retry                     `json:"retry,omitempty"`
-	ContentType       *dynamic.ContentType       `json:"contentType,omitempty"`
-	GrpcWeb           *dynamic.GrpcWeb           `json:"grpcWeb,omitempty"`
-	// Plugin defines the middleware plugin configuration.
-	// More info: https://doc.traefik.io/traefik/plugins/
-	Plugin map[string]apiextensionv1.JSON `json:"plugin,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ErrorPage holds the custom error middleware configuration.
-// This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/
-type ErrorPage struct {
-	// Status defines which status or range of statuses should result in an error page.
-	// It can be either a status code as a number (500),
-	// as multiple comma-separated numbers (500,502),
-	// as ranges by separating two codes with a dash (500-599),
-	// or a combination of the two (404,418,500-599).
-	Status []string `json:"status,omitempty"`
-	// Service defines the reference to a Kubernetes Service that will serve the error page.
-	// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/errorpages/#service
-	Service Service `json:"service,omitempty"`
-	// Query defines the URL for the error page (hosted by service).
-	// The {status} variable can be used in order to insert the status code in the URL.
-	Query string `json:"query,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// CircuitBreaker holds the circuit breaker configuration.
-type CircuitBreaker struct {
-	// Expression is the condition that triggers the tripped state.
-	Expression string `json:"expression,omitempty" toml:"expression,omitempty" yaml:"expression,omitempty" export:"true"`
-	// CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state).
-	CheckPeriod *intstr.IntOrString `json:"checkPeriod,omitempty" toml:"checkPeriod,omitempty" yaml:"checkPeriod,omitempty" export:"true"`
-	// FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state).
-	FallbackDuration *intstr.IntOrString `json:"fallbackDuration,omitempty" toml:"fallbackDuration,omitempty" yaml:"fallbackDuration,omitempty" export:"true"`
-	// RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state).
-	RecoveryDuration *intstr.IntOrString `json:"recoveryDuration,omitempty" toml:"recoveryDuration,omitempty" yaml:"recoveryDuration,omitempty" export:"true"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// Chain holds the configuration of the chain middleware.
-// This middleware enables to define reusable combinations of other pieces of middleware.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/chain/
-type Chain struct {
-	// Middlewares is the list of MiddlewareRef which composes the chain.
-	Middlewares []MiddlewareRef `json:"middlewares,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// BasicAuth holds the basic auth middleware configuration.
-// This middleware restricts access to your services to known users.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/
-type BasicAuth struct {
-	// Secret is the name of the referenced Kubernetes Secret containing user credentials.
-	Secret string `json:"secret,omitempty"`
-	// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
-	// Default: traefik.
-	Realm string `json:"realm,omitempty"`
-	// RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service.
-	// Default: false.
-	RemoveHeader bool `json:"removeHeader,omitempty"`
-	// HeaderField defines a header field to store the authenticated user.
-	// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield
-	HeaderField string `json:"headerField,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// DigestAuth holds the digest auth middleware configuration.
-// This middleware restricts access to your services to known users.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/digestauth/
-type DigestAuth struct {
-	// Secret is the name of the referenced Kubernetes Secret containing user credentials.
-	Secret string `json:"secret,omitempty"`
-	// RemoveHeader defines whether to remove the authorization header before forwarding the request to the backend.
-	RemoveHeader bool `json:"removeHeader,omitempty"`
-	// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme.
-	// Default: traefik.
-	Realm string `json:"realm,omitempty"`
-	// HeaderField defines a header field to store the authenticated user.
-	// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/basicauth/#headerfield
-	HeaderField string `json:"headerField,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ForwardAuth holds the forward auth middleware configuration.
-// This middleware delegates the request authentication to a Service.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/
-type ForwardAuth struct {
-	// Address defines the authentication server address.
-	Address string `json:"address,omitempty"`
-	// TrustForwardHeader defines whether to trust (ie: forward) all X-Forwarded-* headers.
-	TrustForwardHeader bool `json:"trustForwardHeader,omitempty"`
-	// AuthResponseHeaders defines the list of headers to copy from the authentication server response and set on forwarded request, replacing any existing conflicting headers.
-	AuthResponseHeaders []string `json:"authResponseHeaders,omitempty"`
-	// AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
-	// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/forwardauth/#authresponseheadersregex
-	AuthResponseHeadersRegex string `json:"authResponseHeadersRegex,omitempty"`
-	// AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server.
-	// If not set or empty then all request headers are passed.
-	AuthRequestHeaders []string `json:"authRequestHeaders,omitempty"`
-	// TLS defines the configuration used to secure the connection to the authentication server.
-	TLS *ClientTLS `json:"tls,omitempty"`
-}
-
-// ClientTLS holds the client TLS configuration.
-type ClientTLS struct {
-	// CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate.
-	// The CA certificate is extracted from key `tls.ca` or `ca.crt`.
-	CASecret string `json:"caSecret,omitempty"`
-	// CertSecret is the name of the referenced Kubernetes Secret containing the client certificate.
-	// The client certificate is extracted from the keys `tls.crt` and `tls.key`.
-	CertSecret string `json:"certSecret,omitempty"`
-	// InsecureSkipVerify defines whether the server certificates should be validated.
-	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// RateLimit holds the rate limit configuration.
-// This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/ratelimit/
-type RateLimit struct {
-	// Average is the maximum rate, by default in requests/s, allowed for the given source.
-	// It defaults to 0, which means no rate limiting.
-	// The rate is actually defined by dividing Average by Period. So for a rate below 1req/s,
-	// one needs to define a Period larger than a second.
-	Average int64 `json:"average,omitempty"`
-	// Period, in combination with Average, defines the actual maximum rate, such as:
-	// r = Average / Period. It defaults to a second.
-	Period *intstr.IntOrString `json:"period,omitempty"`
-	// Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time.
-	// It defaults to 1.
-	Burst *int64 `json:"burst,omitempty"`
-	// SourceCriterion defines what criterion is used to group requests as originating from a common source.
-	// If several strategies are defined at the same time, an error will be raised.
-	// If none are set, the default is to use the request's remote address field (as an ipStrategy).
-	SourceCriterion *dynamic.SourceCriterion `json:"sourceCriterion,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// Retry holds the retry middleware configuration.
-// This middleware reissues requests a given number of times to a backend server if that server does not reply.
-// As soon as the server answers, the middleware stops retrying, regardless of the response status.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/retry/
-type Retry struct {
-	// Attempts defines how many times the request should be retried.
-	Attempts int `json:"attempts,omitempty"`
-	// InitialInterval defines the first wait time in the exponential backoff series.
-	// The maximum interval is calculated as twice the initialInterval.
-	// If unspecified, requests will be retried immediately.
-	// The value of initialInterval should be provided in seconds or as a valid duration format,
-	// see https://pkg.go.dev/time#ParseDuration.
-	InitialInterval intstr.IntOrString `json:"initialInterval,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// MiddlewareList is a collection of Middleware resources.
-type MiddlewareList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of Middleware.
-	Items []Middleware `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middlewaretcp.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middlewaretcp.go
deleted file mode 100644
index 10799f2953cd0525b5f641f21dbc669c7d81f811..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/middlewaretcp.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
-// More info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/
-type MiddlewareTCP struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec MiddlewareTCPSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.
-type MiddlewareTCPSpec struct {
-	// InFlightConn defines the InFlightConn middleware configuration.
-	InFlightConn *dynamic.TCPInFlightConn `json:"inFlightConn,omitempty"`
-	// IPAllowList defines the IPAllowList middleware configuration.
-	IPAllowList *dynamic.TCPIPAllowList `json:"ipAllowList,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// MiddlewareTCPList is a collection of MiddlewareTCP resources.
-type MiddlewareTCPList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of MiddlewareTCP.
-	Items []MiddlewareTCP `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/objectreference.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/objectreference.go
deleted file mode 100644
index 6334ab631b88aca0e01fd84f205a3834122b7057..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/objectreference.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package v1alpha1
-
-// ObjectReference is a generic reference to a Traefik resource.
-type ObjectReference struct {
-	// Name defines the name of the referenced Traefik resource.
-	Name string `json:"name"`
-	// Namespace defines the namespace of the referenced Traefik resource.
-	Namespace string `json:"namespace,omitempty"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/register.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/register.go
deleted file mode 100644
index ce17cf4184505c099171812809d2ca352372a4c1..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/register.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package v1alpha1
-
-import (
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-// GroupName is the group name for Traefik.
-const GroupName = "traefik.containo.us"
-
-var (
-	// SchemeBuilder collects the scheme builder functions.
-	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
-
-	// AddToScheme applies the SchemeBuilder functions to a specified scheme.
-	AddToScheme = SchemeBuilder.AddToScheme
-)
-
-// SchemeGroupVersion is group version used to register these objects.
-var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
-
-// Kind takes an unqualified kind and returns back a Group qualified GroupKind.
-func Kind(kind string) schema.GroupKind {
-	return SchemeGroupVersion.WithKind(kind).GroupKind()
-}
-
-// Resource takes an unqualified resource and returns a Group qualified GroupResource.
-func Resource(resource string) schema.GroupResource {
-	return SchemeGroupVersion.WithResource(resource).GroupResource()
-}
-
-// Adds the list of known types to Scheme.
-func addKnownTypes(scheme *runtime.Scheme) error {
-	scheme.AddKnownTypes(SchemeGroupVersion,
-		&IngressRoute{},
-		&IngressRouteList{},
-		&IngressRouteTCP{},
-		&IngressRouteTCPList{},
-		&IngressRouteUDP{},
-		&IngressRouteUDPList{},
-		&Middleware{},
-		&MiddlewareList{},
-		&MiddlewareTCP{},
-		&MiddlewareTCPList{},
-		&TLSOption{},
-		&TLSOptionList{},
-		&TLSStore{},
-		&TLSStoreList{},
-		&TraefikService{},
-		&TraefikServiceList{},
-		&ServersTransport{},
-		&ServersTransportList{},
-		&ServersTransportTCP{},
-		&ServersTransportTCPList{},
-	)
-	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
-	return nil
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransport.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransport.go
deleted file mode 100644
index d8ae851decd6fee1e8432a381240db519f38aad4..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransport.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// ServersTransport is the CRD implementation of a ServersTransport.
-// If no serversTransport is specified, the default@internal will be used.
-// The default@internal serversTransport is created from the static configuration.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1
-type ServersTransport struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec ServersTransportSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ServersTransportSpec defines the desired state of a ServersTransport.
-type ServersTransportSpec struct {
-	// ServerName defines the server name used to contact the server.
-	ServerName string `json:"serverName,omitempty"`
-	// InsecureSkipVerify disables SSL certificate verification.
-	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`
-	// RootCAsSecrets defines a list of CA secret used to validate self-signed certificate.
-	RootCAsSecrets []string `json:"rootCAsSecrets,omitempty"`
-	// CertificatesSecrets defines a list of secret storing client certificates for mTLS.
-	CertificatesSecrets []string `json:"certificatesSecrets,omitempty"`
-	// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host.
-	MaxIdleConnsPerHost int `json:"maxIdleConnsPerHost,omitempty"`
-	// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers.
-	ForwardingTimeouts *ForwardingTimeouts `json:"forwardingTimeouts,omitempty"`
-	// DisableHTTP2 disables HTTP/2 for connections with backend servers.
-	DisableHTTP2 bool `json:"disableHTTP2,omitempty"`
-	// PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification.
-	PeerCertURI string `json:"peerCertURI,omitempty"`
-	// Spiffe defines the SPIFFE configuration.
-	Spiffe *dynamic.Spiffe `json:"spiffe,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ForwardingTimeouts holds the timeout configurations for forwarding requests to the backend servers.
-type ForwardingTimeouts struct {
-	// DialTimeout is the amount of time to wait until a connection to a backend server can be established.
-	DialTimeout *intstr.IntOrString `json:"dialTimeout,omitempty"`
-	// ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any).
-	ResponseHeaderTimeout *intstr.IntOrString `json:"responseHeaderTimeout,omitempty"`
-	// IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself.
-	IdleConnTimeout *intstr.IntOrString `json:"idleConnTimeout,omitempty"`
-	// ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection.
-	ReadIdleTimeout *intstr.IntOrString `json:"readIdleTimeout,omitempty"`
-	// PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received.
-	PingTimeout *intstr.IntOrString `json:"pingTimeout,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// ServersTransportList is a collection of ServersTransport resources.
-type ServersTransportList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of ServersTransport.
-	Items []ServersTransport `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransporttcp.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransporttcp.go
deleted file mode 100644
index 202dd39d9ab4dfd047d379d7842e28e6b32717bb..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/serverstransporttcp.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// ServersTransportTCP is the CRD implementation of a TCPServersTransport.
-// If no tcpServersTransport is specified, a default one named default@internal will be used.
-// The default@internal tcpServersTransport can be configured in the static configuration.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3
-type ServersTransportTCP struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec ServersTransportTCPSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.
-type ServersTransportTCPSpec struct {
-	// DialTimeout is the amount of time to wait until a connection to a backend server can be established.
-	DialTimeout *intstr.IntOrString `json:"dialTimeout,omitempty"`
-	// DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled.
-	DialKeepAlive *intstr.IntOrString `json:"dialKeepAlive,omitempty"`
-	// TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability.
-	TerminationDelay *intstr.IntOrString `json:"terminationDelay,omitempty"`
-	// TLS defines the TLS configuration
-	TLS *TLSClientConfig `description:"Defines the TLS configuration." json:"tls,omitempty"`
-}
-
-// TLSClientConfig defines the desired state of a TLSClientConfig.
-type TLSClientConfig struct {
-	// ServerName defines the server name used to contact the server.
-	ServerName string `json:"serverName,omitempty"`
-	// InsecureSkipVerify disables TLS certificate verification.
-	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`
-	// RootCAsSecrets defines a list of CA secret used to validate self-signed certificates.
-	RootCAsSecrets []string `json:"rootCAsSecrets,omitempty"`
-	// CertificatesSecrets defines a list of secret storing client certificates for mTLS.
-	CertificatesSecrets []string `json:"certificatesSecrets,omitempty"`
-	// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host.
-	// PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification.
-	PeerCertURI string `json:"peerCertURI,omitempty"`
-	// Spiffe defines the SPIFFE configuration.
-	Spiffe *dynamic.Spiffe `json:"spiffe,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// ServersTransportTCPList is a collection of ServersTransportTCP resources.
-type ServersTransportTCPList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of ServersTransportTCP.
-	Items []ServersTransportTCP `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/service.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/service.go
deleted file mode 100644
index 2e93ced5ddbfa798d206e298674736133b8ae28a..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/service.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/config/dynamic"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// 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/v3.0/routing/providers/kubernetes-crd/#kind-traefikservice
-type TraefikService struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec TraefikServiceSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// TraefikServiceList is a collection of TraefikService resources.
-type TraefikServiceList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of TraefikService.
-	Items []TraefikService `json:"items"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// TraefikServiceSpec defines the desired state of a TraefikService.
-type TraefikServiceSpec struct {
-	// Weighted defines the Weighted Round Robin configuration.
-	Weighted *WeightedRoundRobin `json:"weighted,omitempty"`
-	// Mirroring defines the Mirroring service configuration.
-	Mirroring *Mirroring `json:"mirroring,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// Mirroring holds the mirroring service configuration.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#mirroring-service
-type Mirroring struct {
-	LoadBalancerSpec `json:",inline"`
-
-	// 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.
-	MaxBodySize *int64 `json:"maxBodySize,omitempty"`
-	// Mirrors defines the list of mirrors where Traefik will duplicate the traffic.
-	Mirrors []MirrorService `json:"mirrors,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// MirrorService holds the mirror configuration.
-type MirrorService struct {
-	LoadBalancerSpec `json:",inline"`
-
-	// Percent defines the part of the traffic to mirror.
-	// Supported values: 0 to 100.
-	Percent int `json:"percent,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// WeightedRoundRobin holds the weighted round-robin configuration.
-// More info: https://doc.traefik.io/traefik/v3.0/routing/services/#weighted-round-robin-service
-type WeightedRoundRobin struct {
-	// Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight.
-	Services []Service `json:"services,omitempty"`
-	// Sticky defines whether sticky sessions are enabled.
-	// More info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#stickiness-and-load-balancing
-	Sticky *dynamic.Sticky `json:"sticky,omitempty"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsoption.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsoption.go
deleted file mode 100644
index f8132c1386d62ada0c8617597fbaf81beaa8c8a9..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsoption.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package v1alpha1
-
-import (
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
-// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options
-type TLSOption struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec TLSOptionSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// TLSOptionSpec defines the desired state of a TLSOption.
-type TLSOptionSpec struct {
-	// MinVersion defines the minimum TLS version that Traefik will accept.
-	// Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13.
-	// Default: VersionTLS10.
-	MinVersion string `json:"minVersion,omitempty"`
-	// MaxVersion defines the maximum TLS version that Traefik will accept.
-	// Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13.
-	// Default: None.
-	MaxVersion string `json:"maxVersion,omitempty"`
-	// CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#cipher-suites
-	CipherSuites []string `json:"cipherSuites,omitempty"`
-	// CurvePreferences defines the preferred elliptic curves in a specific order.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#curve-preferences
-	CurvePreferences []string `json:"curvePreferences,omitempty"`
-	// ClientAuth defines the server's policy for TLS Client Authentication.
-	ClientAuth ClientAuth `json:"clientAuth,omitempty"`
-	// SniStrict defines whether Traefik allows connections from clients connections that do not specify a server_name extension.
-	SniStrict bool `json:"sniStrict,omitempty"`
-	// ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
-	// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols
-	ALPNProtocols []string `json:"alpnProtocols,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// ClientAuth holds the TLS client authentication configuration.
-type ClientAuth struct {
-	// SecretNames defines the names of the referenced Kubernetes Secret storing certificate details.
-	SecretNames []string `json:"secretNames,omitempty"`
-	// ClientAuthType defines the client authentication type to apply.
-	// +kubebuilder:validation:Enum=NoClientCert;RequestClientCert;RequireAnyClientCert;VerifyClientCertIfGiven;RequireAndVerifyClientCert
-	ClientAuthType string `json:"clientAuthType,omitempty"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// TLSOptionList is a collection of TLSOption resources.
-type TLSOptionList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of TLSOption.
-	Items []TLSOption `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsstore.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsstore.go
deleted file mode 100644
index 2f7bff6221476872b23b9a26d4d975ef87cd42a7..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/tlsstore.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package v1alpha1
-
-import (
-	"github.com/traefik/traefik/v3/pkg/tls"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// +genclient
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-// +kubebuilder:storageversion
-
-// TLSStore is the CRD implementation of a Traefik TLS Store.
-// For the time being, only the TLSStore named default is supported.
-// This means that you cannot have two stores that are named default in different Kubernetes namespaces.
-// More info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores
-type TLSStore struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ObjectMeta `json:"metadata"`
-
-	Spec TLSStoreSpec `json:"spec"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// TLSStoreSpec defines the desired state of a TLSStore.
-type TLSStoreSpec struct {
-	// DefaultCertificate defines the default certificate configuration.
-	DefaultCertificate *Certificate `json:"defaultCertificate,omitempty"`
-
-	// DefaultGeneratedCert defines the default generated certificate configuration.
-	DefaultGeneratedCert *tls.GeneratedCert `json:"defaultGeneratedCert,omitempty"`
-
-	// Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store.
-	Certificates []Certificate `json:"certificates,omitempty"`
-}
-
-// +k8s:deepcopy-gen=true
-
-// Certificate holds a secret name for the TLSStore resource.
-type Certificate struct {
-	// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details.
-	SecretName string `json:"secretName"`
-}
-
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
-// TLSStoreList is a collection of TLSStore resources.
-type TLSStoreList struct {
-	metav1.TypeMeta `json:",inline"`
-	// Standard object's metadata.
-	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-	metav1.ListMeta `json:"metadata"`
-
-	// Items is the list of TLSStore.
-	Items []TLSStore `json:"items"`
-}
diff --git a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/zz_generated.deepcopy.go b/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/zz_generated.deepcopy.go
deleted file mode 100644
index e8f75cda624f9835f9e16363f68f8456ecdd0ee0..0000000000000000000000000000000000000000
--- a/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,1770 +0,0 @@
-//go:build !ignore_autogenerated
-// +build !ignore_autogenerated
-
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016-2020 Containous SAS; 2020-2023 Traefik Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-// Code generated by deepcopy-gen. DO NOT EDIT.
-
-package v1alpha1
-
-import (
-	dynamic "github.com/traefik/traefik/v3/pkg/config/dynamic"
-	tls "github.com/traefik/traefik/v3/pkg/tls"
-	types "github.com/traefik/traefik/v3/pkg/types"
-	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
-	runtime "k8s.io/apimachinery/pkg/runtime"
-	intstr "k8s.io/apimachinery/pkg/util/intstr"
-)
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *BasicAuth) DeepCopyInto(out *BasicAuth) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicAuth.
-func (in *BasicAuth) DeepCopy() *BasicAuth {
-	if in == nil {
-		return nil
-	}
-	out := new(BasicAuth)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Certificate) DeepCopyInto(out *Certificate) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Certificate.
-func (in *Certificate) DeepCopy() *Certificate {
-	if in == nil {
-		return nil
-	}
-	out := new(Certificate)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Chain) DeepCopyInto(out *Chain) {
-	*out = *in
-	if in.Middlewares != nil {
-		in, out := &in.Middlewares, &out.Middlewares
-		*out = make([]MiddlewareRef, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Chain.
-func (in *Chain) DeepCopy() *Chain {
-	if in == nil {
-		return nil
-	}
-	out := new(Chain)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CircuitBreaker) DeepCopyInto(out *CircuitBreaker) {
-	*out = *in
-	if in.CheckPeriod != nil {
-		in, out := &in.CheckPeriod, &out.CheckPeriod
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.FallbackDuration != nil {
-		in, out := &in.FallbackDuration, &out.FallbackDuration
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.RecoveryDuration != nil {
-		in, out := &in.RecoveryDuration, &out.RecoveryDuration
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CircuitBreaker.
-func (in *CircuitBreaker) DeepCopy() *CircuitBreaker {
-	if in == nil {
-		return nil
-	}
-	out := new(CircuitBreaker)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClientAuth) DeepCopyInto(out *ClientAuth) {
-	*out = *in
-	if in.SecretNames != nil {
-		in, out := &in.SecretNames, &out.SecretNames
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientAuth.
-func (in *ClientAuth) DeepCopy() *ClientAuth {
-	if in == nil {
-		return nil
-	}
-	out := new(ClientAuth)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ClientTLS) DeepCopyInto(out *ClientTLS) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientTLS.
-func (in *ClientTLS) DeepCopy() *ClientTLS {
-	if in == nil {
-		return nil
-	}
-	out := new(ClientTLS)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *DigestAuth) DeepCopyInto(out *DigestAuth) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DigestAuth.
-func (in *DigestAuth) DeepCopy() *DigestAuth {
-	if in == nil {
-		return nil
-	}
-	out := new(DigestAuth)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ErrorPage) DeepCopyInto(out *ErrorPage) {
-	*out = *in
-	if in.Status != nil {
-		in, out := &in.Status, &out.Status
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	in.Service.DeepCopyInto(&out.Service)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorPage.
-func (in *ErrorPage) DeepCopy() *ErrorPage {
-	if in == nil {
-		return nil
-	}
-	out := new(ErrorPage)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ForwardAuth) DeepCopyInto(out *ForwardAuth) {
-	*out = *in
-	if in.AuthResponseHeaders != nil {
-		in, out := &in.AuthResponseHeaders, &out.AuthResponseHeaders
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.AuthRequestHeaders != nil {
-		in, out := &in.AuthRequestHeaders, &out.AuthRequestHeaders
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.TLS != nil {
-		in, out := &in.TLS, &out.TLS
-		*out = new(ClientTLS)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ForwardAuth.
-func (in *ForwardAuth) DeepCopy() *ForwardAuth {
-	if in == nil {
-		return nil
-	}
-	out := new(ForwardAuth)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ForwardingTimeouts) DeepCopyInto(out *ForwardingTimeouts) {
-	*out = *in
-	if in.DialTimeout != nil {
-		in, out := &in.DialTimeout, &out.DialTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.ResponseHeaderTimeout != nil {
-		in, out := &in.ResponseHeaderTimeout, &out.ResponseHeaderTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.IdleConnTimeout != nil {
-		in, out := &in.IdleConnTimeout, &out.IdleConnTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.ReadIdleTimeout != nil {
-		in, out := &in.ReadIdleTimeout, &out.ReadIdleTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.PingTimeout != nil {
-		in, out := &in.PingTimeout, &out.PingTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ForwardingTimeouts.
-func (in *ForwardingTimeouts) DeepCopy() *ForwardingTimeouts {
-	if in == nil {
-		return nil
-	}
-	out := new(ForwardingTimeouts)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRoute) DeepCopyInto(out *IngressRoute) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRoute.
-func (in *IngressRoute) DeepCopy() *IngressRoute {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRoute)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRoute) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteList) DeepCopyInto(out *IngressRouteList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]IngressRoute, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteList.
-func (in *IngressRouteList) DeepCopy() *IngressRouteList {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRouteList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteSpec) DeepCopyInto(out *IngressRouteSpec) {
-	*out = *in
-	if in.Routes != nil {
-		in, out := &in.Routes, &out.Routes
-		*out = make([]Route, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.EntryPoints != nil {
-		in, out := &in.EntryPoints, &out.EntryPoints
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.TLS != nil {
-		in, out := &in.TLS, &out.TLS
-		*out = new(TLS)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteSpec.
-func (in *IngressRouteSpec) DeepCopy() *IngressRouteSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteTCP) DeepCopyInto(out *IngressRouteTCP) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteTCP.
-func (in *IngressRouteTCP) DeepCopy() *IngressRouteTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRouteTCP) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteTCPList) DeepCopyInto(out *IngressRouteTCPList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]IngressRouteTCP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteTCPList.
-func (in *IngressRouteTCPList) DeepCopy() *IngressRouteTCPList {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteTCPList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRouteTCPList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteTCPSpec) DeepCopyInto(out *IngressRouteTCPSpec) {
-	*out = *in
-	if in.Routes != nil {
-		in, out := &in.Routes, &out.Routes
-		*out = make([]RouteTCP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.EntryPoints != nil {
-		in, out := &in.EntryPoints, &out.EntryPoints
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.TLS != nil {
-		in, out := &in.TLS, &out.TLS
-		*out = new(TLSTCP)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteTCPSpec.
-func (in *IngressRouteTCPSpec) DeepCopy() *IngressRouteTCPSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteTCPSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteUDP) DeepCopyInto(out *IngressRouteUDP) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteUDP.
-func (in *IngressRouteUDP) DeepCopy() *IngressRouteUDP {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteUDP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRouteUDP) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteUDPList) DeepCopyInto(out *IngressRouteUDPList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]IngressRouteUDP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteUDPList.
-func (in *IngressRouteUDPList) DeepCopy() *IngressRouteUDPList {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteUDPList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *IngressRouteUDPList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IngressRouteUDPSpec) DeepCopyInto(out *IngressRouteUDPSpec) {
-	*out = *in
-	if in.Routes != nil {
-		in, out := &in.Routes, &out.Routes
-		*out = make([]RouteUDP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.EntryPoints != nil {
-		in, out := &in.EntryPoints, &out.EntryPoints
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteUDPSpec.
-func (in *IngressRouteUDPSpec) DeepCopy() *IngressRouteUDPSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(IngressRouteUDPSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *LoadBalancerSpec) DeepCopyInto(out *LoadBalancerSpec) {
-	*out = *in
-	if in.Sticky != nil {
-		in, out := &in.Sticky, &out.Sticky
-		*out = new(dynamic.Sticky)
-		(*in).DeepCopyInto(*out)
-	}
-	out.Port = in.Port
-	if in.PassHostHeader != nil {
-		in, out := &in.PassHostHeader, &out.PassHostHeader
-		*out = new(bool)
-		**out = **in
-	}
-	if in.ResponseForwarding != nil {
-		in, out := &in.ResponseForwarding, &out.ResponseForwarding
-		*out = new(ResponseForwarding)
-		**out = **in
-	}
-	if in.Weight != nil {
-		in, out := &in.Weight, &out.Weight
-		*out = new(int)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerSpec.
-func (in *LoadBalancerSpec) DeepCopy() *LoadBalancerSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(LoadBalancerSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Middleware) DeepCopyInto(out *Middleware) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Middleware.
-func (in *Middleware) DeepCopy() *Middleware {
-	if in == nil {
-		return nil
-	}
-	out := new(Middleware)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *Middleware) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareList) DeepCopyInto(out *MiddlewareList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]Middleware, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareList.
-func (in *MiddlewareList) DeepCopy() *MiddlewareList {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *MiddlewareList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareRef) DeepCopyInto(out *MiddlewareRef) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareRef.
-func (in *MiddlewareRef) DeepCopy() *MiddlewareRef {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareRef)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareSpec) DeepCopyInto(out *MiddlewareSpec) {
-	*out = *in
-	if in.AddPrefix != nil {
-		in, out := &in.AddPrefix, &out.AddPrefix
-		*out = new(dynamic.AddPrefix)
-		**out = **in
-	}
-	if in.StripPrefix != nil {
-		in, out := &in.StripPrefix, &out.StripPrefix
-		*out = new(dynamic.StripPrefix)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.StripPrefixRegex != nil {
-		in, out := &in.StripPrefixRegex, &out.StripPrefixRegex
-		*out = new(dynamic.StripPrefixRegex)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.ReplacePath != nil {
-		in, out := &in.ReplacePath, &out.ReplacePath
-		*out = new(dynamic.ReplacePath)
-		**out = **in
-	}
-	if in.ReplacePathRegex != nil {
-		in, out := &in.ReplacePathRegex, &out.ReplacePathRegex
-		*out = new(dynamic.ReplacePathRegex)
-		**out = **in
-	}
-	if in.Chain != nil {
-		in, out := &in.Chain, &out.Chain
-		*out = new(Chain)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.IPAllowList != nil {
-		in, out := &in.IPAllowList, &out.IPAllowList
-		*out = new(dynamic.IPAllowList)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Headers != nil {
-		in, out := &in.Headers, &out.Headers
-		*out = new(dynamic.Headers)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Errors != nil {
-		in, out := &in.Errors, &out.Errors
-		*out = new(ErrorPage)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.RateLimit != nil {
-		in, out := &in.RateLimit, &out.RateLimit
-		*out = new(RateLimit)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.RedirectRegex != nil {
-		in, out := &in.RedirectRegex, &out.RedirectRegex
-		*out = new(dynamic.RedirectRegex)
-		**out = **in
-	}
-	if in.RedirectScheme != nil {
-		in, out := &in.RedirectScheme, &out.RedirectScheme
-		*out = new(dynamic.RedirectScheme)
-		**out = **in
-	}
-	if in.BasicAuth != nil {
-		in, out := &in.BasicAuth, &out.BasicAuth
-		*out = new(BasicAuth)
-		**out = **in
-	}
-	if in.DigestAuth != nil {
-		in, out := &in.DigestAuth, &out.DigestAuth
-		*out = new(DigestAuth)
-		**out = **in
-	}
-	if in.ForwardAuth != nil {
-		in, out := &in.ForwardAuth, &out.ForwardAuth
-		*out = new(ForwardAuth)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.InFlightReq != nil {
-		in, out := &in.InFlightReq, &out.InFlightReq
-		*out = new(dynamic.InFlightReq)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Buffering != nil {
-		in, out := &in.Buffering, &out.Buffering
-		*out = new(dynamic.Buffering)
-		**out = **in
-	}
-	if in.CircuitBreaker != nil {
-		in, out := &in.CircuitBreaker, &out.CircuitBreaker
-		*out = new(CircuitBreaker)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Compress != nil {
-		in, out := &in.Compress, &out.Compress
-		*out = new(dynamic.Compress)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.PassTLSClientCert != nil {
-		in, out := &in.PassTLSClientCert, &out.PassTLSClientCert
-		*out = new(dynamic.PassTLSClientCert)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Retry != nil {
-		in, out := &in.Retry, &out.Retry
-		*out = new(Retry)
-		**out = **in
-	}
-	if in.ContentType != nil {
-		in, out := &in.ContentType, &out.ContentType
-		*out = new(dynamic.ContentType)
-		**out = **in
-	}
-	if in.GrpcWeb != nil {
-		in, out := &in.GrpcWeb, &out.GrpcWeb
-		*out = new(dynamic.GrpcWeb)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Plugin != nil {
-		in, out := &in.Plugin, &out.Plugin
-		*out = make(map[string]v1.JSON, len(*in))
-		for key, val := range *in {
-			(*out)[key] = *val.DeepCopy()
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareSpec.
-func (in *MiddlewareSpec) DeepCopy() *MiddlewareSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareTCP) DeepCopyInto(out *MiddlewareTCP) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareTCP.
-func (in *MiddlewareTCP) DeepCopy() *MiddlewareTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *MiddlewareTCP) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareTCPList) DeepCopyInto(out *MiddlewareTCPList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]MiddlewareTCP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareTCPList.
-func (in *MiddlewareTCPList) DeepCopy() *MiddlewareTCPList {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareTCPList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *MiddlewareTCPList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MiddlewareTCPSpec) DeepCopyInto(out *MiddlewareTCPSpec) {
-	*out = *in
-	if in.InFlightConn != nil {
-		in, out := &in.InFlightConn, &out.InFlightConn
-		*out = new(dynamic.TCPInFlightConn)
-		**out = **in
-	}
-	if in.IPAllowList != nil {
-		in, out := &in.IPAllowList, &out.IPAllowList
-		*out = new(dynamic.TCPIPAllowList)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MiddlewareTCPSpec.
-func (in *MiddlewareTCPSpec) DeepCopy() *MiddlewareTCPSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(MiddlewareTCPSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MirrorService) DeepCopyInto(out *MirrorService) {
-	*out = *in
-	in.LoadBalancerSpec.DeepCopyInto(&out.LoadBalancerSpec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MirrorService.
-func (in *MirrorService) DeepCopy() *MirrorService {
-	if in == nil {
-		return nil
-	}
-	out := new(MirrorService)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Mirroring) DeepCopyInto(out *Mirroring) {
-	*out = *in
-	in.LoadBalancerSpec.DeepCopyInto(&out.LoadBalancerSpec)
-	if in.MaxBodySize != nil {
-		in, out := &in.MaxBodySize, &out.MaxBodySize
-		*out = new(int64)
-		**out = **in
-	}
-	if in.Mirrors != nil {
-		in, out := &in.Mirrors, &out.Mirrors
-		*out = make([]MirrorService, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mirroring.
-func (in *Mirroring) DeepCopy() *Mirroring {
-	if in == nil {
-		return nil
-	}
-	out := new(Mirroring)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ObjectReference) DeepCopyInto(out *ObjectReference) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference.
-func (in *ObjectReference) DeepCopy() *ObjectReference {
-	if in == nil {
-		return nil
-	}
-	out := new(ObjectReference)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *RateLimit) DeepCopyInto(out *RateLimit) {
-	*out = *in
-	if in.Period != nil {
-		in, out := &in.Period, &out.Period
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.Burst != nil {
-		in, out := &in.Burst, &out.Burst
-		*out = new(int64)
-		**out = **in
-	}
-	if in.SourceCriterion != nil {
-		in, out := &in.SourceCriterion, &out.SourceCriterion
-		*out = new(dynamic.SourceCriterion)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimit.
-func (in *RateLimit) DeepCopy() *RateLimit {
-	if in == nil {
-		return nil
-	}
-	out := new(RateLimit)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ResponseForwarding) DeepCopyInto(out *ResponseForwarding) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResponseForwarding.
-func (in *ResponseForwarding) DeepCopy() *ResponseForwarding {
-	if in == nil {
-		return nil
-	}
-	out := new(ResponseForwarding)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Retry) DeepCopyInto(out *Retry) {
-	*out = *in
-	out.InitialInterval = in.InitialInterval
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Retry.
-func (in *Retry) DeepCopy() *Retry {
-	if in == nil {
-		return nil
-	}
-	out := new(Retry)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Route) DeepCopyInto(out *Route) {
-	*out = *in
-	if in.Services != nil {
-		in, out := &in.Services, &out.Services
-		*out = make([]Service, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.Middlewares != nil {
-		in, out := &in.Middlewares, &out.Middlewares
-		*out = make([]MiddlewareRef, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Route.
-func (in *Route) DeepCopy() *Route {
-	if in == nil {
-		return nil
-	}
-	out := new(Route)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *RouteTCP) DeepCopyInto(out *RouteTCP) {
-	*out = *in
-	if in.Services != nil {
-		in, out := &in.Services, &out.Services
-		*out = make([]ServiceTCP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.Middlewares != nil {
-		in, out := &in.Middlewares, &out.Middlewares
-		*out = make([]ObjectReference, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteTCP.
-func (in *RouteTCP) DeepCopy() *RouteTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(RouteTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *RouteUDP) DeepCopyInto(out *RouteUDP) {
-	*out = *in
-	if in.Services != nil {
-		in, out := &in.Services, &out.Services
-		*out = make([]ServiceUDP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteUDP.
-func (in *RouteUDP) DeepCopy() *RouteUDP {
-	if in == nil {
-		return nil
-	}
-	out := new(RouteUDP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransport) DeepCopyInto(out *ServersTransport) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransport.
-func (in *ServersTransport) DeepCopy() *ServersTransport {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransport)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServersTransport) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransportList) DeepCopyInto(out *ServersTransportList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]ServersTransport, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransportList.
-func (in *ServersTransportList) DeepCopy() *ServersTransportList {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransportList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServersTransportList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransportSpec) DeepCopyInto(out *ServersTransportSpec) {
-	*out = *in
-	if in.RootCAsSecrets != nil {
-		in, out := &in.RootCAsSecrets, &out.RootCAsSecrets
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.CertificatesSecrets != nil {
-		in, out := &in.CertificatesSecrets, &out.CertificatesSecrets
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.ForwardingTimeouts != nil {
-		in, out := &in.ForwardingTimeouts, &out.ForwardingTimeouts
-		*out = new(ForwardingTimeouts)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Spiffe != nil {
-		in, out := &in.Spiffe, &out.Spiffe
-		*out = new(dynamic.Spiffe)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransportSpec.
-func (in *ServersTransportSpec) DeepCopy() *ServersTransportSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransportSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransportTCP) DeepCopyInto(out *ServersTransportTCP) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransportTCP.
-func (in *ServersTransportTCP) DeepCopy() *ServersTransportTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransportTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServersTransportTCP) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransportTCPList) DeepCopyInto(out *ServersTransportTCPList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]ServersTransportTCP, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransportTCPList.
-func (in *ServersTransportTCPList) DeepCopy() *ServersTransportTCPList {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransportTCPList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServersTransportTCPList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServersTransportTCPSpec) DeepCopyInto(out *ServersTransportTCPSpec) {
-	*out = *in
-	if in.DialTimeout != nil {
-		in, out := &in.DialTimeout, &out.DialTimeout
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.DialKeepAlive != nil {
-		in, out := &in.DialKeepAlive, &out.DialKeepAlive
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.TerminationDelay != nil {
-		in, out := &in.TerminationDelay, &out.TerminationDelay
-		*out = new(intstr.IntOrString)
-		**out = **in
-	}
-	if in.TLS != nil {
-		in, out := &in.TLS, &out.TLS
-		*out = new(TLSClientConfig)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServersTransportTCPSpec.
-func (in *ServersTransportTCPSpec) DeepCopy() *ServersTransportTCPSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(ServersTransportTCPSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Service) DeepCopyInto(out *Service) {
-	*out = *in
-	in.LoadBalancerSpec.DeepCopyInto(&out.LoadBalancerSpec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service.
-func (in *Service) DeepCopy() *Service {
-	if in == nil {
-		return nil
-	}
-	out := new(Service)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceTCP) DeepCopyInto(out *ServiceTCP) {
-	*out = *in
-	out.Port = in.Port
-	if in.Weight != nil {
-		in, out := &in.Weight, &out.Weight
-		*out = new(int)
-		**out = **in
-	}
-	if in.ProxyProtocol != nil {
-		in, out := &in.ProxyProtocol, &out.ProxyProtocol
-		*out = new(dynamic.ProxyProtocol)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTCP.
-func (in *ServiceTCP) DeepCopy() *ServiceTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(ServiceTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceUDP) DeepCopyInto(out *ServiceUDP) {
-	*out = *in
-	out.Port = in.Port
-	if in.Weight != nil {
-		in, out := &in.Weight, &out.Weight
-		*out = new(int)
-		**out = **in
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceUDP.
-func (in *ServiceUDP) DeepCopy() *ServiceUDP {
-	if in == nil {
-		return nil
-	}
-	out := new(ServiceUDP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLS) DeepCopyInto(out *TLS) {
-	*out = *in
-	if in.Options != nil {
-		in, out := &in.Options, &out.Options
-		*out = new(TLSOptionRef)
-		**out = **in
-	}
-	if in.Store != nil {
-		in, out := &in.Store, &out.Store
-		*out = new(TLSStoreRef)
-		**out = **in
-	}
-	if in.Domains != nil {
-		in, out := &in.Domains, &out.Domains
-		*out = make([]types.Domain, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLS.
-func (in *TLS) DeepCopy() *TLS {
-	if in == nil {
-		return nil
-	}
-	out := new(TLS)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSClientConfig) DeepCopyInto(out *TLSClientConfig) {
-	*out = *in
-	if in.RootCAsSecrets != nil {
-		in, out := &in.RootCAsSecrets, &out.RootCAsSecrets
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.CertificatesSecrets != nil {
-		in, out := &in.CertificatesSecrets, &out.CertificatesSecrets
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.Spiffe != nil {
-		in, out := &in.Spiffe, &out.Spiffe
-		*out = new(dynamic.Spiffe)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSClientConfig.
-func (in *TLSClientConfig) DeepCopy() *TLSClientConfig {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSClientConfig)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSOption) DeepCopyInto(out *TLSOption) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSOption.
-func (in *TLSOption) DeepCopy() *TLSOption {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSOption)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TLSOption) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSOptionList) DeepCopyInto(out *TLSOptionList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]TLSOption, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSOptionList.
-func (in *TLSOptionList) DeepCopy() *TLSOptionList {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSOptionList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TLSOptionList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSOptionRef) DeepCopyInto(out *TLSOptionRef) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSOptionRef.
-func (in *TLSOptionRef) DeepCopy() *TLSOptionRef {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSOptionRef)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSOptionSpec) DeepCopyInto(out *TLSOptionSpec) {
-	*out = *in
-	if in.CipherSuites != nil {
-		in, out := &in.CipherSuites, &out.CipherSuites
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.CurvePreferences != nil {
-		in, out := &in.CurvePreferences, &out.CurvePreferences
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	in.ClientAuth.DeepCopyInto(&out.ClientAuth)
-	if in.ALPNProtocols != nil {
-		in, out := &in.ALPNProtocols, &out.ALPNProtocols
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSOptionSpec.
-func (in *TLSOptionSpec) DeepCopy() *TLSOptionSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSOptionSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSStore) DeepCopyInto(out *TLSStore) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSStore.
-func (in *TLSStore) DeepCopy() *TLSStore {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSStore)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TLSStore) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSStoreList) DeepCopyInto(out *TLSStoreList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]TLSStore, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSStoreList.
-func (in *TLSStoreList) DeepCopy() *TLSStoreList {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSStoreList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TLSStoreList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSStoreRef) DeepCopyInto(out *TLSStoreRef) {
-	*out = *in
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSStoreRef.
-func (in *TLSStoreRef) DeepCopy() *TLSStoreRef {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSStoreRef)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSStoreSpec) DeepCopyInto(out *TLSStoreSpec) {
-	*out = *in
-	if in.DefaultCertificate != nil {
-		in, out := &in.DefaultCertificate, &out.DefaultCertificate
-		*out = new(Certificate)
-		**out = **in
-	}
-	if in.DefaultGeneratedCert != nil {
-		in, out := &in.DefaultGeneratedCert, &out.DefaultGeneratedCert
-		*out = new(tls.GeneratedCert)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Certificates != nil {
-		in, out := &in.Certificates, &out.Certificates
-		*out = make([]Certificate, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSStoreSpec.
-func (in *TLSStoreSpec) DeepCopy() *TLSStoreSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSStoreSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TLSTCP) DeepCopyInto(out *TLSTCP) {
-	*out = *in
-	if in.Options != nil {
-		in, out := &in.Options, &out.Options
-		*out = new(ObjectReference)
-		**out = **in
-	}
-	if in.Store != nil {
-		in, out := &in.Store, &out.Store
-		*out = new(ObjectReference)
-		**out = **in
-	}
-	if in.Domains != nil {
-		in, out := &in.Domains, &out.Domains
-		*out = make([]types.Domain, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSTCP.
-func (in *TLSTCP) DeepCopy() *TLSTCP {
-	if in == nil {
-		return nil
-	}
-	out := new(TLSTCP)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TraefikService) DeepCopyInto(out *TraefikService) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraefikService.
-func (in *TraefikService) DeepCopy() *TraefikService {
-	if in == nil {
-		return nil
-	}
-	out := new(TraefikService)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TraefikService) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TraefikServiceList) DeepCopyInto(out *TraefikServiceList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ListMeta.DeepCopyInto(&out.ListMeta)
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]TraefikService, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraefikServiceList.
-func (in *TraefikServiceList) DeepCopy() *TraefikServiceList {
-	if in == nil {
-		return nil
-	}
-	out := new(TraefikServiceList)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *TraefikServiceList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	}
-	return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *TraefikServiceSpec) DeepCopyInto(out *TraefikServiceSpec) {
-	*out = *in
-	if in.Weighted != nil {
-		in, out := &in.Weighted, &out.Weighted
-		*out = new(WeightedRoundRobin)
-		(*in).DeepCopyInto(*out)
-	}
-	if in.Mirroring != nil {
-		in, out := &in.Mirroring, &out.Mirroring
-		*out = new(Mirroring)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TraefikServiceSpec.
-func (in *TraefikServiceSpec) DeepCopy() *TraefikServiceSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(TraefikServiceSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *WeightedRoundRobin) DeepCopyInto(out *WeightedRoundRobin) {
-	*out = *in
-	if in.Services != nil {
-		in, out := &in.Services, &out.Services
-		*out = make([]Service, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	if in.Sticky != nil {
-		in, out := &in.Sticky, &out.Sticky
-		*out = new(dynamic.Sticky)
-		(*in).DeepCopyInto(*out)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WeightedRoundRobin.
-func (in *WeightedRoundRobin) DeepCopy() *WeightedRoundRobin {
-	if in == nil {
-		return nil
-	}
-	out := new(WeightedRoundRobin)
-	in.DeepCopyInto(out)
-	return out
-}
diff --git a/pkg/provider/kubernetes/gateway/kubernetes.go b/pkg/provider/kubernetes/gateway/kubernetes.go
index 916e8cdf71917fad8f47ccba071f93dc4ac3b0bc..170540394238be4896b6fe41b21a31ab2a72d905 100644
--- a/pkg/provider/kubernetes/gateway/kubernetes.go
+++ b/pkg/provider/kubernetes/gateway/kubernetes.go
@@ -23,7 +23,6 @@ import (
 	"github.com/traefik/traefik/v3/pkg/job"
 	"github.com/traefik/traefik/v3/pkg/logs"
 	"github.com/traefik/traefik/v3/pkg/provider"
-	containousv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1"
 	traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1"
 	"github.com/traefik/traefik/v3/pkg/safe"
 	"github.com/traefik/traefik/v3/pkg/tls"
@@ -1808,7 +1807,7 @@ func isTraefikService(ref v1alpha2.BackendRef) bool {
 		return false
 	}
 
-	return (*ref.Group == containousv1alpha1.GroupName || *ref.Group == traefikv1alpha1.GroupName) && *ref.Kind == kindTraefikService
+	return *ref.Group == traefikv1alpha1.GroupName && *ref.Kind == kindTraefikService
 }
 
 func isInternalService(ref v1alpha2.BackendRef) bool {
diff --git a/script/code-gen.sh b/script/code-gen.sh
index e9520dfb718f97b68ddbaf748a5299007e11aa73..905ac67cb190e85d6daa9a125d06c3bbf03b882c 100755
--- a/script/code-gen.sh
+++ b/script/code-gen.sh
@@ -25,7 +25,7 @@ docker run --rm \
            /go/src/k8s.io/code-generator/generate-groups.sh all \
            ${PROJECT_MODULE}/${MODULE_VERSION}/pkg/provider/kubernetes/crd/generated \
            ${PROJECT_MODULE}/${MODULE_VERSION}/pkg/provider/kubernetes/crd \
-           "traefikcontainous:v1alpha1 traefikio:v1alpha1" \
+           "traefikio:v1alpha1" \
            --go-header-file=/go/src/${PROJECT_MODULE}/script/boilerplate.go.tmpl
 
 echo "Generating DeepCopy code ..."
@@ -47,12 +47,11 @@ docker run --rm \
            -w "/go/src/${PROJECT_MODULE}" \
            "${IMAGE_NAME}" \
            controller-gen crd:crdVersions=v1 \
-           paths={./pkg/provider/kubernetes/crd/traefikio/v1alpha1/...,./pkg/provider/kubernetes/crd/traefikcontainous/v1alpha1/...} \
+           paths={./pkg/provider/kubernetes/crd/traefikio/v1alpha1/...} \
            output:dir=./docs/content/reference/dynamic-configuration/
 
 echo "Concatenate the CRD definitions for publication and integration tests ..."
 cat "${CURRENT_DIR}"/docs/content/reference/dynamic-configuration/traefik.io_*.yaml > "${CURRENT_DIR}"/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
-cat "${CURRENT_DIR}"/docs/content/reference/dynamic-configuration/traefik.containo.us_*.yaml >> "${CURRENT_DIR}"/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
 cp -f "${CURRENT_DIR}"/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml "${CURRENT_DIR}"/integration/fixtures/k8s/01-traefik-crd.yml
 
 cp -r "${CURRENT_DIR}/${MODULE_VERSION}"/* "${CURRENT_DIR}"
diff --git a/webui/package.json b/webui/package.json
index 1f88c6a5200b45ac22d3ebca44173582e9abb091..23e2be3d47bf4d59c8902110f8e46252457ac6a8 100644
--- a/webui/package.json
+++ b/webui/package.json
@@ -3,7 +3,7 @@
   "version": "2.0.0",
   "description": "Traefik UI",
   "productName": "Traefik",
-  "cordovaId": "us.containo.traefik",
+  "cordovaId": "io.traefik.traefik",
   "private": true,
   "scripts": {
     "transfer": "node dev/scripts/transfer.js",