バージョンアップ情報
Argo Events情報
Argo Eventsとは
Argo Events(アルゴイベンツ)は、Kubernetes上でイベント駆動型のワークフローを構築するためのオープンソースソフトウェアです。イベントソース(例:HTTPリクエスト、S3バケットの変更、Kafkaメッセージなど)からのイベントをトリガーとして、Kubernetesクラスタ内でワークフローやタスクを実行するのに役立ちます。
Argo Eventsを使用すると、以下のようなことが実現できます。
- S3バケットにオブジェクトがアップロードされたことをトリガーに、Kubernetesのジョブを起動する。
- Slackの通知をトリガーに、メッセージ内容をAWS Lambdaで実行する。
- GCP Pub/Subからの通知をトリガーに、Argo Workflowを実行する。
Argo EventsはArgo Projectsの一つであり、他には以下のようなプロジェクトがあります。
- Argo Workflows:DAGとステップベースのワークフローをサポートするKubernetesネイティブのワークフローエンジン。
- Argo CD:完全なUIを備えた宣言的継続的デリバリーツール。
- Argo Rollouts:CanaryやBlue-Greenといった高度なKubernetesデプロイメント戦略を簡単にするOSS。
主な特徴
Argo Eventsの公式ドキュメントのトップページでは、以下の特徴があると記載しています。
- 20以上のイベントソースからのイベントをサポート
- ワークフロー自動化のためのビジネスレベルの制約ロジックをカスタマイズ可能
- シンプルでリニアなリアルタイムイベントから複雑なマルチソースイベントまで管理可能
- Kubernetes Objects、Argo Workflow、AWS Lambda、Serverlessなどをトリガーとしてサポート
- CloudEventsに準拠
![](/oss_info/image/argoevents_image01.png)
Argo Eventsのアーキテクチャを図示すると、以下のようになります。
![](/oss_info/image/argoevents_image02.png)
Argo Eventsの主要な構成要素は、上の図の中にある以下の4つです。
イベントソース
イベントソースとは、特定の種類のイベントを生成する外部システムやサービスのことを指します。
イベントソースは、Argo Eventsが監視し、検出するイベントの発生元となります。例えば、HTTP(外部のHTTPリクエスト)やWebhook(Webhook通知)、S3(AWS S3バケットへのオブジェクトのアップロードや削除イベント)、Kafka(Kafkaトピックへのメッセージ)などです。
以下は、Webhookの定義の例です。
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: webhook
spec:
service:
ports:
port: 12000
targetPort: 12000
webhook:
example:
port: "12000"
endpoint: /example
method: POST
センサー
センサーとは、特定のイベントソースから発生したイベントを監視し、そのイベントがトリガー条件に一致したときに対応するアクションを実行するコンポーネントです。
センサーはイベントソースとトリガーの間をつなぐ役割を果たし、複数のイベントソースを組み合わせて複雑なイベント駆動型ワークフローを実現することができます。
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: kafka
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
name: test-dep
eventSourceName: kafka
eventName: example
triggers:
template:
name: kafka-workflow-trigger
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
# ...
イベントバス
イベントバスとは、イベントの転送と管理を行うためのメカニズムです。イベントバスは、イベントソースから受信したイベントをセンサーに送信する役割を果たし、イベントの中継役を担います。
これにより、イベントの管理と送信が効率的に行われ、イベント駆動型ワークフローの構築が容易になります。
apiVersion: argoproj.io/v1alpha1
kind: EventBus
metadata:
name: default
spec:
nats:
native:
replicas: 3
トリガー
トリガーとは、センサーが特定のイベントを検出したときに実行されるアクションを定義するコンポーネントです。
トリガーは、イベントに対してどのような応答を行うかを指定し、さまざまな種類のアクションを実行することができます。これにより、イベント駆動型の自動化を実現します。
Argo Eventsは、これらを使用してイベント駆動型のワークフローを構築しています。
導入事例
Argo Eventsで実現できるシナリオの具体的な例を以下に挙げます。
S3バケットへのアップロード時のデータ処理ワークフローの開始
S3バケットに新しいファイルが追加された時、そのファイルを読み取り、解析、データベースに保存するワークフローを自動的に開始する。
GitHubリポジトリへのプッシュ時のCI/CDパイプラインの実行
GitHubのリポジトリに新しいコードがプッシュされたとき、自動的にCI/CDパイプラインを開始して、コードのビルド、テスト、デプロイを実行する。
HTTPリクエスト受信時のKubernetesジョブの実行
特定のHTTPエンドポイントにリクエストが来たとき、そのリクエストをトリガーとしてKubernetes上でジョブを実行し、結果をレスポンスとして返す。
Kafkaメッセージ受信時のデータパイプラインの実行
Kafkaトピックに新しいメッセージが到着したとき、そのメッセージを処理するデータパイプラインを自動的に開始する。
タイムベースのバッチ処理
毎日深夜に定期的なバッチ処理を実行し、データの集計やレポート生成などを行う。
センサーからのデータのリアルタイムデータ解析
IoTデバイスやセンサーからのデータを受け取ったとき、そのデータをリアルタイムで解析するワークフローを開始する。
Slackメッセージをトリガーとしたアクションの実行
Slackチャンネルに特定のメッセージが投稿されたときに、自動的に通知を送信したり、特定のタスクを実行する。
データベースの変更に応じたデータ同期タスクの実行
データベースの特定のテーブルに変更があったとき、その変更を他のシステムやデータベースと同期するタスクを実行する。
クラウドインフラの変更に応じたインフラ操作
クラウドリソース(例:AWSのEC2インスタンス)が作成・削除されたとき、そのイベントに応じて対応するインフラ操作を自動化。
メッセージキューのメッセージに応じたタスクの実行
AWS SQSキューに新しいメッセージが到着したとき、そのメッセージを処理するためのタスクを実行し、結果を別のシステムに送信する。
これらの例は、Argo Eventsを使用することで、さまざまなイベントソースからのトリガーを利用して自動化を実現できるシナリオを示しています。
Argo Eventsの柔軟なイベントハンドリング機能により、複雑なイベント駆動型ワークフローを簡単に構築できます。
類似プロダクト
Kubernetes上でのイベント駆動型アプリケーションやワークフローの自動化を支援するOSSは、他にも以下のようなものがあります。
Knative Eventing:
Kubernetes上でイベント駆動型アプリケーションを構築するためのコンポーネント。イベントの生成、配信、消費を簡単に行うことができ、サーバーレスアプリケーションの構築に役立ちます。
Kubeflow Pipelines:
機械学習(ML)ワークフローを管理・オーケストレーションするためのフレームワーク。イベント駆動型のMLパイプラインを構築し、Kubernetes上で実行できます。
Fission:
Kubernetes上で動作するサーバーレスファンクションアズアサービス(FaaS)フレームワーク。イベント駆動型の関数を簡単にデプロイして実行することができます。
OpenFaaS:
KubernetesやDocker Swarm上でサーバーレス関数を実行するためのプラットフォーム。イベント駆動型の関数を簡単に作成、デプロイ、管理でき、さまざまなイベントソースと統合できます。
Argo Eventsのライセンス
Argo Eventsのライセンスは、Apache License 2.0となっており、ユーザーはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。