Cluster Workflow Templates¶
v2.8 and after
Introduction¶
ClusterWorkflowTemplates
are cluster scoped WorkflowTemplates
. ClusterWorkflowTemplate
can be created cluster scoped like ClusterRole
and can be accessed across all namespaces in the cluster.
WorkflowTemplates
documentation link
Defining ClusterWorkflowTemplate
¶
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: cluster-workflow-template-print-message
spec:
templates:
- name: print-message
inputs:
parameters:
- name: message
container:
image: busybox
command: [echo]
args: ["{{inputs.parameters.message}}"]
Referencing other ClusterWorkflowTemplates
¶
You can reference templates
from other ClusterWorkflowTemplates
using a templateRef
field with clusterScope: true
.
Just as how you reference other templates
within the same Workflow
, you should do so from a steps
or dag
template.
Here is an example:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: workflow-template-hello-world-
spec:
entrypoint: hello-world
templates:
- name: hello-world
steps: # You should only reference external "templates" in a "steps" or "dag" "template".
- - name: call-print-message
templateRef: # You can reference a "template" from another "WorkflowTemplate or ClusterWorkflowTemplate" using this field
name: cluster-workflow-template-print-message # This is the name of the "WorkflowTemplate or ClusterWorkflowTemplate" CRD that contains the "template" you want
template: print-message # This is the name of the "template" you want to reference
clusterScope: true # This field indicates this templateRef is pointing ClusterWorkflowTemplate
arguments: # You can pass in arguments as normal
parameters:
- name: message
value: "hello world"
Create Workflow
from ClusterWorkflowTemplate
Spec¶
v2.9 and after
You can create Workflow
from ClusterWorkflowTemplate
spec using workflowTemplateRef
with clusterScope: true
. If you pass the arguments to created Workflow
, it will be merged with cluster workflow template arguments
Here is an example for ClusterWorkflowTemplate
with entrypoint
and arguments
apiVersion: argoproj.io/v1alpha1
kind: ClusterWorkflowTemplate
metadata:
name: cluster-workflow-template-submittable
spec:
entrypoint: print-message
arguments:
parameters:
- name: message
value: hello world
templates:
- name: print-message
inputs:
parameters:
- name: message
container:
image: busybox
command: [echo]
args: ["{{inputs.parameters.message}}"]
Here is an example for creating ClusterWorkflowTemplate
as Workflow with passing entrypoint
and arguments
to ClusterWorkflowTemplate
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: cluster-workflow-template-hello-world-
spec:
entrypoint: print-message
arguments:
parameters:
- name: message
value: "from workflow"
workflowTemplateRef:
name: cluster-workflow-template-submittable
clusterScope: true
Here is an example of a creating WorkflowTemplate
as Workflow and using WorkflowTemplates
's entrypoint
and Workflow Arguments
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: cluster-workflow-template-hello-world-
spec:
workflowTemplateRef:
name: cluster-workflow-template-submittable
clusterScope: true
Managing ClusterWorkflowTemplates
¶
CLI¶
You can create some example templates as follows:
argo cluster-template create https://raw.githubusercontent.com/argoproj/argo-workflows/main/examples/cluster-workflow-template/clustertemplates.yaml
Then submit a Workflow
using one of those templates:
argo submit https://raw.githubusercontent.com/argoproj/argo-workflows/main/examples/cluster-workflow-template/cluster-wftmpl-dag.yaml
v2.7 and after
Then submit a ClusterWorkflowTemplate
as a Workflow
:
argo submit --from clusterworkflowtemplate/cluster-workflow-template-submittable
kubectl
¶
Using kubectl apply -f
and kubectl get cwft
UI¶
ClusterWorkflowTemplate
resources can also be managed by the UI