Minikube上でArgo WorkflowsをインストールしてHello worldを実行するまでメモです。爆速でローカル(Minikube)で動かすことだけを目的にしているので、商用環境での利用とか全く考慮してない+説明も最小限なので悪しからず。
セットアップ手順
Minikubeのセットアップ
以下のページを参照。
Argo CLIのセットアップ
以下のページを参照(バージョンは適宜読み替えて!)。
Argo用のネームスペースの作成
コマンド
kubectl create namespace argo
権限の付与
コマンド
kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
Argo Workflowsのインストール
コマンド
kubectl apply -n argo -f https://raw.githubusercontent.com/argoproj/argo-workflows/master/manifests/install.yaml
UIの表示手順
UIポートの解放
コマンド例
kubectl -n argo port-forward deployment/argo-server 2746:2746 &
トップ画面へのアクセス
認証情報の取得
コマンド
kubectl -n argo exec -it $(kubectl get --no-headers=true pods -n argo -o name -l app=argo-server) -- argo auth token
トークン出力例
Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Il9yLU5CUURSXzNPN1JYcXFSWlAzU2hKRTE4R2hyMnFKQlc2UnRQQkxqLW8ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjcxNzQ5MDE2LCJpYXQiOjE2NDAyMTMwMTYsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJhcmdvIiwicG9kIjp7Im5hbWUiOiJhcmdvLXNlcnZlci03OWJmNDViNWI3LW16OHBiIiwidWlkIjoiZjViM2UwYjctYmU0OC00OWFmLTk4NjYtMGRmY2JiYWNjM2U2In0sInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhcmdvLXNlcnZlciIsInVpZCI6ImY5N2ExODEwLTE0M2UtNDBmZS1iYjQzLTkyNjdmYmNjYTJkNiJ9LCJ3YXJuYWZ0ZXIiOjE2NDAyMTY2MjN9LCJuYmYiOjE2NDAyMTMwMTYsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcmdvOmFyZ28tc2VydmVyIn0.tE_Hdm8HEsC5gGSAXO-v1Q-3SqIXBQJ2QsQwqKGXNy3k185TRF99Tr2wdPHzginMUfEHex9FunW5GlefHBVf6BI5OCPUgHFaFqq6OBuXZe_TiRz6W1ASrDQHQB1FlJHV5awGNwoiKM6fRYsMKncdIBxjlONHiaRsfTKlueY_YBOaF_VjlxXX3KyoTXZizs_-dMttf7_EwNxyZkS2Fw4MDmsSX_XO6hsV5bpuG0wq-iHjJd9wq_oljGjnsCY7Is9wUjNfLoNz7RnpQUi8lvZGofWJLFipWTGsITWQeNHfSJineuqCGbWrwFrTlgUUViKP4ByCA2cdqyMrh_uGvmc40w
ログイン
ログイン成功するとこんな画面になる。
Workflowの実行手順
公式サンプルのWorkflow(Hello World)を実行してみる。
コマンド例
argo submit --watch https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/hello-world.yaml
Workflow実行完了時点のコンソール出力例
Name: hello-world-hlc9q
Namespace: default
ServiceAccount: default
Status: Succeeded
Conditions:
PodRunning False
Completed True
Created: Thu Dec 23 08:44:31 +0900 (20 seconds ago)
Started: Thu Dec 23 08:44:31 +0900 (20 seconds ago)
Finished: Thu Dec 23 08:44:51 +0900 (now)
Duration: 20 seconds
Progress: 1/1
ResourcesDuration: 4s*(1 cpu),4s*(100Mi memory)
STEP TEMPLATE PODNAME DURATION MESSAGE
✔ hello-world-hlc9q whalesay hello-world-hlc9q 11s
This workflow does not have security context set. You can run your workflow pods more securely by setting it.
Learn more at https://argoproj.github.io/argo-workflows/workflow-pod-security-context/
UIで実行結果を確認してみる。
詳細画面に遷移すると・・・
ログを見てみると・・・
CronWorkflowの実行手順
公式サンプルのCronWorkflow(Hello World)を実行してみる。
コマンド例
argo cron create https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/cron-workflow.yaml
Workflow作成時点のコンソール出力例
Name: hello-world
Namespace: default
Created: Thu Dec 23 08:58:38 +0900 (now)
Schedule: * * * * *
Suspended: false
Timezone: America/Los_Angeles
StartingDeadlineSeconds: 0
ConcurrencyPolicy: Replace
NextScheduledTime: Thu Dec 23 08:59:00 +0900 (21 seconds from now) (assumes workflow-controller is in UTC)
UIでWorkflowの作成状態を確認してみる。
UIでWorkflowの実行状態を確認してみる。
スケジュール実行の中断と再開
スケジュール実行の中断および再開も可能。
即時実行
スケジュールした日時以外での即時実行も可能。
付録
アンインストール手順
Argo Workflowsのアンインストール
コマンド例
kubectl delete -n argo -f https://raw.githubusercontent.com/argoproj/argo-workflows/master/manifests/install.yaml
権限の削除
必要に応じて実施。
コマンド例
kubectl delete rolebinding default-admin
Argo用のネームスペースの削除
コマンド例
kubectl delete namespace argo