LoginSignup
113
82

More than 1 year has passed since last update.

Argo とはなんだ?

Last updated at Posted at 2020-07-11

Argo(アルゴ)は、2020年4月にCNCFのインキューベーション・プロジェクトになった。筆者が所属するIBMでも、注目のプロジェクトで適用が始まっているので、その概要について調べてみた。

アルゴとは

アルゴプロジェクトは、ワークフロー、デプロイ、ロールアウト、およびイベントなど、ジョブやアプリケーションをデプロイし、実行するためのKubernetes-ネイティブツールのセットだ。継続的デリバリー、累進的デリバリーなどの GitOps パラダイムによって、KubernetesでMLOps つまり機械学習のDevOps基盤を推進する。

アルゴ プロジェクトは、CNCFが支援するプロジェクトであり。この活動は複数あるが、本記事では、主要な4つのグループを取り上げる。

  1. アルゴ ワークフロー (Argo Workflow)
  2. アルゴ CD (Argo CD (Continuous Development))
  3. アルゴ ロールアウト (Argo Rollouts)
  4. アルゴ イベント (Argo Events)

argo-logo.png

Tekton Pipeline や Trigger のタスクの1ステップに、アルゴを組み込むことができるので、Tektonのトリガーで受けた git push の イベントから、Argo CDにつないでアプリケーションの状態管理など、連携運用も可能である。

Argoは、2017年にApplatixで開発された。その後、Applatixは2018年にIntuitによって買収された。2020年4月にCNCFのインキューベーション・プロジェクトになった。

参考資料:

アルゴ ワークフロー (Argo Workflow)

アルゴ ワークフローは、機械学習などの複雑なバッチ処理のスケジューラーとして利用されている。学習用データのセットの生成、後続のデープラーニングの処理などで利用されている。これは Kubernetes 上の並列ジョブのためのワークフローエンジンである。 これはカスタムリソース定義(CRD)によって実装され、次の様な特徴がある。

  • ワークフローは、個々のタスクのステップをコンテナで構成するため、開発言語や環境からの制約が少ない画期的な実行基盤である。
  • 複数タスクの連なり、または、有向非巡回グラフ(DAG)によってタスク間の依存関係を導出して、ワークフローの実行モデルを構成する。
  • アルゴ ワークフローは、断片的な時間で、機械学習やデータ処理の計算集中型ジョブを簡単に実行できる。
  • ソフトウェア製品の複雑な構成をおこなうこと無く、CICDパイプラインをKubernetes上で実現する。

IBM Cloud で Argo workflow を動かす時の課題とOperatorによる対処法も合わせてご覧ください。

スクリーンショット 2020-07-27 15.59.31.png

はじめかたのリンク

アルゴ CD (Argo CD (Continouse Development))

アルゴCDは、目的とする環境で、アプリケーションが目的とする状態となるように、デプロイを自動化する。 デプロイするアプリケーションのブランチによる更新を追跡、タグ、Gitコミット時のマニフェストの特定バージョンへの固定などがある。

アルゴCDは、Kubernetesコントローラとして実装され、アプリケーションの動作を継続的にモニターして、現在状態から目的とする状態へ変えていく。Gitリポジトリを通じて状態を設定する。 デプロイされたアプリケーションの現状が、目的とする状態から外れることを OutOfSync (同期外)とみなす。 アルゴCDは、目的とする状態と現状の差異を視覚化しレポートする。現状を目的の状態にするために、自動的同期または手動同期の手段を提供する。 Gitリポジトリでターゲット状態へ加えられた変更は、自動的に適用され、指定されたターゲット環境へ反映される。
アルゴCDは、アプリケーションの目的状態の定義をGitリポジトリを使うことで、GitOpsパターンに従う。 Kubernetesマニフェストは幾つかの方法で指定できる。

  • kustomize: kustomize は、Kubernetes の YAML をソースにして、目的にカスタマイズした YAML を生成する。
  • helmチャート: helm は Kubernetes のパッケージマネージャーで、YAML形式のマニフェスト一式をパッケージした一塊をチャートと呼ぶ。
  • ksonnet: Kubernetes マニフェストの記述、共有、デプロイのフレームワークで、CLIによってアプリケーションのマニフェストを簡単に生成する。プロジェクトは終了
  • jsonnet: Json のテンプレートエンジン
  • プレーンな YAML/Json マニフェスト

さらに具体的な記事を書きましたので、「Argo CD の GitOpsを確認してみた」ご参照ください。

スクリーンショット 2020-07-27 15.49.26.png

はじめかたのリンク

アルゴ ロールアウト (Argo Rollouts)

Argoロールアウトは、KubernetesコントローラとCRDのセットであり、ブルー・グリーン・デプロイ、カナリアリリース、カナリア分析、実験的配信など、Kubernetesへの段階的な配信などの高度なデプロイ機能を提供する。

Argoロールアウトは、イングレスコントローラーおよびサービスメッシュと統合し、ロールアウト中にシェーピング機能を利用してトラフィックを新しいバージョンに徐々にシフトする。さらに、ロールアウトは、さまざまなプロバイダーからのメトリックを参照および解釈して、主なKPIを検証し、ロールアウト時に、自動昇格またはロールバックを進める。

はじめたかのリンク

アルゴ イベント (Argo Events)

Argo イベントは、Kubernetesのイベント駆動型ワークフロー自動化フレームワークで、webhook、s3、スケジュール、メッセージングキュー、gcp pubsub、sns、sqsなどのさまざまなソースからのイベントで、K8sオブジェクト、Argoワークフロー、サーバーレスワークロードなどをトリガーするのに役立ち、以下の特徴がある。

  • 20以上のイベントソースからのイベントをサポート
  • ワークフロー自動化のためにビジネスレベルの制約ロジックをカスタマイズ
  • シンプルな線形のリアルタイムから複雑なマルチソースイベントまで、すべてを管理
  • トリガーとしてKubernetesオブジェクト、Argoワークフロー、AWS Lambda、サーバーレスなどをサポート
  • CloudEventsに準拠

トリガー対象のイベント

  • Argo Workflows
  • Standard K8s Objects
  • HTTP Requests / Serverless Workloads (OpenFaas, Kubeless, KNative etc.)
  • AWS Lambda
  • NATS Messages
  • Kafka Messages
  • Slack Notifications
  • Argo Rollouts
  • Custom Trigger / Build Your Own Trigger
  • Apache OpenWhisk

具体的な活用例として「Argo Events と Workflow の連携」のリンクもご参照願います。

screenshot-argo-events.png

はじめたかのリンク

以上

113
82
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
113
82