3.3 KiB
Argo CD + Git Demo Bundle
Dieses Bundle setzt eine kleine Demo auf einem bereits existierenden Kubernetes-Cluster auf.
Ziel der Demo:
- Ein kleines Git im Cluster (Gitea)
- Argo CD als GitOps-CD
- Eine kleine Helm-App
- Ein sichtbarer Upgrade-Flow nur über Git/Helm values
Architektur
- Namespace
gitea: internes Demo-Git - Namespace
argocd: Argo CD - Namespace
demo-app: Demo-Anwendung
Voraussetzung
kubectlZugriff auf den Cluster- ausgehender Internetzugriff des Clusters auf Container-Images/Helm Charts
- optional
helm
Schnellstart
-
Namespaces und Basis anlegen:
kubectl apply -f bootstrap/namespaces.yaml -
Gitea installieren:
helm repo add gitea-charts https://dl.gitea.com/charts/ helm repo update helm upgrade --install gitea gitea-charts/gitea \ -n gitea -f bootstrap/gitea-values.yaml -
Argo CD installieren:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -
Warten bis Argo CD und Gitea laufen:
kubectl -n argocd rollout status deploy/argocd-server --timeout=300s kubectl -n gitea rollout status statefulset/gitea-postgresql --timeout=300s || true kubectl -n gitea rollout status deploy/gitea-http --timeout=300s || true -
Gitea lokal erreichbar machen:
kubectl -n gitea port-forward svc/gitea-http 3000:3000Dann im Browser
http://localhost:3000öffnen. -
Initialen Admin-User anlegen (falls Setup-Seite erscheint) oder vorhandene Logins nutzen.
-
Ein neues Repo erstellen, z. B.
gitops-demo. -
Dieses Bundle in euer Repo pushen:
git init git branch -M main git add . git commit -m "initial demo" git remote add origin http://localhost:3000/<ORG_OR_USER>/gitops-demo.git git push -u origin main -
Argo CD Repo-Secret anpassen:
- Datei
argocd/repo-secret.yaml url,username,passwordauf euer Gitea-Repo setzen
- Datei
-
Repo-Secret und App deployen:
kubectl apply -f argocd/repo-secret.yaml
kubectl apply -f argocd/project.yaml
kubectl apply -f apps/demo-app.yaml
- Argo CD UI öffnen:
kubectl -n argocd port-forward svc/argocd-server 8080:443
UI: https://localhost:8080
Admin-Passwort:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d; echo
Demo-Flow für Kundentermin
- Zeige in Gitea die Datei
charts/demo-app/values.yaml - In Argo CD ist die App
Healthy/Synced - Ändere z. B.:
image.tag: "1.25"->"1.27"- oder
replicaCount: 1->2 - oder
message: "v1"->"v2 upgraded by gitops"
- Commit + Push
- Argo CD erkennt die Git-Änderung und rollt aus
- Zeige in Kubernetes:
kubectl -n demo-app get deploy,pods,svc,cm kubectl -n demo-app rollout status deploy/demo-app
Sauberer Upgrade-Nachweis
- Git ist die einzige Wahrheit: Keine direkte Cluster-Änderung
- Änderung nur im Repo
- Argo CD erkennt Drift und synchronisiert
- Rollout sauber über Deployment-Update
Optional: Image Updater
Wenn ihr in einer zweiten Demo auch zeigen wollt, wie neue Container-Tags automatisch in Git zurückgeschrieben werden, könnt ihr zusätzlich Argo CD Image Updater evaluieren. Für diese Demo ist er nicht nötig.