🐙
Argo Workflowsの進捗表示カスタマイズとその注意点
はじめに
こんにちは、kackyと申します。
この記事では、Web系データエンジニアの皆様に向けて、Argo Workflowsの進捗表示のカスタマイズ方法とその注意点についてご紹介します。
Argo Workflowsの概要
Argo Workflows v3.3から、進捗表示のカスタマイズ機能が追加されました。※公式ドキュメントこれにより、以前は0/1でしか表現できなかったタスクの進捗を、より詳細に表現できるようになりました。
進捗表示のカスタマイズ方法
カスタマイズする方法は、以下のサンプルのように、$ARGO_PROGRESS_FILE
にN/M
(N,Mは自然数)形式で書き込むだけです。
# サンプルコード
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: progress-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: progress
template: progress
- name: progress
metadata:
annotations:
workflows.argoproj.io/progress: 0/100
container:
image: alpine:3.14
command: [ "/bin/sh", "-c" ]
args:
- |
for i in `seq 1 10`; do sleep 10; echo "$(($i*10))"'/100' > $ARGO_PROGRESS_FILE; done
進行状況の更新頻度はデフォルトで1分ですが、これを変更したい場合はARGO_PROGRESS_PATCH_TICK_DURATION
環境変数をcontrollerに設定することができます。
※helmマニフェストの設定例
controller:
extraEnv:
- name: ARGO_PROGRESS_PATCH_TICK_DURATION
value: 10s
利用上の注意点
進捗の分母は実行時点で判明している総和を示します。たとえば、A -> B -> Cの順序で実行する場合、Bが実行中であれば、分母にはA + Bが表示されます。このため、分母の変化により進捗が単調に増加しない場合があります。これを避けるためには、A + B + Cの値を予め定めるか、分子と分母を両方表示する必要があります。
まとめ
本記事では、Argo Workflowsの進捗表示のカスタマイズ方法と注意点を紹介しました。これがWorkflow管理の手助けになることを願います。社内のMLOps環境についてのさらなる情報は、こちらをご参照ください。
Discussion