6.6 KiB
Oefening 01 — ArgoCD bootstrappen
Tijd: ~30 minuten Doel: ArgoCD aan de praat krijgen op je cluster en de App-of-Apps opzetten.
Wat je leert
- ArgoCD installeren via Helm
- Het App-of-Apps patroon: één ArgoCD Application die alle andere beheert
- Hoe ArgoCD je Git-repo in de gaten houdt en de cluster-staat synchroniseert
Vereisten
De VM draait en je bent ingelogd:
VM
kubectl get nodes # NAME STATUS ROLES AGE VERSION # ops-demo Ready control-plane,master ...
Stappen
1. Startpunt kiezen
Als je de quickstart uit README.md al hebt gedaan
(./scripts/host/bootstrap-from-host.sh), dan is bootstrap al uitgevoerd.
Ga in dat geval direct naar stap 3.
Wil je vanaf een blanke VM starten, voer dan bootstrap handmatig uit in de VM:
VM
./scripts/vm/bootstrap.sh
HOST: Mac
./scripts/host/bootstrap-from-host.sh
HOST: Windows
./scripts/host/bootstrap-from-host.ps1
Het script doet het volgende:
- Detecteert de URL van jouw fork op basis van
git remote - Maakt de
argocdnamespace aan - Installeert ArgoCD via Helm
- Past
apps/project.yamltoe - Genereert
apps/root.yamlmet jouw fork-URL en past het toe
Aan het einde zie je het admin-wachtwoord. Kopieer het nu.
2. ArgoCD UI openen
Op je laptop:
HOST
./scripts/host/argocd-ui-tunnel.sh
Open http://localhost:8080.
Login: admin / het wachtwoord uit de output van het script.
3. Repository in ArgoCD registreren
Het bootstrap-script installeert ArgoCD, maar registreert jouw Git-repo niet in ArgoCD.
Daarom moet je in deze stap expliciet je repo toevoegen, anders blijft root op Unknown/authentication required.
Kies een van deze twee paden:
Pad A — via ArgoCD UI
- Ga naar Settings → Repositories → Connect Repo
- Vul je repo-URL in
- Auth type: username + password (bij HTTPS)
- Username: je GitHub username
- Password: je GitHub PAT
- Project:
workshop
Pad B — via Kubernetes Secret (zonder UI)
- Maak een Secret in namespace
argocd - Label op die Secret:
argocd.argoproj.io/secret-type=repository - Secret-data met minimaal:
type: giturl: <jouw-repo-url>username: <jouw-github-user>password: <jouw-github-pat>project: workshop
<jouw-repo-url> kan technisch HTTPS of SSH zijn, maar:
- Gebruik je een GitHub PAT (fine-grained of classic), dan gebruik je een HTTPS repo-URL:
https://github.com/<user>/<repo>.git
- Gebruik je een SSH repo-URL:
git@github.com:<user>/<repo>.git- dan authenticate je met een SSH key (niet met PAT).
Token/credentials kiezen
Gebruik credentials die read-toegang geven tot je Git-repo.
Als je GitHub gebruikt:
- Ga naar Settings → Developer settings → Personal access tokens
- Maak bij voorkeur een fine-grained token
- Geef de token toegang tot jouw workshop-repo
- Zet minimaal repository permission:
Contents: Read
Dit is voldoende voor ArgoCD sync (read-only).
Gebruik je later Tekton om te pushen, dan heb je Contents: Read and write nodig.
Bij HTTPS + PAT geldt:
username= je accountnaam op je Git-provider (bij GitHub: je GitHub username, niet je e-mailadres)password= de PAT zelf
Een classic token kan ook, met scope repo, maar fine-grained heeft de voorkeur.
Wat is “Project” in ArgoCD?
Een ArgoCD Project (AppProject) bepaalt welke repos en destinations een set Applications mag gebruiken.
In deze workshop is dat project workshop (zie apps/project.yaml).
Gebruik hier dus workshop als projectwaarde.
default werkt soms technisch ook, maar dan omzeil je de workshop-grenzen die we juist willen laten zien.
4. root.yaml committen en pushen
Het bootstrap-script heeft apps/root.yaml aangemaakt met jouw fork-URL.
Dit bestand moet in je repo staan zodat ArgoCD het kan synchroniseren:
HOST
git add apps/root.yaml git commit -m "feat: add root app-of-apps" git push
5. De root Application bekijken
In de ArgoCD UI zie je nu de root application verschijnen. Klik erop.
- Hij kijkt naar de
apps/directory in jouw fork - Alles wat je daar commit, pikt ArgoCD automatisch op
Controleer ook via de CLI:
VM
kubectl get applications -n argocd
6. ArgoCD zichzelf laten beheren (optioneel maar mooi)
Maak apps/argocd.yaml aan:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argocd
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "0"
spec:
project: workshop
sources:
- repoURL: https://argoproj.github.io/argo-helm
chart: argo-cd
targetRevision: "7.7.11"
helm:
valueFiles:
- $values/manifests/argocd/values.yaml
- repoURL: JOUW_FORK_URL
targetRevision: HEAD
ref: values
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
Vervang JOUW_FORK_URL door jouw fork-URL (staat ook in apps/root.yaml).
Commit en push: ArgoCD beheert zichzelf vanaf nu via Git.
Verwacht resultaat
NAME SYNC STATUS HEALTH STATUS
root Synced Healthy
argocd Synced Healthy
Probleemoplossing
| Symptoom | Oplossing |
|---|---|
| root Application toont "Unknown" | Nog niet gepusht, of ArgoCD kan de repo nog niet bereiken — even wachten |
root toont Unknown + authentication required |
Repository-toegang ontbreekt of credentials zijn fout. Controleer stap 3 (UI of Secret) en refresh daarna de app. |
| Helm install time-out | kubectl get pods -n argocd — waarschijnlijk nog images aan het downloaden |
| UI toont "Unknown" sync status | Klik Refresh op de application |
Volgende stap
In Oefening 02 deploy je je eerste echte applicatie via GitOps — geen kubectl apply, alleen een YAML-bestand in Git.