Global middleware with kubernetes CRD

Hello @nwrox

All objects that are created within the Kubernetes cluster are grouped by namespace - according to the documentation you can think of a Namespace as a virtual cluster.

One of the aims of a namespace is a logical isolation of objects from each other. A standard Kubernetes cluster is shipped with kube-system (Kubernetes components), kube-public (for public resources), and default for user's workloads.

Referring that knowledge to the Traefik implementation through IngressRoute CRD (Custom Resource Definition) we have to create a middleware in a specific namespace e.g.

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: http2https
  namespace: default
spec:
  redirectScheme:
    scheme: https
    permanent: true

If you create a middleware as CRD in Kubernetes as it is presented in the example you should refer to it using the following annotation:

<middleware-namespace>-<middleware-name>@kubernetescrd

so you should use the name: default-http2https@kubernetescrd

You can learn more about it by reading Traefik's docs:
https://doc.traefik.io/traefik/providers/overview/#provider-namespace