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

zyria.de Webseite

Inhaltsverzeichnis

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:

  1. git-sync klont alle 60 Sekunden den pages-Branch des Quell-Repositories in das Volume und hängt den Symlink html auf den aktuellen Stand um.
  2. 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.
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin