zyria.de Webseite #
Stellt die statische Webseite für zyria.de bereit. Gebaut wird die Seite im
Quell-Repository, hier wird nur ausgeliefert.
Quelle #
Generisches app-template-Helm-Chart von
BJW-S Labs mit dem Upstream-Image
nginxinc/nginx-unprivileged und git-sync. Die nginx-Konfiguration kommt aus
der Kustomize-Component components/static-site und ist für alle statischen
Seiten im Cluster dieselbe.
Dokumentation #
Der Quellcode der Webseite liegt im Repository pyrox/zyria_de auf der
Forgejo-Instanz.
Funktion #
Zwei Container in einem Pod, die sich ein emptyDir-Volume teilen:
- git-sync klont alle 60 Sekunden den
pages-Branch des Quell-Repositories in das Volume und hängt den Symlinkhtmlauf den aktuellen Stand um. - nginx liefert aus, was hinter diesem Symlink liegt.
Weil git-sync den Symlink atomar umhängt, wird ein neuer Stand ohne Neustart live, und ein halb übertragener Klon wird nie ausgeliefert. Bis der erste Abgleich fertig ist, meldet die Readiness-Probe den Pod als nicht bereit.
Beide Container laufen ohne Root-Rechte und mit schreibgeschütztem Root-Dateisystem. nginx lauscht auf Port 8080, der Service bildet Port 80 darauf ab.
Lokale Anpassungen #
Die Konfiguration erfolgt über values.yaml.
Wichtige Einstellungen #
| Einstellung | Ort | Wert |
|---|---|---|
| Repository und Branch | GITSYNC_REPO, GITSYNC_REF im Container gitsync |
pyrox/zyria_de, pages |
| Abgleichsintervall | GITSYNC_PERIOD |
60 s |
| Hostnamen | Ingress | zyria.de, www.zyria.de |
Umleitung von www |
traefik-www-redirect-middleware.yaml |
auf zyria.de |
| nginx-Konfiguration | components/static-site |
gemeinsam mit den anderen statischen Seiten |
Renovate hebt die Versionen von nginx und git-sync per Pull Request. Ändert sich die nginx-Konfiguration in der Component, startet reloader den Pod neu.
Installation #
Bereitgestellt über ArgoCD mit Kustomize und Helm. Von Hand:
1kubectl kustomize --enable-helm apps/zyria-de | kubectl apply -n zyria-de -f -Abhängigkeiten #
- Ingress-Controller (Traefik)
- cert-manager für das TLS-Zertifikat
- reloader, damit Änderungen an der nginx-Konfiguration ankommen
- Forgejo-Instanz mit dem Quell-Repository. Fällt sie aus, liefert ein laufender Pod den zuletzt geholten Stand weiter aus.