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

Maintenance Page

··250 Wörter· ·
Inhaltsverzeichnis

Maintenance Page
#

Quelle
#

Die Anwendung wird als generisches app-template Helm-Chart von BJW-S Labs bereitgestellt. Das verwendete Nginx-Image stammt aus dem Repository nginx-docker und klont den Inhalt der Wartungsseite beim Start aus einem Git-Repository.

Dokumentation
#

Der Quellcode der Wartungsseite liegt im Repository <owner>/maintenance-page auf der Forgejo-Instanz.

Funktion
#

Die Maintenance Page hat zwei Hauptfunktionen:

  1. Catch-All-Route: Ein Traefik IngressRoute mit niedriger Priorität (priority: 1) fängt alle Anfragen ab, für die keine spezifischere Route existiert. Diese Anfragen werden an den Nginx-Server weitergeleitet.
  2. Fehlerseite: Eine Traefik Middleware ist so konfiguriert, dass sie bei bestimmten HTTP-Fehlern (z.B. 404 Not Found) den Benutzer auf diese Wartungsseite umleitet.

Der Nginx-Server selbst ist so konfiguriert, dass er für jede Anfrage einen HTTP-Statuscode 503 Service Unavailable zurückgibt und den Inhalt der index.html ausliefert.

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml-Datei.

Wichtige Einstellungen
#

  • Git-Repository: Der Inhalt der Seite wird aus dem pages-Branch des Repositories <owner>/maintenance-page geklont.
  • Nginx-Konfiguration: Eine benutzerdefinierte Nginx-Konfiguration wird per ConfigMap bereitgestellt, um das 503-Verhalten zu implementieren.
  • Traefik CRDs: Die IngressRoute und Middleware werden direkt als rawResources im Helm-Chart definiert, um die tiefe Integration mit Traefik zu ermöglichen.

Installation
#

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

1kubectl kustomize --enable-helm apps/maintenance-page | kubectl apply -n maintenance-page -f -

Abhängigkeiten
#

  • Traefik: Zwingend erforderlich, da die Kernfunktionalität auf Traefik-CRDs (IngressRoute, Middleware) basiert.
  • Forgejo: Das Git-Repository mit dem Inhalt der Wartungsseite muss verfügbar sein.
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin