👓

argo workflowをローカル環境に構築

2021/07/16に公開

概要

docker desktop for macでの
argo workflowのローカル環境構築の話

argo workflowとは

Kubernetesで並列ジョブを調整するための
オープンソースのコンテナネイティブワークフローエンジン。
https://argoproj.github.io/argo-workflows/

手順

1.kubectlをインストール

kubernetesを操作するコマンドツール

brew install kubectl
kubectl version --client

https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/

2.kubernetes環境構築

Mac上にKubernetes環境を構築する。
今回はminikubeで行う。
以下のようにしてminikubeをインストールする。

brew install minikube

続いてminikubeを起動する。
dockerオプションを付与しての起動が推奨されている。
※以前に試したときはできたけどverの不整合なのか今はVirtualBoxを仮想マシンとして使うとエラーになるのでdockerのコンテナ仮想マシンとして利用

minikube start --driver=docker

https://minikube.sigs.k8s.io/docs/drivers/docker/
起動状態を確認する。
minikubeと表示されればOK

kubectl config current-context

3.argoインストール

argo cliをインストールしておく

brew argo install

Namespaceを作り、argoのmanifestを反映

kubectl create ns argo
kubectl apply -n argo -f <URL>

URLは以下の公式のinstall.yamlのページを指定
https://argoproj.github.io/argo-workflows/manifests/

default サービスアカウントに権限を付与する。
これをしないと、Argo Workflowの一部の機能
(ファイル出力,secretへのアクセスなど)が使えない模様。

kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default

argoジョブ実行

以下でhello-worldジョブが稼働すればOK

argo submit -n argo --watch https://raw.githubusercontent.com/argoproj/argo/master/examples/hello-world.yaml

WEB UI

以下を発行してローカルモードで起動する。
ローカルモードの場合は認証がいらない。

argo server

http://127.0.0.1:2746にアクセス
https://argoproj.github.io/argo-workflows/argo-server/#kubectl-port-forward

workflow画面

表示の際はnamespaceを指定すること
デフォルトはnullになっているのでargoと入力する

最後に

argoはパブリッククラウド等でKubernetesを利用した
ジョブシステムを構築する際に便利なので一度触れておいて損はないかもしれない。
クラウドで利用する際は「minikube」は不要となり、
各クラウドのKubernetesサービスにargoを入れることになる。
google:GKE
Azure:AKS
AWS:EKS

本番で運用する際はデプロイの自動化を行うargo CDも合わせて利用すると便利。

Discussion