すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Simple Message Queue (旧称:MNS) を使用してワークフローをトリガーする

最終更新日:Nov 09, 2025

ワークフロークラスターは、Alibaba Cloud Simple Message Queue (旧称:MNS) と統合できます。Simple Message Queue (旧称:MNS) をミドルウェアとして使用して、さまざまなイベントソースに接続し、ワークフローをトリガーできます。OSS イベントや EventBridge イベントなどの新しいイベントが発生すると、Simple Message Queue (旧称:MNS) は対応するメッセージを受信します。その後、Argo は指定されたイベントトリガー条件に基づいてワークフローを自動的にトリガーします。このプロセスにより、ワークフローの実行が自動化されます。

前提条件

ステップ 1: Event Bus の作成

Event Bus は、名前空間内のイベント駆動型ワークフローで共有できます。NATS または Simple Message Queue (旧称:MNS) を使用して Event Bus を作成できます。すでに Event Bus を作成している場合は、「ステップ 2: イベントソースの作成」に進んでください。

NATS で作成

  1. event-bus.yaml ファイルを作成します。次のコードは例です。

    apiVersion: argoproj.io/v1alpha1
    kind: EventBus
    metadata:
      name: default
    spec:
      nats:
        native:
          replicas: 3
          auth: token
  2. 次のコマンドを実行して EventBus を作成します。

    kubectl apply -f event-bus.yaml
    説明

    コマンドが正常に実行されると、Event Bus Pod がデフォルトの名前空間に作成されます。後続のすべての操作は、同じ名前空間で実行する必要があります。

  3. 次のコマンドを実行して、Event Bus Pod が開始されたことを確認します。

    kubectl get pod

Simple Message Queue (旧称:MNS) を使用して作成

  1. Simple Message Queue (旧称:MNS) コンソールにログインします。

  2. [Topics] ページで、argoeventbus という名前の Topic を作成します。[Topic の詳細] ページで、[エンドポイント] セクションからエンドポイントを取得します。

  3. RAM ユーザーを作成し、RAM ユーザーに AliyunMNSFullAccess 権限を付与してから、RAM ユーザーの AccessKey ID と AccessKey Secret を取得します。

    詳細については、「RAM ユーザーの作成」、「RAM ユーザーへの権限付与」、「AccessKey ペアの作成」、および「RAM ユーザーの AccessKey 情報の表示」をご参照ください。

  4. 次のコマンドを実行して、AccessKey ID と AccessKey Secret を格納する Secret を作成します。

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  5. 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) のエンドポイント。
  6. 次のコマンドを実行して event-bus-mns.yaml ファイルを適用し、Event Bus リソースを作成します。

    kubectl apply -f event-bus-mns.yaml

ステップ 2: イベントソースの作成

  1. Simple Message Queue (旧称:MNS) コンソールにログインします。

  2. [キュー] ページで、test-event-queue という名前のキューを作成します。[キューの詳細] ページで、[エンドポイント] セクションからエンドポイントを取得します。

    説明

    Simple Message Queue (旧称:MNS) を使用して Event Bus を作成した場合、ステップ 3 からステップ 5 をスキップして、直接「ステップ 6」に進むことができます。

  3. RAM ユーザーを作成し、RAM ユーザーに AliyunMNSFullAccess 権限を付与してから、RAM ユーザーの AccessKey ID と AccessKey Secret を取得します。

    詳細については、「RAM ユーザーの作成」、「RAM ユーザーへの権限付与」、「AccessKey ペアの作成」、および「RAM ユーザーの AccessKey 情報の表示」をご参照ください。

  4. 次のコマンドを実行して、AccessKey ID と AccessKey Secret を格納する Secret を作成します。

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  5. 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) のエンドポイント。
  6. 次のコマンドを実行して event-source.yaml ファイルを適用し、イベントソースを作成します。

    kubectl apply -f event-source.yaml
  7. 次のコマンドを実行して、イベントソース Pod が期待どおりに開始されるかどうかを確認します。

    kubectl get pod

ステップ 3: Event Sensor の作成

  1. event-sensor.yaml ファイルを作成し、Event Sensor で実行するワークフロー定義を埋め込みます。次のコードは、Event Sensor の例です。

    クリックしてサンプルコードを表示

    apiVersion: argoproj.io/v1alpha1
    kind: Sensor
    metadata:
      name: ali-mns
    spec:
      template:
        serviceAccountName: default
      dependencies:
        - name: test-dep
          eventSourceName: ali-mns    # イベントソース名と一致させます。
          eventName: example          # イベントソースのイベント名定義と一致させます。
      triggers:
        - template:
            name: mns-workflow
            k8s:
              operation: create
              source:
                resource:
                  apiVersion: argoproj.io/v1alpha1    # ワークフロー定義を埋め込みます。
                  kind: Workflow
                  metadata:
                    generateName: ali-mns-workflow-
                  spec:
                    entrypoint: whalesay
                    arguments:
                      parameters:        # イベントコンテンツをパラメーターとして渡します。
                        - name: message
                          # これは上書きされるべき値です
                          value: hello world
                    templates:
                      - name: whalesay
                        inputs:
                          parameters:
                            - name: message
                        container:
                          image: docker/whalesay:latest
                          command: [cowsay]
                          args: ["{{inputs.parameters.message}}"]
              parameters:
                - src:        # イベントコンテンツを解析し、ワークフローに渡します。
                    dependencyName: test-dep
                    dataKey: body
                  dest: spec.arguments.parameters.0.value
  2. 次のコマンドを実行して event-sensor.yaml ファイルを適用し、Event Sensor を作成します。

    kubectl apply -f event-sensor.yaml
  3. 次のコマンドを実行して、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) へのメッセージ送信によるワークフローのトリガーを検証する

  1. Simple Message Queue (旧称:MNS) コンソールにログインします。

  2. [キュー] ページで、test-event-queue キューを見つけ、[アクション] 列の [メッセージの送受信] をクリックします。

  3. [メッセージの送受信] ページで、メッセージ内容として test trigger argo workflow を入力し、[メッセージの送信] をクリックします。

  4. 次のコマンドを実行して、ワークフロークラスター内のワークフローのステータスを確認します。

    argo list

    次の出力が返されます。

    NAME                     STATUS    AGE   DURATION   PRIORITY
    ali-mns-workflow-5prz7   Running   6s    6s         0
  5. 次のコマンドを実行してワークフローログを取得し、メッセージの内容を表示します。

    argo logs ali-mns-workflow-5prz7
    重要
    • このコマンドのワークフロー名は、前のステップで返されたワークフロー名と同じである必要があります。ali-mns-workflow-5prz7 は一例です。お使いの環境での実際の戻り値に置き換える必要があります。

    • メッセージの内容は Base64 でエンコードされています。

    次の出力が返されます: image.png

ステップ 5: イベント関連リソースの削除

  1. 関連リソースを削除します。

    • Event Sensor の削除

      kubectl delete sensor ali-mns
    • イベントソースの削除

      kubectl delete eventsource ali-mns
    • Event Bus の削除

      kubectl delete eventbus default
  2. 次のコマンドを実行して Pod のステータスを確認し、すべてのリソースが削除されたことを確認します。

    kubectl get pod