Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Traefik Ingress Controller

Inhaltsverzeichnis

Traefik
#

Traefik is a modern load balancer and reverse proxy designed as an Ingress Controller for Kubernetes. It offers dynamic configuration, automatic service discovery, and a wide range of features for managing external access to services within a cluster.

Status
#

Status
Uptime
Ping
Avg Response Time
Certificate Expiration
Response Time

Deployment
#

Argo Deployment

Quelle
#

Die Anwendung wird als Helm-Chart von Traefik Labs bezogen.

Dokumentation
#

Die offizielle Dokumentation von Traefik ist unter doc.traefik.io/traefik/ zu finden.

Funktion
#

Traefik ist das “Eingangstor” zum Kubernetes-Cluster. Es lauscht auf den Ports 80 und 443 auf den Cluster-Nodes und leitet eingehende HTTP/S-Anfragen basierend auf dem Hostnamen und dem Pfad an den richtigen internen Service weiter. Die Konfiguration erfolgt dynamisch: Traefik überwacht die Kubernetes-API auf Ingress- und IngressRoute-Ressourcen und passt seine Routing-Regeln automatisch an, wenn neue Dienste bereitgestellt oder entfernt werden.

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml- und middlewares.yaml-Dateien.

Wichtige Einstellungen
#

  • Deployment-Art: Traefik wird als DaemonSet bereitgestellt. Das bedeutet, dass auf jedem Node im Cluster ein Traefik-Pod läuft, was für eine hohe Verfügbarkeit und eine gleichmäßige Verteilung des eingehenden Traffics sorgt.
  • EntryPoints: Es sind drei EntryPoints definiert:
    • web (Port 80): Für unverschlüsselten HTTP-Traffic (wird typischerweise auf HTTPS umgeleitet).
    • websecure (Port 443): Für verschlüsselten HTTPS-Traffic.
    • synapse (Port 8448): Ein dedizierter TCP-EntryPoint für die Matrix-Synapse-Föderation.
  • Provider: Sowohl der kubernetesCRD-Provider (für IngressRoute, Middleware, etc.) als auch der kubernetesIngress-Provider (für Standard-Ingress-Ressourcen) sind aktiviert.
  • Middlewares: In middlewares.yaml werden globale Middlewares definiert, die auf IngressRoutes angewendet werden können. Dazu gehören wahrscheinlich Middlewares für die Authentifizierung über Authentik oder für die Beschränkung des Zugriffs auf lokale Netzwerke.
  • Persistenz: Persistenz ist aktiviert, um z.B. ACME-Zertifikate (von Let’s Encrypt) zu speichern.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/traefik-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/traefik | kubectl apply -n kube-system -f -

Abhängigkeiten
#

  • A running Kubernetes cluster.
  • MetalLB for LoadBalancer IP allocation.
  • Cert-manager for TLS certificate management.
  • Authentik (wenn Forward-Authentifizierungs-Middleware verwendet wird).
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin