Certified Argo Project Associate (CAPA)

 39,00

Behaal de CAPA-certificering en bewijs dat je de Argo-projecten (ArgoCD, Argo Workflows, Argo Rollouts) beheerst voor GitOps en CI/CD-pipelines op Kubernetes.

Artikelnummer: CERTFORGE-CAPA Categorie:

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

  1. Ontwikkelaar pusht code naar GitHub
  2. Argo Events ontvangt de webhook
  3. Argo Workflows voert de CI-pipeline uit (build, test, push image)
  4. Workflow updatet de image-tag in de GitOps-repo
  5. ArgoCD detecteert de wijziging en deployt via Argo Rollouts
  6. 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

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.

Enkel ingelogde klanten die dit product gekocht hebben, kunnen een beoordeling schrijven.