Ein Blog, der sich selbst ausliefert
Dieser Blog macht nichts Besonderes — und genau das ist der Punkt. Es gibt keinen
Server, auf dem ich mich einlogge, kein rsync, kein FTP. Ich schreibe eine
Markdown-Datei, mache git push, und ein paar Minuten später steht der neue
Beitrag online. Dazwischen läuft eine Kette, die es wert ist, einmal aufgeschrieben
zu werden.
Die Kette
git push (main)
→ Forgejo Actions (Codeberg)
→ docker build: Hugo → distroless nginx
→ push nach codeberg.org/.../fxb-k8s-blog
→ Argo CD Image Updater schreibt den neuen Digest nach Git
→ Argo CD synct → neues Deployment im Cluster
Kein Schritt davon ist neu erfunden — die Cluster-Website nebenan läuft schon genauso. Der Blog klinkt sich einfach in dieselbe Infrastruktur ein.
Warum Hugo
Ein einzelnes Go-Binary, kein node_modules, Builds in Sekunden. Für einen
Textblog gibt es wenig Gründe, komplizierter zu werden. Der Build passiert in
einem Multi-Stage-Image:
FROM hugomods/hugo:exts AS build
WORKDIR /src
COPY . .
RUN hugo --minify
FROM cgr.dev/chainguard/nginx:latest
COPY --from=build /src/public /usr/share/nginx/html
Das Ergebnis ist ein unveränderliches Image: eine Version des Blogs = ein Image.
Rollback heißt git revert.
Warum im eigenen Cluster
Weil es geht — und weil jeder Dienst, der hier läuft, ein Stück weniger Abhängigkeit von fremder Infrastruktur bedeutet. TLS terminiert am Reverse Proxy, dahinter spricht alles nur noch schlichtes HTTP im LAN.
Mehr dazu in den kommenden Beiträgen. Bis dahin: >_