EKSで始めるArgo Workflows

2023/09/23に公開

自己紹介

都内SaaS 企業でSRE エンジニア 2年目のFujihara Akitoです。
週一程度簡単なmemo書を残したいと思っています。

Argo Workflowsとは?

ArgoWorkflows とは kubernetes上で実行されるコンテナネイティブなワークフローエンジンであり、ジョブの実行順序の制御や並列実行などを柔軟に実行させることができます。
また、リッチなGUIがあるのも特徴です。

例えば、ジョブAを実行した後にジョブB, Cを実行し、BとCのジョブを待ってからジョブDを実行するというようなオーケストレーションを簡単に行うことができます。

また、https://argoproj.github.io/argo-workflows/architecture/ を参考に簡単にできそうなことを見てみます。

できそうなこと

  • webhookによるworkflowの発火など
  • prometheus metrics の取得
  • DBにworkflowの実行結果を保存
  • S3などのストレージにworkflowのログ保管やジョブ間のfile共有
  • OAuth Providerを活用した認証・認可

Argo Workflowsのコンポーネント

  • Argo Server: Argo Workflows の API と UI を公開するサーバーで、ssoなどの認証なども行う
  • Workflow Controller: Argo Workflows のカスタムコントローラー

Argo WorkflowsをEKSで試してみる

https://github.com/Akito-Fujihara/integration-argoworkflows
にterraformをmanifestを載せています。

terraoformでaws resourceの作成

変更点

Argo Workflows の作成

  • manifest管理にはhelm & helmfile を使用しています。
  • Argo Workflows の設定
    • 認証モードをserver
    • Argo Server の Service を NodePort に設定
      argoworkflows.yaml
server:
  serviceType: NodePort
  serviceNodePort: 30000
  extraArgs:
    - --auth-mode=server
  • helmfile apply -f helmfile.yaml で manifestを作成してください

sampleのworkflowも一緒に作成されるのでhello-workflow(上記の画像)も実行されると思います。

GitHubで編集を提案

Discussion