4.3 ArgoCD
ArgoCD ist ein leistungsstarkes Tool zur Automatisierung und Verwaltung von Kubernetes-Deployments. Es folgt dem GitOps-Ansatz, bei dem die gesamte Cluster-Konfiguration in einem Git-Repository gespeichert wird und als Single Source of Truth dient.
Vorteile von ArgoCD
-
GitOps-Prinzip: Anwendungen und Cluster-Konfigurationen werden aus Git-Repositories synchronisiert.
-
Automatisierung: Automatische Bereitstellung und Synchronisierung von Ressourcen bei Änderungen im Repository.
-
Visualisierung: Übersichtliches Web-Dashboard zur Überwachung von Anwendungen und deren Status.
-
Rollback-Funktionalität: Einfache Wiederherstellung fehlerhafter Deployments.
Installation von ArgoCD
Die Installation erfolgt direkt im Kubernetes-Cluster.
1. Namespace erstellen
ArgoCD wird in einem separaten Namespace installiert:
kubectl create namespace argocd
2. Installation mittels Manifeste
Die offiziellen Manifeste werden verwendet:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
3. Zugriff auf das Dashboard
Das Web-Dashboard kann mit einem Port-Forward aufgerufen werden:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Das Dashboard ist dann unter https://localhost:8080 verfügbar.
Einrichtung einer Anwendung
Freigabe über MetalLB
ArgoCD kann mit einer externen IP-Adresse über MetalLB bereitgestellt werden, um den Zugriff ohne Port-Forward zu ermöglichen. Dazu wird ein LoadBalancer-Service erstellt:
1. Service-Konfiguration
Erstellen einer YAML-Datei argocd-loadbalancer.yaml:
apiVersion: v1
kind: Service
metadata:
name: argocd-server
namespace: argocd
spec:
type: LoadBalancer
selector:
app.kubernetes.io/name: argocd-server
ports:
- port: 443
targetPort: 8080
protocol: TCP
Wenden Sie diese Konfiguration an:
kubectl apply -f argocd-loadbalancer.yaml
2. Überprüfen der Zuweisung
Prüfen Sie, ob MetalLB eine externe IP-Adresse für den ArgoCD-Service zugewiesen hat:
kubectl get svc -n argocd argocd-server
Erwartetes Ergebnis:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.96.0.25 192.168.1.102 443:31564/TCP 1m
3. Zugriff über die externe IP
Der Zugriff auf ArgoCD kann jetzt direkt über die zugewiesene externe IP erfolgen:
https://192.168.1.102
Melden Sie sich mit den Initial-Anmeldedaten an, die über den folgenden Befehl abgerufen werden können:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
1. Projekt erstellen
Ein Projekt legt die Grenzen und Ressourcen für die Anwendungen fest:
argocd proj create eventgallery --description "Projekt für die Event-Gallery-Deployments" \
--dest https://kubernetes.default.svc --dest-namespace default \
--src https://github.com/noluchs/SEM4-EVENTGALLERY.git
2. Anwendung erstellen
Eine Anwendung wird erstellt, um das gesamte Projekt zu synchronisieren. Dazu wird das ArgoCD-CLI-Tool verwendet:
argocd app create eventgallery \
--project eventgallery \
--repo https://github.com/noluchs/SEM4-EVENTGALLERY.git \
--path infrastructure/k8s \
--dest-server https://kubernetes.default.svc \
--dest-namespace default
Diese Konfiguration verknüpft das Git-Repository mit dem Kubernetes-Cluster und synchronisiert alle Ressourcen im Verzeichnis infrastructure/k8s.
3. Synchronisierung der Anwendung
Nach der Erstellung wird die Anwendung synchronisiert, um sicherzustellen, dass alle Ressourcen im Cluster bereitgestellt werden:
argocd app sync eventgallery
Die Synchronisation prüft den aktuellen Status des Clusters und gleicht ihn mit der Konfiguration im Git-Repository ab. Etwaige Abweichungen werden automatisch korrigiert.
Web-Dashboard-Ansicht
Im Dashboard werden der Status der Anwendungen, deren Synchronisation mit dem Git-Repository und etwaige Fehler visualisiert. Es ermöglicht eine einfache Verwaltung und Überwachung der Deployments.
Verlinkung der Konfigurationsdateien
Die Konfigurationsdateien für das ArgoCD-Projekt sind im Repository verfügbar:
-
ArgoCD Projekt-Manifest: Definiert das Projekt “eventgallery” mit den Git-Repository-Details, Synchronisationsrichtlinien und Ziel-Cluster.
-
Anwendungsmanifeste: Beinhaltet die Ressourcen-Definitionen für die Kubernetes-Deployments.
Weitere Informationen
Detaillierte Anleitungen und erweiterte Konfigurationsoptionen sind in der offiziellen ArgoCD-Dokumentationverfügbar.