Beschrijving
Deze cursus bereidt je volledig voor op het CAPA — Certified Argo Project Associate examen. Met realistische oefenvragen, foutenanalyse en uitgebreide uitleg per antwoord studeer je gericht en efficiënt.
Onderwerpen
De cursus behandelt alle examenonderwerpen: ArgoCD, Argo Workflows, Argo Rollouts, applicatiebeheer en canary deployments.
Wat zit er in het pakket?
- 60 realistische oefenvragen met foutenanalyse
- Uitgebreide uitleg bij elk antwoord
- 180 dagen toegang
- Voortgangstracking per sessie
- BTW-factuur op aanvraag
Wat leer je in CAPA?
Het CAPA-examen test je kennis van de vier Argo-projecten: ArgoCD (GitOps), Argo Workflows (workflow-engine), Argo Rollouts (progressive delivery) en Argo Events (event-driven automation). Het is een meerkeuze-examen.
Studietijd: ~25 uur. Slagingspercentage: 75% van de beschikbare punten.
1. ArgoCD — GitOps voor Kubernetes
Architectuur
- API Server: REST API en webconsole
- Repository Server: haalt manifesten op uit Git
- Application Controller: vergelijkt gewenste en werkelijke toestand
- Dex: identity provider voor SSO
Installatie
# Installeren
kubectl create namespace argocd
kubectl apply -n argocd
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Initieel wachtwoord ophalen
kubectl -n argocd get secret argocd-initial-admin-secret
-o jsonpath="{.data.password}" | base64 -d
# CLI inloggen
argocd login localhost:8080
--username admin
--password <wachtwoord>
# Wachtwoord wijzigen
argocd account update-password
Application aanmaken
# Via CLI
argocd app create mijn-app
--repo https://github.com/mijnorg/mijn-app
--path overlays/productie
--dest-server https://kubernetes.default.svc
--dest-namespace productie
# Via YAML
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: mijn-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/mijnorg/mijn-app
targetRevision: HEAD
path: overlays/productie
destination:
server: https://kubernetes.default.svc
namespace: productie
syncPolicy:
automated:
prune: true # verwijder wat niet in Git staat
selfHeal: true # herstel handmatige wijzigingen
Synchronisatie en status
# Status bekijken
argocd app list
argocd app get mijn-app
# Handmatig synchroniseren
argocd app sync mijn-app
# Verschil bekijken (Git vs cluster)
argocd app diff mijn-app
# Geschiedenis
argocd app history mijn-app
# Terugdraaien naar vorige versie
argocd app rollback mijn-app <revisie-id>
Sync-statussen begrijpen
- Synced: clustertoestand = Git-toestand ✓
- OutOfSync: verschil gedetecteerd tussen Git en cluster
- Unknown: kan niet vergelijken
- Healthy: alle Kubernetes-resources zijn operationeel
- Degraded: een of meer resources zijn ongezond
- Progressing: resources zijn aan het bijwerken
AppProjects — multi-tenancy
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: team-backend
namespace: argocd
spec:
description: Backend team
sourceRepos:
- https://github.com/mijnorg/backend-*
destinations:
- namespace: backend-*
server: https://kubernetes.default.svc
clusterResourceWhitelist:
- group: ''
kind: Namespace
2. Argo Rollouts — progressive delivery
Wat is Argo Rollouts?
Een Kubernetes-controller die de standaard Deployment uitbreidt met geavanceerde deployment-strategieën. Naast de normale Deployment resource voegt het een Rollout-resource toe.
Canary deployment
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: mijn-app
spec:
replicas: 10
selector:
matchLabels:
app: mijn-app
template:
metadata:
labels:
app: mijn-app
spec:
containers:
- name: app
image: myapp:v1.0
strategy:
canary:
steps:
- setWeight: 10 # 10% verkeer naar nieuwe versie
- pause: {duration: 5m}
- setWeight: 25
- pause: {duration: 10m}
- setWeight: 50
- pause: {} # handmatig goedkeuren
- setWeight: 100
Blue/Green deployment
strategy:
blueGreen:
activeService: mijn-app-actief
previewService: mijn-app-preview
autoPromotionEnabled: false # handmatig promoten
# Status bekijken
kubectl argo rollouts get rollout mijn-app --watch
# Promoten (blue/green: switch verkeer)
kubectl argo rollouts promote mijn-app
# Terugdraaien
kubectl argo rollouts abort mijn-app
kubectl argo rollouts undo mijn-app
Geautomatiseerde analyse
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: succes-percentage
spec:
metrics:
- name: succes-percentage
interval: 1m
successCondition: result[0] >= 0.95
failureLimit: 3
provider:
prometheus:
address: http://prometheus:9090
query: |
sum(rate(http_requests_total{
app="mijn-app",status=~"2.."
}[5m]))
/
sum(rate(http_requests_total{
app="mijn-app"
}[5m]))
3. Argo Workflows
Wat is Argo Workflows?
Een Kubernetes-native workflow-engine. Elke stap is een container. Workflows kunnen worden gedefinieerd als sequentiële stappen of als een DAG (Directed Acyclic Graph — taken met afhankelijkheden).
Eenvoudige workflow
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: stap-1
template: echo
arguments:
parameters:
- name: bericht
value: "Stap 1"
- - name: stap-2 # runt na stap-1
template: echo
arguments:
parameters:
- name: bericht
value: "Stap 2"
- name: echo
inputs:
parameters:
- name: bericht
container:
image: busybox
command: [echo]
args: ["{{inputs.parameters.bericht}}"]
DAG (parallelle taken)
- name: data-pipeline
dag:
tasks:
- name: ophalen
template: data-ophalen
- name: transformeren-a # parallel na ophalen
template: transform
dependencies: [ophalen]
- name: transformeren-b # ook parallel na ophalen
template: transform
dependencies: [ophalen]
- name: laden # wacht op beide transformaties
template: data-laden
dependencies: [transformeren-a, transformeren-b]
# Workflow uitvoeren
argo submit workflow.yaml --watch
# Workflows bekijken
argo list
# Logs bekijken
argo logs <workflow-naam>
4. Argo Events
Wat is Argo Events?
Een event-driven automation framework. Het koppelt externe event-bronnen (webhooks, message queues, cron, S3) aan Kubernetes-acties (Argo Workflows starten, pods aanmaken, Slack-berichten sturen).
Drie kerncomponenten
- EventSource: ontvangt events van externe bronnen (GitHub webhook, Kafka, SQS, cron)
- Sensor: luistert naar events en triggert acties bij bepaalde voorwaarden
- EventBus: de berichtentransportlaag tussen EventSource en Sensor (NATS of Jetstream)
# EventSource — GitHub webhook
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: github
spec:
github:
mijn-repo:
owner: mijnorg
repository: mijn-app
events:
- push
webhook:
endpoint: /push
port: "12000"
method: POST
---
# Sensor — trigger workflow bij push
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: github-sensor
spec:
dependencies:
- name: github-push
eventSourceName: github
eventName: mijn-repo
triggers:
- template:
name: argo-workflow
argoWorkflow:
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: ci-run-
spec:
entrypoint: build
5. Argo in de praktijk
Typische CI/CD-pipeline met Argo
- Ontwikkelaar pusht code naar GitHub
- Argo Events ontvangt de webhook
- Argo Workflows voert de CI-pipeline uit (build, test, push image)
- Workflow updatet de image-tag in de GitOps-repo
- ArgoCD detecteert de wijziging en deployt via Argo Rollouts
- Argo Rollouts voert een canary-deployment uit met automatische analyse
ApplicationSet — meerdere clusters
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- list:
elements:
- cluster: productie
url: https://productie.cluster.example.com
- cluster: staging
url: https://staging.cluster.example.com
template:
metadata:
name: '{{cluster}}-guestbook'
spec:
source:
repoURL: https://github.com/mijnorg/guestbook
path: overlays/{{cluster}}
destination:
server: '{{url}}'
namespace: guestbook
Officiële documentatie
- ArgoCD documentatie
- Argo Rollouts documentatie
- Argo Workflows documentatie
- Argo Events documentatie
- CAPA examenpagina (Linux Foundation)
Tip: voor CAPA is het begrijpen van de vier Argo-projecten en hun onderlinge samenhang het allerbelangrijkste. Weet waarvoor elk project bedoeld is en hoe ze samenwerken in een complete CI/CD-pipeline.





Beoordelingen
Er zijn nog geen beoordelingen.