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

quaecki.de

Inhaltsverzeichnis

quaecki.de
#

Stellt die statische Webseite für quaecki.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/quaecki_de auf der Forgejo-Instanz.

Funktion
#

git-sync klont alle 60 Sekunden den pages-Branch in ein gemeinsames emptyDir-Volume und hängt den Symlink html atomar auf den neuen Stand um. nginx liefert aus, was dahinter liegt. Ein neuer Seiteninhalt ist damit nach spätestens einer Minute live, ohne Neustart des Pods.

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/quaecki_de, pages
Hostnamen Ingress quaecki.de, www.quaecki.de
nginx-Konfiguration components/static-site gemeinsam mit den anderen statischen Seiten

Das Repository ist öffentlich, git-sync braucht keine Zugangsdaten.

Installation
#

Bereitgestellt über ArgoCD mit Kustomize und Helm. Von Hand:

1kubectl kustomize --enable-helm apps/quaecki-de | kubectl apply -n quaecki-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