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

Maintenance Page

Inhaltsverzeichnis

Maintenance Page
#

Deployment
#

Argo Deployment

Quelle
#

Die Anwendung wird als generisches app-template Helm-Chart von BJW-S Labs bereitgestellt. Das verwendete Docker-Image ist ein benutzerdefiniertes Nginx-Image, das von git.zyria.de bezogen wird und den Inhalt der Wartungsseite aus einem Git-Repository klont.

Dokumentation
#

Der Quellcode der Wartungsseite befindet sich im Git-Repository pyrox/maintenance-page auf der internen 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 pyrox/maintenance-page-Repositories 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.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin