How I setup my Traefik Dashboard

I’ve been learning how to work with ingress with Traefik on my k3s cluster. Most of these have been fairly simple. Adding an Ingress manifest, pointing a domain to a service and port. But the traefik dashboard was a little different.

I found some explanations to get that done that were out of date. One was actually really close but used an out of date CRD: ingressroutes.traefik.containo.us.

When applying, this gave me an error:

error: resource mapping not found for name: "traefik-dashboard" namespace: "kube-system" from "kube-system/traefik/_ingress.yaml": no matches for kind "IngressRoute" in version "traefik.containo.us/v1alpha1"
ensure CRDs are installed first

Looking at available CRDs showed me I did have one for IngressRoute:

kubectl get crds | grep -i traefik

Output:
...
ingressroutes.traefik.io                       2026-03-28T20:46:13Z
...

Looking at the documentation , I could then figure out how to use it.

With that, and adding a mkcert generated certificate, my manifest for the dashboard looks like this

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard
  namespace: kube-system
spec:
  tls:
    domains:
      - main: traefik.local
    secretName: traefik-tls
  entryPoints:
    - websecure
  routes:
    - match: Host(`traefik.local`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))
      kind: Rule
      services:
        - name: api@internal
          kind: TraefikService

Another thing that was required was to edit the config with kubectl edit helmchartconfig traefik -n kube-system

I added this to it

ingressRoute:
      dashboard:
        enabled: true
Tags: