5.8 KiB
07 — ArgoCD
Datum: 2026-03-17 Version: ArgoCD v3.3.4 (Helm Chart argo-cd-9.4.12) Namespace: argocd URL: https://argocd.192.168.11.170.nip.io
Übersicht
ArgoCD ist ein deklarativer GitOps Continuous Delivery Controller für Kubernetes. Es synchronisiert Kubernetes-Manifeste aus Git-Repositories automatisch in den Cluster. Änderungen im Git → ArgoCD erkennt Drift → automatisches oder manuelles Sync in den Cluster.
Voraussetzungen
- Traefik Ingress Controller aktiv (
04-traefik.md) - cert-manager installiert (
05-cert-manager.md) - Alle 3 Nodes
Ready
Installation
1. Argo Helm Repository hinzufügen
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
Ausgabe:
"argo" has been added to your repositories
...Successfully got an update from the "argo" chart repository
2. Namespace erstellen
kubectl create namespace argocd
3. ArgoCD per Helm installieren
helm install argocd argo/argo-cd \
--namespace argocd \
--version 9.4.12 \
--set server.ingress.enabled=true \
--set server.ingress.ingressClassName=traefik \
--set "server.ingress.hostname=argocd.192.168.11.170.nip.io" \
--set "server.ingress.tls=true" \
--set configs.params."server\.insecure"=true \
--set "server.ingress.annotations.traefik\.ingress\.kubernetes\.io/router\.entrypoints=websecure" \
--set "server.ingress.annotations.traefik\.ingress\.kubernetes\.io/router\.tls=true" \
--wait \
--timeout 10m
Wichtige Flags:
configs.params."server\.insecure"=true— ArgoCD Server läuft ohne eigenes TLS, da TLS durch Traefik terminiert wird (SSL-Termination am Ingress)server.ingress.tls=true— Traefik stellt HTTPS bereit- Traefik-Annotations erzwingen HTTPS-Entrypoint
Hinweis: Hostname-Parameter
Der Helm-Chart verwendet server.ingress.hostname (nicht hosts[0]).
Bei Verwendung von hosts[0] wird der Default-Hostname argocd.example.com
nicht überschrieben. Korrekte Variante ist hostname.
Pod-Status
kubectl get pods -n argocd -o wide
NAME READY STATUS NODE
argocd-application-controller-0 1/1 Running rnk-wrk02
argocd-applicationset-controller-6fdf946c79-28mzq 1/1 Running rnk-wrk02
argocd-dex-server-855967dc45-q4l6n 1/1 Running rnk-wrk02
argocd-notifications-controller-75cd85cdc-6zmqg 1/1 Running rnk-wrk02
argocd-redis-75b6f7c5cf-hjkhc 1/1 Running rnk-wrk02
argocd-redis-secret-init-xn472 0/1 Completed rnk-wrk02
argocd-repo-server-59d5dccbf7-d5s99 1/1 Running rnk-wrk01
argocd-server-56f7f5d5d9-ll626 1/1 Running rnk-wrk01
Alle 7 Pods laufen stabil. argocd-redis-secret-init ist ein einmaliger
Init-Job (Status Completed = korrekt).
Komponenten:
| Pod | Funktion |
|---|---|
argocd-server |
Web-UI + API Server |
argocd-application-controller |
Überwacht Cluster-State vs. Git-State |
argocd-repo-server |
Git-Repository-Zugriff, Manifest-Rendering |
argocd-applicationset-controller |
Automatisierte Application-Sets |
argocd-dex-server |
SSO / OIDC Identity Provider |
argocd-redis |
Cache für Application State |
argocd-notifications-controller |
Benachrichtigungen (Slack, Email etc.) |
Ingress
kubectl get ingress -n argocd
NAME CLASS HOSTS ADDRESS PORTS
argocd-server traefik argocd.192.168.11.170.nip.io 192.168.11.170,192.168.11.171,192.168.11.172 80, 443
TLS wird von Traefik terminiert. ArgoCD selbst läuft im insecure-Modus
(HTTP intern), was bei Ingress-TLS-Terminierung der empfohlene Ansatz ist.
Erster Login
URL
https://argocd.192.168.11.170.nip.io
Browser zeigt Zertifikatswarnung (Traefik self-signed) → "Trotzdem fortfahren"
Zugangsdaten
| Feld | Wert |
|---|---|
| Benutzername | admin |
| Passwort (initial) | T8T1rLY0ac2MqWiC |
Admin-Passwort abrufen (jederzeit)
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d && echo
Sicherheitshinweis: Nach dem ersten Login und Passwortänderung das Initial-Secret löschen:
kubectl delete secret argocd-initial-admin-secret -n argocd
Helm Release Info
NAME NAMESPACE REVISION STATUS CHART APP VERSION
argocd argocd 2 deployed argo-cd-9.4.12 v3.3.4
Revision 2: Hostname-Fix von argocd.example.com → argocd.192.168.11.170.nip.io
ArgoCD CLI (optional)
# CLI installieren
curl -sSL -o /usr/local/bin/argocd \
https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
# Login
argocd login argocd.192.168.11.170.nip.io \
--username admin \
--password T8T1rLY0ac2MqWiC \
--insecure
Erste Application deployen (Beispiel)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/mein-user/mein-repo.git
targetRevision: HEAD
path: k8s/
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
kubectl apply -f my-app.yaml
Nächste Schritte
- Erstes Git-Repository in ArgoCD registrieren
- Admin-Passwort ändern und Initial-Secret löschen
- Homelab-Manifeste in Git-Repository ablegen
- ArgoCD App für Longhorn/cert-manager Konfiguration erstellen
- SSO via Dex konfigurieren (optional)
- Notifications für Sync-Status einrichten (optional)