Fallstudie / Plattform
Shell
Terraform · Ansible · K3s · Cilium · Argo CD · Prometheus
Überblick
Plattformarbeit besteht aus vielen Teilen, die zusammenpassen müssen: Identität, Artefakte, Infrastruktur, Auslieferung, Betrieb und Dokumentation. Shell ist mein Versuch, diese Teile als ein zusammenhängendes, nachvollziehbares System zu entwerfen, statt als lose Sammlung von Werkzeugen.
Ansatz
Shell gliedert die Arbeit in sechs Bereiche, die über feste Verträge Ergebnisse weiterreichen.
SUDO / Identität und Trust
Identitäten, Zugriffsprofile, Signaturschlüssel und verschlüsselte Secrets. SUDO legt fest, wem und was vertraut wird.
TAR / Artefakte
Hält die genaue Version jedes Images, Charts und Binarys fest. INIT und MAKE installieren nur, was dort eingetragen ist.
INIT / Hosts und Cluster
Legt Netzwerk, virtuelle Maschinen und Proxmox-Gäste mit OpenTofu an; Ansible konfiguriert sie und installiert K3s.
MAKE / Workloads
Auslieferungsdienste und Kubernetes-Workloads: Forgejo, Harbor, Argo CD, OpenBao, Keycloak, Kyverno und Velero.
WATCH / Monitoring und Recovery
Prometheus, Alertmanager, Grafana, Loki, Tempo und OpenTelemetry, dazu lesende Prüfungen und Belege für die Wiederherstellung.
MAN / Entscheidungen und Runbooks
Architekturentscheidungen (ADRs) und Betriebsunterlagen, auf die alle anderen Bereiche verweisen.
Architekturentscheidungen
Die drei wichtigsten Entscheidungen (ADRs) dieses Projekts.
Zwei unabhängige K3s-Cluster
Ein K3s-Cluster auf GCP-VMs und eines auf Proxmox-Gästen, mit getrennten Control Planes, etcd-Datenbanken und Netzen. Ein Ausfall in einer Umgebung zieht die andere nicht mit.
Signierte Images mit Cosign und Kyverno
Cosign signiert ausgewählte Images, Kyverno lehnt unsignierte in markierten Namespaces ab. Der private Schlüssel liegt weder in Git noch im Cluster.
Lokaler OpenTofu-State mit verschlüsselten Offline-Backups
Ein State pro Root, dazu verschlüsselte Offline-Kopien für die Wiederherstellung. Ein Remote-Backend ist für diesen Schritt bewusst ausgeschlossen.