4.8 KiB
04 — Traefik Ingress Controller
Datum: 2026-03-17 Version: Traefik v3.6.9 (Helm Chart traefik-39.0.201+up39.0.2) Namespace: kube-system Quelle: k3s built-in (automatisch durch k3s installiert)
Übersicht
k3s bringt Traefik als Standard-Ingress-Controller mit. Er wird beim ersten Cluster-Start automatisch per Helm in den Namespace kube-system installiert. Eine manuelle Installation war daher nicht nötig.
Traefik v3.6.9 läuft als LoadBalancer-Service und ist auf allen drei Cluster-Nodes erreichbar.
Prüfung: Ist Traefik bereits installiert?
kubectl get pods -n kube-system | grep traefik
Ausgabe:
helm-install-traefik-cbxhx 0/1 Completed 2 11h
helm-install-traefik-crd-8dcsk 0/1 Completed 0 11h
svclb-traefik-dea220eb-29vm9 2/2 Running 2 11h
svclb-traefik-dea220eb-fh52c 2/2 Running 2 11h
svclb-traefik-dea220eb-plnwv 2/2 Running 2 11h
traefik-788bc4688c-c6m7w 1/1 Running 1 11h
→ Traefik läuft bereits. Keine manuelle Installation notwendig.
Helm Release
helm list -n kube-system
NAME NAMESPACE REVISION STATUS CHART APP VERSION
traefik kube-system 1 deployed traefik-39.0.201+up39.0.2 v3.6.9
traefik-crd kube-system 1 deployed traefik-crd-39.0.201+up39.0.2 v3.6.9
Zwei Helm Releases:
- traefik: Der eigentliche Controller
- traefik-crd: Die Custom Resource Definitions (IngressRoute, Middleware, etc.)
Service & Erreichbarkeit
kubectl get svc traefik -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
traefik LoadBalancer 10.43.61.252 192.168.11.170,192.168.11.171,192.168.11.172 80:31202/TCP,443:32016/TCP
Traefik ist über alle drei Node-IPs erreichbar:
| Node | IP | HTTP | HTTPS |
|---|---|---|---|
| rnk-cp01 | 192.168.11.170 | :80 | :443 |
| rnk-wrk01 | 192.168.11.171 | :80 | :443 |
| rnk-wrk02 | 192.168.11.172 | :80 | :443 |
NodePorts: 31202 (HTTP), 32016 (HTTPS)
Konfiguration (EntryPoints)
Traefik lauscht auf folgenden Ports:
| EntryPoint | Port | Zweck |
|---|---|---|
web |
8000 (→ 80) | HTTP |
websecure |
8443 (→ 443) | HTTPS (TLS aktiviert) |
traefik |
8080 | Dashboard / API |
metrics |
9100 | Prometheus Metrics |
Aktive Features (aus Deployment-Args):
--api.dashboard=true— Dashboard aktiviert--ping=true— Health-Check unter/ping--metrics.prometheus=true— Prometheus-Scraping aktiviert--providers.kubernetescrd— Traefik CRDs (IngressRoute, Middleware, …)--providers.kubernetesingress— Standard Kubernetes Ingress--entryPoints.websecure.http.tls=true— TLS auf websecure--log.level=INFO
IngressClass
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
traefik traefik.io/ingress-controller <none> 11h
IngressClass-Name für Ingress-Objekte: traefik
Custom Resource Definitions (CRDs)
Installierte Traefik-CRDs:
ingressroutes.traefik.io
ingressroutetcps.traefik.io
ingressrouteudps.traefik.io
middlewares.traefik.io
middlewaretcps.traefik.io
serverstransports.traefik.io
serverstransporttcps.traefik.io
tlsoptions.traefik.io
tlsstores.traefik.io
traefikservices.traefik.io
Zusätzlich Traefik Hub CRDs (API Gateway / Management, derzeit ungenutzt):
accesscontrolpolicies, aiservices, apiauths, apibundles, etc.
Dashboard aufrufen (Port-Forward)
Das Traefik Dashboard ist über den traefik-EntryPoint (Port 8080) erreichbar, jedoch nicht von außen exponiert:
kubectl port-forward -n kube-system deployment/traefik 9000:8080
# Dashboard: http://localhost:9000/dashboard/
Beispiel: Ingress-Objekt
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
namespace: default
spec:
ingressClassName: traefik
rules:
- host: my-app.homelab.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-svc
port:
number: 80
Beispiel: IngressRoute (Traefik CRD)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: my-app
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`my-app.homelab.local`)
kind: Rule
services:
- name: my-app-svc
port: 80
Nächste Schritte
- Traefik Dashboard per IngressRoute mit BasicAuth exposieren
- Default TLS-Zertifikat konfigurieren (z.B. via cert-manager + Let's Encrypt)
- Wildcard-DNS für
*.homelab.localauf die Cluster-IPs setzen - Prometheus-Scraping für Traefik Metrics einrichten