WorkflowとWorkflowTemplateのspecの中身
Workflow (argo)とWorkflow Template (argo)のmanifestのspec内の比較
基本的なテンプレート構造は同じ
table:_
共通するフィールド 内容
entrypoint 最初に実行するテンプレートの名前
templates 処理ステップやコンテナ実行などを定義するテンプレート群
arguments(オプション) 外から渡されるパラメータ(テンプレートの inputs にバインド)
volumes(オプション) Podにマウントするボリューム定義
serviceAccountName など Pod実行に関する設定
相違点
Workflow は「実行」
WorkflowTemplate は「定義」
table:_
違いのある点 Workflow WorkflowTemplate
用途 実行されるワークフロー本体 再利用・参照されるテンプレート
spec.arguments 実行時にテンプレートに値を渡す 通常使わない(inputs は使う)
workflowTemplateRef ✅ あり(他のテンプレートを参照) ❌ 使わない
podGC, ttlStrategy ✅ よく使う(実行完了後のPod削除など) ❌ 通常なし(Workflowで指定)
metadata.generateName ✅ よく使う(実行時に名前を自動生成) ❌ 通常使わない(明示的な名前)
例
Workflow Template (argo)(定義)
code:yaml
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: hello-template
spec:
entrypoint: hello
templates:
- name: hello
container:
image: alpine
command: "echo"
args: "hello from template"
Workflow (argo) (実行)
code:yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-
spec:
workflowTemplateRef:
name: hello-template # 上のテンプレートを実行
以下の書き方もできる
code:yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-
spec:
entrypoint: hello
templates: # ← Workflow自身にテンプレートを含む場合
- name: hello
container:
image: alpine
command: "echo"
args: "Hello from workflow"
つまり、Workflowのyamlの中に、WorkflowTemplate相当のものをかける
コレの存在のせいで妙にややこしくなっているな。気持ちはわかるがmrsekut.icon
↑もしかしたら整理の仕方がおかしいかもmrsekut.icon
ref WorkflowSpec