All Linux Foundation / CNCF exams
Free CAPA practice test: 30 questions with answers
30 original questions for Certified Argo Project Associate (CAPA), drawn from every topic area. Answer each one to see whether you got it right and why. No sign-up.
- Free questions
- 30
- Full bank
- 112 questions
- Real exam
- 90 min
All 30 CAPA questions with answers
The same questions as the test above, grouped by exam topic. Open any question to see the answer and explanation.
Argo Workflows (8 questions)
Question 1
A platform engineer submits a Workflow manifest, but the run fails immediately because the controller cannot find the template it was told to start with. Which field should the engineer check first?
- Ametadata.labels, which must include a tag that matches the controller version
- Bspec.arguments, which must contain at least one parameter with a default value
- Cspec.serviceAccountName, which must point to a service account with cluster-admin rights
- Dspec.entrypoint, which must match the name of a template defined under spec.templates
Show answer and explanationHide answer
Correct answer: Dspec.entrypoint names the template where a run begins, so it must match a template name in spec.templates. Labels, arguments and the service account do not decide which template starts, and cluster-admin rights are not a fix for a missing entrypoint.
Question 2
In Argo Workflows, what does a step that uses a container template become when the workflow runs?
- AA long-running Deployment that keeps the container alive between runs
- BA ConfigMap that stores the container output for later steps
- CA CronJob that starts the container on a fixed schedule
- DA Kubernetes pod that runs the container image for that step
Show answer and explanationHide answer
Correct answer: DEach container-based node in a workflow runs as a pod created for that step. A Deployment is meant for long-running services, a CronJob is a separate scheduled resource, and a ConfigMap cannot run code.
Question 3
A two-step workflow must pass a generated report file from a generate step to a publish step. The workflow controller ConfigMap has no artifact repository configured. What is the most likely outcome when the generate step tries to save its output artifact?
- AThe publish step receives an empty directory, because artifacts default to in-memory storage on the node
- BThe step fails to save the artifact, so the workflow stops before the publish step runs
- CThe file is copied straight into the publish pod's temp folder over the pod network
- DThe controller stores the file inside the workflow status object, and publish reads it from there
Show answer and explanationHide answer
Correct answer: BPassing output artifacts between steps needs an artifact repository such as an S3-compatible bucket, so without one the step cannot save its output and the workflow fails. The other options describe storage behaviour that Argo Workflows does not use for artifacts.
Question 4
Which two statements about artifacts in Argo Workflows are correct? (Choose two.)
- AAn output artifact from one step can be declared as an input artifact of a later step
- BArtifacts are stored in the workflow status field, so they must be small enough for etcd
- CPassing artifacts between steps needs an artifact repository configured for the controller
- DEvery artifact is shared automatically through the Kubernetes API server without any storage
Show answer and explanationHide answer
Correct answer: A, COutput artifacts can feed later steps as input artifacts, and that transfer uses an object-store artifact repository configured for the controller. Artifacts are not kept in the workflow status, and the API server does not carry file contents, so the other two statements are wrong.
Question 5
A platform team maintains a standard build-and-test sequence used by several namespaces. The team wants one place to update the steps that every Workflow uses. Which approach fits best?
- ACopy the full sequence into each Workflow manifest so every team can adjust it locally
- BPlace the sequence in a Secret and mount it into each workflow pod at startup
- CStore the sequence once as a WorkflowTemplate and reference it from each Workflow
- DCreate one CronWorkflow per namespace that runs the sequence every hour regardless of commits
Show answer and explanationHide answer
Correct answer: CA WorkflowTemplate holds one shared definition that many Workflows can reference, so an update applies to every caller. Copying spreads changes across manifests, Secrets are meant for sensitive values rather than workflow logic, and a CronWorkflow controls scheduling rather than sharing steps.
Question 6
A workflow includes a long data export, and the team wants the controller to stop the whole run if it exceeds a fixed time limit set in the spec. Which field provides this?
- Aspec.ttlStrategy, which removes the finished workflow object automatically after a set period
- Bspec.parallelism, which caps how many nodes of the workflow may run at the same time
- Cspec.podGC, which chooses when completed workflow pods are deleted
- Dspec.activeDeadlineSeconds, which limits how long the workflow may run from its start
Show answer and explanationHide answer
Correct answer: DactiveDeadlineSeconds is the workflow-level time limit that makes the controller terminate a run that takes too long. ttlStrategy only cleans up after completion, parallelism limits concurrency, and podGC controls when finished pods are deleted, so none of them enforces a run-time limit.
Question 7
A dag template has tasks named build, unit-test and package. The team wants build and unit-test to run in parallel, with package starting only after both have succeeded. How should package be declared?
- AWith a dependency on build only, because unit-test always finishes before package can begin running
- BIn a separate steps template that runs before build, so package is always the first task
- CWith dependencies listing build and unit-test, so it waits until both finish successfully
- DWith a withItems list holding build and unit-test, so package runs once for each of them
Show answer and explanationHide answer
Correct answer: CA dag task lists the tasks it depends on in its dependencies field, and it starts only when all of them have succeeded. A single dependency would let package start before unit-test is done, while withItems creates fan-out copies rather than ordering, so both of those are wrong.
Question 8
How does a steps template differ from a dag template in Argo Workflows?
- AA steps template is used only to pass artifacts between tasks, while a dag template is used only to pass parameters between tasks
- BA steps template runs ordered groups one after another, while a dag template starts each task when its dependencies finish
- CA dag template runs tasks in alphabetical order, while a steps template runs them in random order
- DA steps template can run only script templates, while a dag template can run only container templates
Show answer and explanationHide answer
Correct answer: BIn a steps template each group runs after the previous group completes, with the steps inside one group running in parallel. A dag template has no fixed groups and starts each task as soon as the tasks it depends on have finished; the other options invent limits that do not exist.
Argo CD (8 questions)
Question 9
Which statement best describes how Argo CD applies the GitOps model?
- AIt builds container images from source code and pushes them to a registry after each commit
- BIt replaces the Kubernetes scheduler and decides which node runs each pod in the cluster
- CIt stores application secrets in encrypted form inside the cluster's etcd database for later use
- DIt treats a Git repository as the source of truth and keeps comparing live cluster state with the desired state stored there
Show answer and explanationHide answer
Correct answer: DGitOps keeps the desired state in Git, and Argo CD continuously compares the live cluster against it. Building images, scheduling pods and storing secrets are handled by other tools or components, so those options are not the GitOps model.
Question 10
An Application has automated sync turned off. A developer edits a live Deployment directly with kubectl, and the Application page now shows OutOfSync. What does Argo CD do next?
- AIt reverts the Deployment to the Git version straight away, because manual sync is always enabled
- BIt deletes the Deployment and recreates it from the most recent container image in the registry
- CIt commits the manual change back to the Git repository so that both sources agree again
- DIt reports the difference and leaves the live Deployment unchanged until someone syncs the Application
Show answer and explanationHide answer
Correct answer: DWith automated sync off, Argo CD only reports drift and waits for an operator to sync. It never reverts or deletes resources on its own in that mode, and it does not write changes back into Git.
Question 11
Which field of an Argo CD Application tells the controller which cluster and namespace receive the rendered manifests?
- Aspec.destination, which holds the target cluster server or name and the namespace
- Bspec.source, which holds the repository URL, the path and the target revision
- Cspec.project, which names the AppProject that governs the Application
- Dspec.syncPolicy, which controls whether sync runs automatically and how it prunes
Show answer and explanationHide answer
Correct answer: Aspec.destination identifies the target cluster and namespace for the Application's resources. spec.source points at the Git or Helm input, spec.project names the governing AppProject, and spec.syncPolicy controls how syncs run.
Question 12
A security team wants a team's Applications to deploy only from one approved Git repository and only into that team's own namespaces. Which Argo CD resource enforces these limits?
- AAn AppProject that lists the allowed source repositories and the allowed destinations
- BA ClusterRole that is granted to the application controller's service account for all namespaces
- CA ConfigMap that holds the approved list of container image registries for the cluster
- DAn ApplicationSet that generates one Application per namespace, each with its own repository
Show answer and explanationHide answer
Correct answer: AAn AppProject restricts which repositories and destinations its Applications may use, which is exactly this guardrail. A ClusterRole grants Kubernetes permissions rather than project limits, and an ApplicationSet generates Applications without restricting them.
Question 13
A developer deletes a Deployment manifest from the Git repository, but the automated Application keeps the Deployment running in the cluster. The team wants the cluster to match Git exactly. Which automated sync setting removes resources that are no longer defined in Git?
- AA PreSync hook annotation added to the Deployment manifest
- BsyncPolicy.automated.selfHeal, set to true
- CsyncPolicy.automated.prune, set to true
- DsyncOptions with CreateNamespace=true
Show answer and explanationHide answer
Correct answer: CThe prune setting inside syncPolicy.automated lets automated sync delete live resources that were removed from Git. selfHeal reverts manual edits instead, CreateNamespace only creates namespaces, and a PreSync hook runs a task before the sync.
Question 14
What does selfHeal do when it is enabled in an automated sync policy?
- AIt restarts failed pods by deleting them so the controller can create replacements
- BIt reverts changes made directly in the cluster so that live resources match the state stored in Git again
- CIt rebuilds container images when the base image referenced in the Dockerfile changes
- DIt retries a failed sync automatically, up to the number of times set in the retry settings
Show answer and explanationHide answer
Correct answer: BselfHeal makes automated sync correct drift caused by manual changes in the cluster, restoring the Git state. Pod restarts, image builds and sync retries are different mechanisms and are not what selfHeal does.
Question 15
A release contains a Namespace, a database StatefulSet and an application Deployment. The team needs the namespace created first, then the database, then the application. Which mechanism controls this order?
- ASync wave annotations (argocd.argoproj.io/sync-wave) on each resource, with lower numbers applied earlier
- BThe alphabetical order of the file names in the Git repository, which Argo CD always follows
- CA sync hook of type SyncFail on the application Deployment, which runs the steps in order
- DA ConfigMap listing the apply sequence, which the application controller reads before each sync
Show answer and explanationHide answer
Correct answer: ASync waves are set with the argocd.argoproj.io/sync-wave annotation, and Argo CD applies lower-numbered waves before higher ones. File names do not control order, and SyncFail hooks only run when a sync fails.
Question 16
A database schema migration Job must finish before the new application pods are rolled out on every sync. Which annotation pattern does Argo CD use for this?
- Aargocd.argoproj.io/hook: PreSync on the migration Job
- Bargocd.argoproj.io/sync-options: Prune=false on the migration Job
- Cargocd.argoproj.io/managed-by annotation on the Deployment, pointing to the Job
- Dargocd.argoproj.io/hook: PostSync on the migration Job
Show answer and explanationHide answer
Correct answer: AA PreSync hook runs before the main resources of a sync are applied, so the migration finishes first. PostSync runs after the rollout, Prune=false only protects a resource from deletion, and managed-by is not a hook mechanism.
Argo Rollouts (7 questions)
Question 17
A team wants canary and blue-green releases with automated analysis for an application that currently runs as a Deployment. Which Argo Rollouts resource would they change to achieve this?
- AA Service, which gains weighted traffic splitting across ReplicaSets by default
- BA StatefulSet, which keeps a stable network identity for each canary pod
- CA Rollout, which replaces the Deployment and adds canary and blue-green strategies
- DA HorizontalPodAutoscaler, which adjusts replica counts based on canary metrics
Show answer and explanationHide answer
Correct answer: CA Rollout is the Argo Rollouts workload that takes the place of a Deployment and adds the canary and blue-green strategies with analysis. A Service only routes traffic, while a StatefulSet and an HPA serve different purposes.
Question 18
A team wants 10% of traffic on the new version, a hold for observation, then 50%, and finally full promotion. Which Rollout strategy fits?
- AA canary strategy with setWeight steps and pause steps between the weight changes
- BA recreate strategy that removes all old pods before the new version starts
- CA rolling update with maxSurge set to 100 percent so new pods replace old ones at once
- DA blueGreen strategy that shifts traffic in 10 percent increments between two Services
Show answer and explanationHide answer
Correct answer: AA canary strategy takes a list of steps, where setWeight moves traffic to the new version and pause holds it for observation. Blue-green switches traffic as a whole, and recreate and rolling update are Deployment strategies rather than Rollout ones.
Question 19
In a blue-green rollout, what happens when the preview version is promoted?
- AThe active Service selector switches to the new ReplicaSet, so all production traffic moves at once
- BTraffic is split by weight over the following hour while both versions stay in production
- CThe preview Service is removed and recreated so that its endpoints point to the new pods
- DThe previous ReplicaSet is deleted immediately, leaving no window for a quick rollback to the old version
Show answer and explanationHide answer
Correct answer: APromotion points the active Service at the new ReplicaSet, so production moves over in one step. Weighted splitting belongs to canary releases, and blue-green keeps the old ReplicaSet around for a period rather than deleting it at once.
Question 20
What is the role of an AnalysisTemplate in Argo Rollouts?
- AIt configures the service mesh routing rules that split traffic between stable and canary pods
- BIt defines metrics and the success or failure conditions a rollout uses to decide whether to continue
- CIt stores the container image that canary pods run, so each version can be pinned in one place
- DIt lists the nodes where canary pods may be scheduled, based on labels and taints in the cluster
Show answer and explanationHide answer
Correct answer: BAn AnalysisTemplate describes the metrics and the success or failure conditions that a Rollout checks before moving on. Traffic routing, image pinning and node placement are handled by other configuration, not by the template.
Question 21
During a canary, an analysis step reports an error rate above the failure condition defined in its AnalysisTemplate. What is the expected result?
- AThe Rollout restarts the canary pods once, then runs the same analysis again before any decision is made
- BThe error is ignored, because metrics from analysis steps only produce informational output
- CThe AnalysisRun is marked Successful, so the canary continues to the next step without interruption
- DThe AnalysisRun is marked Failed, and the Rollout aborts so that traffic returns to the stable version
Show answer and explanationHide answer
Correct answer: DWhen an AnalysisRun fails its failure condition, the Rollout aborts and the stable version takes the traffic again. Analysis results are not informational only, and a failed run is never treated as a success or retried silently.
Question 22
A Rollout uses a canary strategy, but no traffic routing integration is configured. How does Argo Rollouts give the canary roughly 20 percent of requests?
- AIt scales the canary ReplicaSet so that it holds about 20 percent of the total pods behind the shared Service
- BIt sets a weight of 20 on the canary Service, which the cluster DNS resolves to a random subset of the pods in the cluster
- CIt edits the Ingress annotations to send 20 percent of requests to the canary Service automatically, with no other configuration
- DIt moves 20 percent of the stable pods into a separate namespace that receives canary traffic
Show answer and explanationHide answer
Correct answer: AWithout a traffic router, the Service balances across all ready pods, so scaling the canary to a share of the total pods gives an approximate split. Weights on Services, Ingress edits and moving pods to other namespaces are not how the replica-based approach works.
Question 23
A canary should hold at its current weight until a release engineer promotes it manually, with no timer involved. Which step definition does this?
- AA setWeight step set to 100, which promotes the canary as soon as it reaches the weight
- BA pause step with no duration, which waits until someone runs kubectl argo rollouts promote
- CA pause step with a duration of one second, which resumes automatically after the time passes
- DAn analysis step with a timeout of zero, which skips directly to the next canary weight
Show answer and explanationHide answer
Correct answer: BA pause step without a duration waits indefinitely until it is promoted, for example with kubectl argo rollouts promote. A timed pause resumes by itself, and setWeight or analysis steps do not wait for a person.
Argo Events (7 questions)
Question 24
In Argo Events, what is the job of a Sensor?
- AIt receives events from external systems such as webhooks and buckets and publishes them to the bus
- BIt keeps a long-term audit log of every event so that past deliveries can be queried later
- CIt waits for dependency events and, when its conditions are met, runs triggers such as a Workflow
- DIt runs the messaging cluster that carries events between the other Argo Events components
Show answer and explanationHide answer
Correct answer: CA Sensor declares event dependencies and runs its triggers, such as creating a Workflow, once the dependencies are satisfied. Receiving external events is the job of an EventSource, and the messaging layer is the EventBus.
Question 25
A team wants Argo Events to start a pipeline each time a GitHub webhook sends an HTTP POST. Which component receives those requests?
- AAn EventSource configured with a webhook, which exposes an HTTP endpoint inside the cluster
- BA Sensor with an http trigger, which listens on a port for incoming requests from the internet
- CAn AnalysisRun, which records the HTTP status codes of every request for later review
- DAn EventBus named default, which accepts HTTP requests and routes them to the Sensors
Show answer and explanationHide answer
Correct answer: AA webhook EventSource exposes an HTTP endpoint that turns incoming requests into events for the rest of the system. A Sensor consumes events rather than receiving HTTP requests, and the EventBus only carries events between components.
Question 26
Which two statements about Argo Events architecture are correct? (Choose two.)
- AAn EventSource ingests events from an external system and publishes them to the EventBus
- BAn EventBus carries events between EventSources and Sensors inside a namespace
- CA Sensor stores the final output of every Workflow it triggers in its own status field
- DA Sensor creates the EventBus pods, so the bus is removed whenever the Sensor is deleted
Show answer and explanationHide answer
Correct answer: A, BEventSources bring external events in and publish them to the EventBus, which carries them to Sensors in the same namespace. Sensors do not store workflow outputs or manage the bus pods, so the other two statements are wrong.
Question 27
A team wants a Workflow to start whenever an object is uploaded to a cloud storage bucket. Which Argo Events parts are needed to do this?
- AA Sensor for the bucket and an AnalysisTemplate that creates the Workflow when the metrics pass their checks
- BAn EventSource for the bucket notifications, and a Sensor whose trigger creates the Workflow
- CA WorkflowTemplate that polls the bucket every minute and starts a run when files appear
- DAn ApplicationSet that generates one Workflow for each bucket in the account
Show answer and explanationHide answer
Correct answer: BAn EventSource ingests the bucket notifications as events, and a Sensor with a trigger creates the Workflow when they arrive. A Sensor does not ingest storage events, AnalysisTemplates measure metrics, and ApplicationSets generate Applications rather than Workflows.
Question 28
Which two statements about the Argo Events EventBus are correct? (Choose two.)
- AIt carries events between EventSources and Sensors that run in the same namespace
- BIts default configuration is commonly backed by NATS, which deploys messaging pods for it
- CIt stores the credentials that EventSources use to read from external systems
- DIt decides which Workflow template a Sensor's trigger creates for each incoming event
Show answer and explanationHide answer
Correct answer: A, BThe EventBus is the messaging layer that connects EventSources and Sensors in a namespace, and its default setup is typically NATS. Credentials are referenced from Secrets rather than stored by the bus, and triggers, not the bus, decide what a Sensor creates.
Question 29
A Sensor declares two dependencies, one for a code push event and one for a manual approval event. The team wants its trigger to fire only after both have arrived. How is this expressed?
- AThe trigger's conditions field names both dependencies joined with && so both must be present
- BThe trigger's conditions field names both dependencies joined with || so either one alone fires the trigger
- CA withItems list on the trigger, which fans out once for each approval event that arrives at the Sensor
- DTwo separate Sensors, each with one trigger, which the controller merges into a single run
Show answer and explanationHide answer
Correct answer: AA trigger's conditions expression combines dependency names, and using && requires every named dependency to be present before the trigger fires. The || operator fires on either event, and separate Sensors or withItems do not combine two dependencies into one run.
Question 30
Argo Events passes events through the system in a standard envelope format. Which specification is that?
- ACloudEvents, a specification for describing event data in a common, vendor-neutral way
- BOCI image manifests, a specification for describing the layers that make up a container image
- CJSON Schema, a specification for validating the shape of JSON documents before processing starts
- DOpenTelemetry traces, a specification for recording timing data across distributed calls
Show answer and explanationHide answer
Correct answer: AArgo Events uses the CloudEvents specification to describe events in a common, vendor-neutral envelope. The other specifications cover tracing, container images and JSON validation, which are unrelated to the event format.