- Eine (scheinbar) leere Homepage/
- Beiträge/
- Kleines Homelab/
- k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/
k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung
Inhaltsverzeichnis
Kubernetes Cluster Konfiguration und Anwendungsbereitstellung #
Dieses Repository dient als zentrale Quelle für die Konfiguration und das Management eines k3s Kubernetes Produktionsclusters. Es folgt strikt den GitOps-Prinzipien, wobei der gewünschte Zustand des Clusters und aller darauf laufenden Anwendungen deklarativ in Git definiert und durch ArgoCD automatisch synchronisiert wird.
Zweck des Repositories #
Das Hauptziel dieses Repositorys ist es, eine transparente, versionierte und nachvollziehbare Verwaltung der gesamten Kubernetes-Infrastruktur zu ermöglichen. Es umfasst:
- Cluster-Basiskonfiguration: Grundlegende Einstellungen und Komponenten des k3s-Clusters.
- Anwendungsbereitstellung: Definition und Konfiguration aller im Cluster bereitgestellten Anwendungen.
- Automatisierung: Nutzung von ArgoCD für die automatische Synchronisation des Cluster-Zustands mit dem Git-Repository.
Verwendete Technologien #
- Kubernetes (k3s): Eine leichtgewichtige, CNCF-zertifizierte Kubernetes-Distribution, ideal für Edge-Computing und Homelab-Umgebungen.
- ArgoCD: Ein deklaratives GitOps-Continuous-Delivery-Tool für Kubernetes.
- Helm: Ein Paketmanager für Kubernetes, der die Definition, Installation und Aktualisierung komplexer Kubernetes-Anwendungen vereinfacht.
- Kustomize: Ein Tool zur Anpassung von Kubernetes-Konfigurationen ohne Vorlagen.
- Traefik: Ein moderner Edge Router und Load Balancer für Kubernetes.
- MetalLB: Eine Load-Balancer-Implementierung für Bare-Metal-Kubernetes-Cluster.
- Cert-Manager: Automatisiert die Ausstellung und Verwaltung von TLS-Zertifikaten.
- NFS: Dient als persistenter Speicher für viele Anwendungen im Cluster.
Ordnerstruktur #
.forgejo/: Konfigurationen für Forgejo-spezifische Workflows und Renovate.ansible/: Ansible-Playbooks für die Cluster-Initialisierung und -Verwaltung.apps/: Der zentrale Ordner für alle Anwendungen. Jeder Unterordner inapps/repräsentiert eine eigenständige Anwendung oder eine Gruppe verwandter Dienste, die im Cluster bereitgestellt werden. Jede Anwendung enthält eineREADME.md-Datei mit detaillierter Dokumentation.doc/: Allgemeine Dokumentation und Anleitungen für den Cluster.init.yaml: Initialisierungs-Manifeste für ArgoCD.manifests.yaml: Globale Kubernetes-Manifeste, die clusterweit angewendet werden.renovate.json5: Konfiguration für Renovate Bot zur Automatisierung von Abhängigkeits-Updates.
Anwendungen im Cluster #
Detaillierte Informationen zu jeder einzelnen Anwendung, ihrer Funktion, Konfiguration und Abhängigkeiten finden Sie in den jeweiligen README.md-Dateien unterhalb des apps/-Verzeichnisses.
Beispielpfad: apps/<appname>/README.md
Installation und Bereitstellung #
Für eine detaillierte Anleitung zur Installation des Clusters und zur Bereitstellung der Anwendungen lesen Sie bitte die Dokumentation unter doc/install.md.
Testen von Anwendungen lokal (z.B. mit Podman) #
Um eine Anwendung lokal zu testen, bevor sie im Cluster bereitgestellt wird, können Sie kubectl kustomize in Kombination mit Helm verwenden:
1kubectl kustomize --enable-helm apps/<appfolder>
Für die Bereitstellung in einem lokalen Podman-Kubernetes-Cluster:
1helm template <project> bjw-s-labs/app-template --values <file.yaml> | podman play kube -
Beitrag und Richtlinien #
Beiträge zur Verbesserung dieses Repositorys sind willkommen. Bitte beachten Sie die bestehenden Konventionen und die Struktur der README.md-Dateien in den apps/-Unterordnern, um die Konsistenz der Dokumentation zu gewährleisten.