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.