Free CAPA (Certified Argo Project Associate) practice: the 4 official domains, exam-style questions, a timed practice exam and more.
Play the CAPA map → · Official CAPA exam page
Fundamentals, artifacts, templates, the Workflow spec, DAGs, data processing
Fundamentals, syncing, Applications, Helm and Kustomize, reconciliation patterns
Fundamentals, progressive strategies, AnalysisTemplate and AnalysisRun
Fundamentals, components and architecture
Answer: spec.entrypoint. Templates are defined under spec.templates and called by name.
Answer: A single container, like a Pod spec container. Each step of a Workflow runs in its own Pod.
Answer: An inline source script that is written to a file and executed. The script’s stdout becomes the result output parameter.
Answer: resource. action: create/apply/patch/delete with successCondition/failureCondition.
Answer: Pauses the Workflow until resumed (manually or after a duration). Useful for approvals: argo resume <workflow>.
Answer: Put them in the same inner list (same step group). Outer list items run sequentially; items in one inner list run in parallel.
Answer: dependencies: [A, B] on task C. Or depends: "A && B" with richer conditions such as A.Succeeded.
Answer: depends with a result, e.g. depends: "A.Failed". depends supports .Succeeded, .Failed, .Errored, .Skipped and .Daemoned.
Answer: An output parameter of A referenced as {{steps.A.outputs.parameters.name}}. In a DAG use {{tasks.A.outputs.parameters.name}}.
Answer: valueFrom.path — a file the container writes. It can also come from a JSON path, supplied value or expression.
Answer: An artifact repository such as S3, GCS, Azure Blob or MinIO. The default repository is configured in the workflow-controller ConfigMap.
Answer: A when expression, e.g. when: "{{steps.flip.outputs.result}} == heads". when is evaluated before the step runs.
Answer: retryStrategy (e.g. limit: 3, retryPolicy: OnFailure). Backoff can be configured with duration and factor.
Answer: A template that always runs at the end of the Workflow, e.g. for notifications or cleanup. It runs whether the Workflow succeeded or failed; check {{workflow.status}}.
Answer: CronWorkflow. It supports concurrencyPolicy like Kubernetes CronJobs.
Answer: argo submit --from workflowtemplate/<name>. Pass parameters with -p name=value.
Answer: templateRef with name and template. Add clusterScope: true for a ClusterWorkflowTemplate.
Answer: Runs a whole WorkflowTemplate as the Workflow’s spec. The Workflow only supplies arguments.
Answer: argo get <workflow>. argo logs <workflow> prints the step logs.
Answer: spec.parallelism. Templates can also set their own parallelism.
Answer: A JSON list, typically produced by a previous step’s output. withItems takes a static list; withSequence generates numbers.
Answer: spec.serviceAccountName (or the namespace default). Give it only what the steps need; the executor needs permissions to report results.
Answer: Reuses a cached result for the same key instead of running again. The cache is backed by a ConfigMap.
Answer: spec.podGC (e.g. strategy: OnPodSuccess). ttlStrategy deletes the Workflow object itself after a while.
Answer: The workflow-controller. The Argo Server provides the UI and API; argoexec runs inside Pods.
Answer: The wait container (argoexec). An init container also loads input artifacts.
Answer: Fan-out over items with parallel steps, then fan-in to aggregate. Map-reduce style jobs are a classic Workflows use case.
Answer: Mount it as a volume or env var in the step’s container spec. Parameters and outputs are visible in the Workflow status and UI.
Answer: spec.activeDeadlineSeconds. Templates can also set activeDeadlineSeconds.
Answer: The Git branch, tag or commit (or chart version) to deploy. HEAD tracks the default branch.
Answer: spec.destination (server or name, plus namespace). https://kubernetes.default.svc is the cluster Argo CD runs in.
Answer: Restricting which repos, clusters, namespaces and resource kinds Applications may use. The default project allows everything.
Answer: argocd app sync <app>. refresh re-reads Git; sync applies changes.
Answer: Invalidates the manifest cache and regenerates manifests from Git. Useful when a Helm chart dependency changed without a Git change.
Answer: CreateNamespace=true. Set it under syncPolicy.syncOptions.
Answer: PruneLast=true. Other options include Replace, ServerSideApply and ApplyOutOfSyncOnly.
Answer: Annotate it argocd.argoproj.io/sync-options: Prune=false. The resource then stays even when removed from Git.
Answer: ignoreDifferences on the Application (e.g. jsonPointers: /spec/replicas). Without it, the app shows OutOfSync and selfHeal would fight the HPA.
Answer: Progressing. Healthy, Progressing, Degraded, Suspended, Missing and Unknown are the built-in states.
Answer: The annotation argocd.argoproj.io/hook (PreSync, Sync, PostSync, SyncFail, PostDelete). hook-delete-policy controls cleanup, e.g. HookSucceeded.
Answer: After wave 1 is applied and healthy. Within a wave, resources are ordered by kind and name.
Answer: source.chart with repoURL of a Helm repository (or source.path with a chart in Git). Helm values go under source.helm.values or valueFiles.
Answer: No — it renders templates (helm template) and applies the manifests. That is why helm list shows no release for Argo CD apps.
Answer: spec.sources (multiple sources) with a ref to the values repo. Values files can be referenced as $ref/path.
Answer: Git generator (directories). The files variant reads parameters from JSON/YAML files.
Answer: Matrix. e.g. every cluster × every app directory.
Answer: A parent Application whose manifests are other Application resources. ApplicationSets are the more dynamic alternative.
Answer: argocd cluster add <context>. It creates a ServiceAccount in the target cluster and stores credentials as a Secret.
Answer: Kubernetes Secrets in the argocd namespace labelled as repository secrets. Label argocd.argoproj.io/secret-type: repository (or repo-creds).
Answer: argocd-repo-server. The application-controller compares and syncs; the server exposes UI/API.
Answer: argocd-application-controller. It runs the reconciliation loop.
Answer: About every 3 minutes (configurable), unless a webhook triggers a refresh. Webhooks from the Git provider make it near-instant.
Answer: Pruning every resource when the source suddenly renders nothing. An accidentally emptied path would otherwise delete the app.
Answer: Revert the commit in Git (or argocd app rollback when auto-sync is off). With auto-sync on, a manual rollback is immediately re-synced to Git.
Answer: The argocd-rbac-cm ConfigMap (policy.csv). Policies grant actions like sync on applications per project.
Answer: Argo CD reverts it to the Git state automatically. Without selfHeal, the app just shows OutOfSync.
Answer: spec.workloadRef pointing at the Deployment. Scale the Deployment down once the Rollout is healthy.
Answer: kubectl argo rollouts promote <name>. promote --full skips the remaining steps.
Answer: kubectl argo rollouts abort <name>. retry restarts an aborted rollout.
Answer: Each selects the stable or canary ReplicaSet so a traffic router can split by weight. Rollouts injects a hash selector into each Service.
Answer: Approximated by scaling the canary ReplicaSet to about 20% of replicas. Fine-grained weights need Istio, Gateway API, ALB or similar.
Answer: One execution of an AnalysisTemplate during a rollout. Its result (Successful, Failed, Inconclusive) drives promotion or abort.
Answer: Pauses the Rollout for a human decision. Set inconclusiveLimit to bound it.
Answer: prePromotionAnalysis. postPromotionAnalysis runs after the switch.
Answer: It runs continuously during the canary steps instead of at one step. Defined under strategy.canary.analysis.
Answer: job. Job success counts as a successful measurement.
Answer: Keeps the old ReplicaSet running for a while after the switch, for fast rollback. The previous ReplicaSet stays up (30 seconds by default) so switching back is instant.
Answer: A UI started with kubectl argo rollouts dashboard. It shows Rollouts, steps and analysis runs.
Answer: blueGreen. Canary shifts traffic in steps.
Answer: EventSource. Each EventSource type knows how to talk to one kind of system.
Answer: An EventBus (usually named default). NATS JetStream is the common EventBus implementation.
Answer: Dependency filters (data, exprs, context). Filters inspect event data such as body.ref.
Answer: Submits an Argo Workflow when dependencies are satisfied. Parameters can copy event data into the Workflow.
Answer: Trigger parameters mapping event data (e.g. body.after) into the Workflow spec. parameters: src: dependencyName + dataKey, dest: spec path.
Answer: Two dependencies combined in the trigger conditions (e.g. "dep1 && dep2"). Conditions use boolean logic over dependency names.
Answer: calendar. It supports cron schedules and intervals.
Answer: RBAC to create workflows in the target namespace. Set template.serviceAccountName on the Sensor.
Answer: CloudEvents. CloudEvents is a CNCF specification for event data.
Answer: dag. A DAG runs every task whose dependencies are met, so B and C start together once A succeeds.
Answer: As an output artifact stored in the artifact repository. Parameters are for small strings; artifacts are files stored in S3/GCS/MinIO between steps.
Answer: In a WorkflowTemplate (or ClusterWorkflowTemplate) referenced with templateRef. WorkflowTemplates are reusable, versioned cluster resources.
Answer: syncPolicy.automated.selfHeal: true. selfHeal re-syncs when live state drifts from Git; prune only deletes resources removed from Git.
Answer: Git was applied, but the resources are unhealthy (e.g. Pods crashing). Sync status compares with Git; health status reflects the live resources. They are independent.
Answer: A Job annotated as a PreSync hook (or in a lower sync wave). Hooks and waves order the sync; PreSync runs before the main manifests are applied.
Answer: An ApplicationSet with a cluster generator. ApplicationSet generators template Applications per cluster, directory or list item.
Answer: The rollout waits indefinitely until it is promoted. An indefinite pause needs `kubectl argo rollouts promote`.
Answer: An AnalysisTemplate with a Prometheus metric and failureCondition, used in the canary steps. A failing AnalysisRun aborts the Rollout and shifts traffic back to stable.
Answer: activeService. previewService points at the new version for testing; promotion switches activeService to it.
Answer: A GitHub (or webhook) EventSource, the EventBus, and a Sensor with an Argo Workflow trigger. EventSource ingests, EventBus transports, Sensor evaluates dependencies and fires the trigger.
Answer: Sensor. Sensors hold the dependencies and filters, and run triggers when they are satisfied.