ワークフロークラスターは、Alibaba Cloud Simple Message Queue (旧称:MNS) と統合できます。Simple Message Queue (旧称:MNS) をミドルウェアとして使用して、さまざまなイベントソースに接続し、ワークフローをトリガーできます。OSS イベントや EventBridge イベントなどの新しいイベントが発生すると、Simple Message Queue (旧称:MNS) は対応するメッセージを受信します。その後、Argo は指定されたイベントトリガー条件に基づいてワークフローを自動的にトリガーします。このプロセスにより、ワークフローの実行が自動化されます。
前提条件
以下のサービスと機能が有効化されています。
Simple Message Queue (旧称:MNS) を有効化して権限を付与する。この機能には Simple Message Queue (旧称:MNS) の料金が発生します。課金の詳細については、「課金の概要」をご参照ください。
ワークフロークラスターが作成され、Alibaba Cloud Argo コマンドラインインターフェイス (CLI) がダウンロードされます。
ステップ 1: Event Bus の作成
Event Bus は、名前空間内のイベント駆動型ワークフローで共有できます。NATS または Simple Message Queue (旧称:MNS) を使用して Event Bus を作成できます。すでに Event Bus を作成している場合は、「ステップ 2: イベントソースの作成」に進んでください。
NATS で作成
event-bus.yamlファイルを作成します。次のコードは例です。apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: name: default spec: nats: native: replicas: 3 auth: token次のコマンドを実行して EventBus を作成します。
kubectl apply -f event-bus.yaml説明コマンドが正常に実行されると、Event Bus Pod がデフォルトの名前空間に作成されます。後続のすべての操作は、同じ名前空間で実行する必要があります。
次のコマンドを実行して、Event Bus Pod が開始されたことを確認します。
kubectl get pod
Simple Message Queue (旧称:MNS) を使用して作成
Simple Message Queue (旧称:MNS) コンソールにログインします。
[Topics] ページで、argoeventbus という名前の Topic を作成します。[Topic の詳細] ページで、[エンドポイント] セクションからエンドポイントを取得します。
RAM ユーザーを作成し、RAM ユーザーに
AliyunMNSFullAccess権限を付与してから、RAM ユーザーの AccessKey ID と AccessKey Secret を取得します。詳細については、「RAM ユーザーの作成」、「RAM ユーザーへの権限付与」、「AccessKey ペアの作成」、および「RAM ユーザーの AccessKey 情報の表示」をご参照ください。
次のコマンドを実行して、AccessKey ID と AccessKey Secret を格納する Secret を作成します。
kubectl create secret generic mns-secret\ --from-literal=accesskey=*** \ --from-literal=secretkey=***event-bus-mns.yamlファイルを作成し、例のパラメーター値を実際の値に置き換えます。topic: この値を、「ステップ 2」で作成した Simple Message Queue (旧称:MNS) Topic の名前に置き換えます。endpoint: この値を、「ステップ 2」で取得したエンドポイントに置き換えます。
apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: name: default spec: alimns: accessKey: key: accesskey name: mns-secret secretKey: key: secretkey name: mns-secret topic: argoeventbus # Simple Message Queue (旧称:MNS) Topic の名前。 endpoint: http://165***368.mns.<region>.aliyuncs.com # Simple Message Queue (旧称:MNS) のエンドポイント。次のコマンドを実行して
event-bus-mns.yamlファイルを適用し、Event Bus リソースを作成します。kubectl apply -f event-bus-mns.yaml
ステップ 2: イベントソースの作成
Simple Message Queue (旧称:MNS) コンソールにログインします。
[キュー] ページで、test-event-queue という名前のキューを作成します。[キューの詳細] ページで、[エンドポイント] セクションからエンドポイントを取得します。
説明Simple Message Queue (旧称:MNS) を使用して Event Bus を作成した場合、ステップ 3 からステップ 5 をスキップして、直接「ステップ 6」に進むことができます。
RAM ユーザーを作成し、RAM ユーザーに
AliyunMNSFullAccess権限を付与してから、RAM ユーザーの AccessKey ID と AccessKey Secret を取得します。詳細については、「RAM ユーザーの作成」、「RAM ユーザーへの権限付与」、「AccessKey ペアの作成」、および「RAM ユーザーの AccessKey 情報の表示」をご参照ください。
次のコマンドを実行して、AccessKey ID と AccessKey Secret を格納する Secret を作成します。
kubectl create secret generic mns-secret\ --from-literal=accesskey=*** \ --from-literal=secretkey=***event-source.yamlファイルを作成し、例のパラメーター値を実際の値に置き換えます。topic: このパラメーターを、「ステップ 2」で作成した Simple Message Queue (旧称:MNS) の Topic の名前に設定します。endpoint: この値を、「ステップ 2」で取得したエンドポイントに置き換えます。
apiVersion: argoproj.io/v1alpha1 kind: EventSource metadata: name: ali-mns spec: mns: example: jsonBody: true accessKey: key: accesskey name: mns-secret secretKey: key: secretkey name: mns-secret queue: test-event-queue # Simple Message Queue (旧称:MNS) キューの名前。 waitTimeSeconds: 20 endpoint: http://165***368.mns.<region>.aliyuncs.com # Simple Message Queue (旧称:MNS) のエンドポイント。次のコマンドを実行して
event-source.yamlファイルを適用し、イベントソースを作成します。kubectl apply -f event-source.yaml次のコマンドを実行して、イベントソース Pod が期待どおりに開始されるかどうかを確認します。
kubectl get pod
ステップ 3: Event Sensor の作成
event-sensor.yamlファイルを作成し、Event Sensor で実行するワークフロー定義を埋め込みます。次のコードは、Event Sensor の例です。次のコマンドを実行して
event-sensor.yamlファイルを適用し、Event Sensor を作成します。kubectl apply -f event-sensor.yaml次のコマンドを実行して、Event Sensor Pod が期待どおりに開始されるかどうかを確認します。
kubectl get pod
Simple Message Queue (旧称:MNS) を使用して Event Bus を作成すると、Event Sensor の作成後に、対応する Simple Message Queue (旧称:MNS) キューが自動的に作成されます。キューの名前は、ackone-argowf-<namespace>-<sensor-name>-<sensor-uid> という形式になります。
ステップ 4: Simple Message Queue (旧称:MNS) へのメッセージ送信によるワークフローのトリガーを検証する
Simple Message Queue (旧称:MNS) コンソールにログインします。
[キュー] ページで、test-event-queue キューを見つけ、[アクション] 列の [メッセージの送受信] をクリックします。
[メッセージの送受信] ページで、メッセージ内容として
test trigger argo workflowを入力し、[メッセージの送信] をクリックします。次のコマンドを実行して、ワークフロークラスター内のワークフローのステータスを確認します。
argo list次の出力が返されます。
NAME STATUS AGE DURATION PRIORITY ali-mns-workflow-5prz7 Running 6s 6s 0次のコマンドを実行してワークフローログを取得し、メッセージの内容を表示します。
argo logs ali-mns-workflow-5prz7重要このコマンドのワークフロー名は、前のステップで返されたワークフロー名と同じである必要があります。
ali-mns-workflow-5prz7は一例です。お使いの環境での実際の戻り値に置き換える必要があります。メッセージの内容は Base64 でエンコードされています。
次の出力が返されます:

ステップ 5: イベント関連リソースの削除
関連リソースを削除します。
Event Sensor の削除
kubectl delete sensor ali-mnsイベントソースの削除
kubectl delete eventsource ali-mnsEvent Bus の削除
kubectl delete eventbus default
次のコマンドを実行して Pod のステータスを確認し、すべてのリソースが削除されたことを確認します。
kubectl get pod