✅️2025/5/17 Argo WorkflowsのGetting Startedやる
from Argo Workflows
Killercodaのやつ
https://killercoda.com/argoproj/course/argo-workflows/getting-started
https://gyazo.com/9217bfc5da5c05ca3525601c9fd5cdf3
途中でブラウザリロードしたらリセットされた()mrsekut.icon
残り時間も環境もリセットされた
$ kubectl create ns argo
λ kubectl create namespaceでnamespaceを作る
Argo Workflows入れる
$ kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v3.6.2/install.yaml
この辺のpodが立ち上がる
workflow-controller
argo-server
$ kubectl create serviceaccount argo-workflow -n argo
λ kubectl create serviceaccount
ServicesAccount (k8s)を作る
code:bash
controlplane:~$ cat <<EOF | kubectl apply -f - >/dev/null
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: workflow-executor-rbac
rules:
- apiGroups:
- argoproj.io
resources:
- workflowtaskresults
verbs:
- create
- patch
EOF
controlplane:~$ cat <<EOF | kubectl apply -f - >/dev/null
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: argo-executor-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: workflow-executor-rbac
subjects:
- kind: ServiceAccount
name: argo-workflow
namespace: argo
EOF
ClusterRoleとかClusterRoleBindingとか何なのか全然わからないmrsekut.icon
Workflow (argo)を作成する
$ kubectl -n argo apply -f hello-workflow.yaml
code:hello-workflow.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: hello
spec:
serviceAccountName: argo-workflow
entrypoint: main
templates:
- name: main
container:
image: busybox
command: "echo"
args: "hello world"
$ kubectl -n argo wait workflows/hello --for condition=Completed --timeout 2m
終わるまで明示的に待てる
λ kubetcl wait
UIログインをバイパスできるように認証モードをサーバに切り替え
code:bash
kubectl patch deployment \
argo-server \
--namespace argo \
--type='json' \
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": [
"server",
"--auth-mode=server",
"--secure=false"
]},
{"op": "replace", "path": "/spec/template/spec/containers/0/readinessProbe/httpGet/scheme", "value": "HTTP"}
]'
λ kubectl patch
よくわかってないがこれは本番環境でやるべきではないらしい
見れた
https://gyazo.com/978344438e5d69aef3db64b84a2a1932
https://gyazo.com/0144fc3ed588b82d998f7a7281b26bde
SUBMIT NEW WORKFLOW
https://gyazo.com/032c621d117a3dc092b00f00752dc9d4
Edit using full workflow options
https://gyazo.com/01b4daf9df051c897fe6dba399a82eaa
https://gyazo.com/eb5d13b5231eb27f03b9b5d783ad2a12
これを貼り付けてcreate
code:yml
metadata:
generateName: hello-world-
namespace: argo
spec:
serviceAccountName: argo-workflow
entrypoint: main
templates:
- name: main
container:
image: busybox
command: "echo"
https://gyazo.com/1c47dbe7b00e97cee529100e7545e93f
create直後は黄色になっている
数秒後に緑になる
https://gyazo.com/20de6454240b449ca653f1def95e22b3
これ今何をしたんやmrsekut.icon
いったんymlでworkflow作って、
もう一つはGUI上で別のworkflowを作ったってことか
https://gyazo.com/01dedc53bbed1cf126a04e1004ceca04
https://gyazo.com/80e0cff4c882d86d7053382d337cbe69
左上で、resubmitとかもできる
Argo CLIを入れる
code:bash
curl -sLO https://github.com/argoproj/argo-workflows/releases/download/v3.6.2/argo-linux-amd64.gz
gunzip argo-linux-amd64.gz
chmod +x argo-linux-amd64
mv ./argo-linux-amd64 /usr/local/bin/argo
$ argo version
workflowを実行する
$ argo submit -n argo --serviceaccount argo-workflow --watch https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/hello-world.yaml
workflowのリスト
$ argo list -n argo
λ argo list
code:bash
controlplane:~$ argo list -n argo
NAME STATUS AGE DURATION PRIORITY MESSAGE
hello-world-lm6sh Succeeded 35s 10s 0
hello-world-7dttr Succeeded 2m 10s 0
hello-world-s5nck Succeeded 6m 10s 0
hello Succeeded 13m 30s 0
画面上と対応している
https://gyazo.com/9b19689e3f623d516c16d5281eb33632
λ argo get
特定のworkflowの詳細を取得
e.g.
$ argo get -n argo @latest
@latestは最新のworkflowを指す
λ argo logs
workflowのlogを表示
e.g.
$ argo logs -n argo @latest