Skip to content

Argo Workflow fundamentals: CAPA practice questions

Argo Workflows is a workflow engine that runs on Kubernetes and is installed as custom resources plus two Deployments. The workflow controller does all of the reconciling: it watches Workflow objects and the Pods they create and moves each run forward.

By Ibrahim Yesilay · Published · Updated

Independent community practice, not affiliated with or endorsed by CNCF or The Linux Foundation.

What Argo Workflow fundamentals covers in CAPA

Argo Workflows is a workflow engine that runs on Kubernetes and is installed as custom resources plus two Deployments. The workflow controller does all of the reconciling: it watches Workflow objects and the Pods they create and moves each run forward. The Argo Server serves the API and the web UI, listening on port 2746, and the controller can run without it. Both normally live in the argo namespace, while the workflows themselves and their Pods can run in other namespaces.

A Workflow resource has two jobs at once. It defines the work to run, and it stores the state of that run in its status, so the documentation describes it as a live object rather than a static manifest. Every step or DAG task that runs a container becomes its own Pod. In the classic layout that Pod has an init container that fetches input artifacts and parameters, the main container that runs the user's image with the argoexec binary wrapped around the command, and a wait container that saves outputs, artifacts and logs when the main container ends. The process that runs inside those Pods is called the executor, and emissary is the only executor left.

Day-to-day work goes through the argo CLI. argo submit creates a Workflow from a file and, with --watch, follows it until it ends; argo list, argo get and argo logs show runs, a single run's tree and container output. A failed run can be retried in place with argo retry, which reruns only the failed parts, or copied into a new run with argo resubmit. argo stop and argo terminate both end a running workflow, but stop still runs exit handlers while terminate skips them.

The Argo Server authenticates requests in one of three modes. client mode, the default, uses the bearer token that the caller sends; server mode uses the server's own service account, or the local kubeconfig when run locally; sso mode signs users in through single sign-on. Several modes can be enabled at once with repeated --auth-mode flags. Knowing which component owns which job, controller for execution and server for the API and UI, settles most architecture questions about the project.

Key points

  • The workflow controller reconciles Workflows; the Argo Server only serves the API and UI.
  • Each container step or task runs as its own Pod managed by the emissary executor.
  • argo stop runs exit handlers before ending a workflow, argo terminate does not.
  • The Argo Server defaults to the client auth mode, which uses the caller's own token.

Three sample questions

12 CAPA questions on Argo Workflow fundamentals, 12 with explanations. How practice works

Question 1

Which of the following best describes an Argo Workflow?
  1. A.A continuous delivery tool that syncs Kubernetes manifests from Git repositories to clusters
  2. B.A container-native workflow engine for orchestrating parallel jobs
  3. C.A progressive delivery controller
  4. D.An event-driven automation framework that triggers Kubernetes objects from external event sources

Correct answer: B

The Argo Workflows overview calls it an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes, where multi-step work is modelled as a sequence of steps or as a DAG of task dependencies. Why the other options are wrong. "A continuous delivery tool that syncs Kubernetes manife...": that describes Argo CD, a separate project whose job is syncing Git-declared state to clusters. "A progressive delivery controller": blue-green and canary delivery is the role of Argo Rollouts, which its own docs call a progressive delivery controller. "An event-driven automation framework that triggers Kube...": that is Argo Events, which its docs describe as an event-driven workflow automation framework that reacts to webhooks, queues and schedules.

Sources: Argo Workflows docs: Overview, Argo Rollouts docs: Overview, Argo Events docs: Overview

Question 2

Which command shows the logs of a specific workflow step?
  1. A.argo logs <workflow-name>
  2. B.argo logs <workflow-name> -f
  3. C.argo logs <workflow-name> <pod-name>
  4. D.argo logs <workflow-name> --step=<step-name>

Correct answer: C

argo logs WORKFLOW [POD] prints a workflow's logs; passing the pod name of a step narrows the output to that step, and -c picks a container. Why the other options are wrong. "argo logs <workflow-name>": prints the logs of all the workflow's pods. "argo logs <workflow-name> -f": follows all logs as they stream. "argo logs <workflow-name> --step=<step-name>": the command has no --step flag.

Sources: Argo Workflows docs: argo logs, Argo Workflows docs: Argo CLI

Question 3

Which Argo CLI command submits a Workflow from a YAML file?
  1. A.argo run workflow.yaml
  2. B.argo create workflow.yaml
  3. C.argo submit workflow.yaml
  4. D.argo apply workflow.yaml

Correct answer: C

argo submit workflow.yaml creates the Workflow from the file and starts it; --watch follows its progress and -p overrides parameters. Why the other options are wrong. "argo run workflow.yaml": the argo CLI has no run subcommand. "argo create workflow.yaml": there is no argo create; WorkflowTemplates and CronWorkflows have their own argo template create and argo cron create. "argo apply workflow.yaml": apply is a kubectl verb, not an argo subcommand.

Sources: Argo Workflows docs: argo submit, Argo Workflows docs: argo CLI reference

Practice this topic

Focus mode keeps every question on Argo Workflow fundamentals until you leave it. 10 free guest answers, then a free account; no credit card.

Or open CAPA practice across all topics.

Sources

The explanation above was checked against these official documents.