template.synchronization
このtemplate (argo)を (Workflowをまたいで、グローバルに)何個まで並列に走らせてよいか、の上限
parallelismとsynchronizationは上限を制限するもの
そのtemplateを使うノード単位がロックの対象になる
template.synchronizationはWorkflow毎ではなくグローバルな並列上限数に注意する
code:yaml
spec:
entrypoint: main
templates:
- name: critical-step
synchronization:
semaphore:
configMapKeyRef:
name: my-config
key: db # 例: "1" → この処理は全体で同時に1個まで
container:
...
ロックを取るタイミング
そのノード(Pod)が始まるとき
ロックを離すタイミング
そのノードが終わるとき
ユースケース
DBに触るステップだけは同時に1個に絞りたい
並列ループ(withItems等)で大量にfanoutしても、この処理だけ直列化したい