Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/

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 in apps/ repräsentiert eine eigenständige Anwendung oder eine Gruppe verwandter Dienste, die im Cluster bereitgestellt werden. Jede Anwendung enthält eine README.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.