Skip to main content
Think of a WorkflowTemplate as a reusable recipe for Argo Workflows. Instead of copying and pasting the same manifest (for example, a build step or a test container) into every workflow, define it once as a WorkflowTemplate and reference it from many workflows. This centralizes maintenance, enforces consistency, and reduces duplication.
A presentation slide titled "WorkflowTemplate" that defines it as "A reusable recipe for workflows, defined once and used across multiple workflows." Below that is a boxed "Benefits" list of four points: a central version-controlled library, promotes consistency, cleaner/easier to manage, and reduces duplication and maintenance effort.
A WorkflowTemplate stores common templates in a namespace so teams can share and reuse steps like functions from a library. Use templates to standardize CI/CD tasks such as builds, tests, and deployments.

How to define a WorkflowTemplate

Defining a WorkflowTemplate is the same as defining a Workflow, except the resource kind is WorkflowTemplate. That tells Argo to store the definition as a reusable template rather than executing it immediately. Example WorkflowTemplate (cowsay):
Create this resource with kubectl apply -f <file> or via the Argo Workflows UI/CLI (for example, argo template create <file>).

Reusing a WorkflowTemplate

Once a WorkflowTemplate exists in a namespace, you can reuse it in two primary ways:
  • templateRef — call a single template from the WorkflowTemplate as a step inside a larger workflow (like importing a single function from a library).
  • workflowTemplateRef — run the entire WorkflowTemplate as a complete workflow, using its specified entrypoint and arguments.
Example: calling a single template from a WorkflowTemplate using templateRef
Example: running the whole WorkflowTemplate using workflowTemplateRef

ClusterWorkflowTemplate

A ClusterWorkflowTemplate is the cluster-scoped equivalent of WorkflowTemplate. It is not tied to a namespace and is available cluster-wide — a good fit for platform teams that must provide approved, central templates to multiple namespaces. Example ClusterWorkflowTemplate:
Because ClusterWorkflowTemplate is cluster-scoped, metadata does not include a namespace. Referencing a ClusterWorkflowTemplate from a namespaced Workflow requires setting the clusterScope flag to true. Example: calling a single template from a ClusterWorkflowTemplate via templateRef (clusterScope: true)
Example: running the whole ClusterWorkflowTemplate via workflowTemplateRef (clusterScope: true)
When referencing cluster-scoped templates (ClusterWorkflowTemplate), always set clusterScope: true in templateRef or workflowTemplateRef. ClusterWorkflowTemplates are not namespaced, so this flag tells Argo the reference is to a cluster-level resource.

Quick comparison

Watch Video