Maintenance Page #
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:
- Catch-All-Route: Ein Traefik
IngressRoutemit 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. - Fehlerseite: Eine Traefik
Middlewareist 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 despyrox/maintenance-page-Repositories geklont. - Nginx-Konfiguration: Eine benutzerdefinierte Nginx-Konfiguration wird per ConfigMap bereitgestellt, um das 503-Verhalten zu implementieren.
- Traefik CRDs: Die
IngressRouteundMiddlewarewerden direkt alsrawResourcesim 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.