Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use Simple Message Queue (formerly MNS) to trigger a workflow

Última atualização: Oct 15, 2026

Os Workflow Clusters podem se integrar ao Simple Message Queue (formerly MNS) do Alibaba Cloud. Utilize o Simple Message Queue (formerly MNS) como broker para conectar diversas fontes de eventos e acionar execuções de workflows com base nesses eventos. Quando um novo evento ocorre, como um evento do Object Storage Service (OSS) ou do EventBridge, o Simple Message Queue (formerly MNS) recebe a mensagem correspondente. O Argo aciona automaticamente a execução do workflow com base nas condições do trigger, o que automatiza o processamento do workflow.

Pré-requisitos

Etapa 1: Criar um event bus

Um event bus pode ser compartilhado por workflows orientados a eventos em um namespace. É possível criar um event bus usando NATS ou Simple Message Queue (formerly MNS). Se já existir um event bus, vá diretamente para a Etapa 2: Criar uma fonte de eventos.

Criar usando NATS

  1. Crie um arquivo event-bus.yaml. Configuração de exemplo:

    apiVersion: argoproj.io/v1alpha1
    kind: EventBus
    metadata:
      name: default
    spec:
      nats:
        native:
          replicas: 3
          auth: token
  2. Execute o comando a seguir para criar o EventBus:

    kubectl apply -f event-bus.yaml
    Nota

    Após a execução bem-sucedida do comando, um pod do EventBus é criado no namespace default. As operações subsequentes devem ser executadas no mesmo namespace.

  3. Execute o comando a seguir para verificar se o pod do EventBus foi iniciado:

    kubectl get pod

Criar usando o Simple Message Queue (formerly MNS)

  1. Faça logon no console do Simple Message Queue (formerly MNS).

  2. Na página Topics, crie um tópico chamado argoeventbus. Em seguida, na página Topic Details, obtenha o endpoint na seção Access Point.

  3. Faça logon no console do RAM como administrador do RAM.

  4. Crie um usuário do Resource Access Management (RAM), conceda a permissão AliyunMNSFullAccess ao usuário do RAM e obtenha o AccessKey ID e o AccessKey secret do usuário.

    Para mais informações, consulte Criar um usuário do RAM, Gerenciar permissões de usuário do RAM, Criar uma AccessKey e Visualizar informações da AccessKey do usuário do RAM.

  5. Execute o comando a seguir para criar um Secret para armazenar o AccessKey ID e o AccessKey secret.

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  6. Crie um arquivo event-bus-mns.yaml e substitua os parâmetros do exemplo pelos valores do seu ambiente.

    • topic: substitua o valor pelo nome do tópico criado na etapa 2 do Simple Message Queue (formerly MNS).

    • endpoint: substitua o valor pelo endpoint obtido na etapa 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  # The name of the topic in Simple Message Queue (formerly MNS).
        endpoint: http://165***368.mns.<region>.aliyuncs.com  # The endpoint of Simple Message Queue (formerly MNS).
  7. Execute o comando a seguir para aplicar o arquivo event-bus-mns.yaml e criar o recurso do event bus.

    kubectl apply -f event-bus-mns.yaml

Etapa 2: Criar uma fonte de eventos

  1. Faça logon no console do Simple Message Queue (formerly MNS).

  2. Na página Queues, crie uma fila chamada test-event-queue. Em seguida, na página Queue Details, obtenha o endpoint na seção Access Point.

    Nota

    Se você criou o event bus usando o Simple Message Queue (formerly MNS), ignore as etapas 3 a 5 e vá diretamente para a etapa 6.

  3. Faça logon no console do RAM como administrador do RAM.

  4. Crie um usuário do Resource Access Management (RAM), conceda a permissão AliyunMNSFullAccess ao usuário do RAM e obtenha o AccessKey ID e o AccessKey secret do usuário.

    Para mais informações, consulte Criar um usuário do RAM, Gerenciar permissões de usuário do RAM, Criar uma AccessKey e Visualizar informações da AccessKey do usuário do RAM.

  5. Execute o comando a seguir para criar um Secret para armazenar o AccessKey ID e o AccessKey secret.

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  6. Crie um arquivo event-source.yaml e substitua os parâmetros do exemplo pelos valores do seu ambiente.

    • topic: substitua o valor pelo nome do tópico criado na etapa 2 do Simple Message Queue (formerly MNS).

    • endpoint: substitua o valor pelo endpoint obtido na etapa 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 # The name of the queue in Simple Message Queue (formerly MNS).
          waitTimeSeconds: 20
          endpoint: http://165***368.mns.<region>.aliyuncs.com # The endpoint of Simple Message Queue (formerly MNS).
  7. Execute o comando a seguir para aplicar o arquivo event-source.yaml e criar a fonte de eventos.

    kubectl apply -f event-source.yaml
  8. Execute o comando a seguir para verificar se o Pod da fonte de eventos foi iniciado conforme o esperado.

    kubectl get pod

Etapa 3: Criar um sensor de eventos

  1. Crie um arquivo event-sensor.yaml e incorpore a definição do workflow a ser executado no sensor de eventos. O código de exemplo a seguir mostra a configuração do sensor de eventos:

    Visualizar o código de exemplo

    apiVersion: argoproj.io/v1alpha1
    kind: Sensor
    metadata:
      name: ali-mns
    spec:
      template:
        serviceAccountName: default
      dependencies:
        - name: test-dep
          eventSourceName: ali-mns    # Matches the event source name.
          eventName: example          # Matches the event name defined in the event source.
      triggers:
        - template:
            name: mns-workflow
            k8s:
              operation: create
              source:
                resource:
                  apiVersion: argoproj.io/v1alpha1    # Embeds the workflow definition.
                  kind: Workflow
                  metadata:
                    generateName: ali-mns-workflow-
                  spec:
                    entrypoint: whalesay
                    arguments:
                      parameters:        # Parameters pass the event content.
                        - name: message
                          # this is the value that should be overridden
                          value: hello world
                    templates:
                      - name: whalesay
                        inputs:
                          parameters:
                            - name: message
                        container:
                          image: docker/whalesay:latest
                          command: [cowsay]
                          args: ["{{inputs.parameters.message}}"]
              parameters:
                - src:        # Parses the event content and passes it to the workflow.
                    dependencyName: test-dep
                    dataKey: body
                  dest: spec.arguments.parameters.0.value
  2. Aplique o arquivo event-sensor.yaml para criar o sensor de eventos.

    kubectl apply -f event-sensor.yaml
  3. Verifique se o Pod do sensor de eventos foi iniciado conforme o esperado.

    kubectl get pod
Nota

Ao criar um event bus usando o Simple Message Queue (formerly MNS), uma fila correspondente do Simple Message Queue (formerly MNS) é criada automaticamente após a criação do sensor de eventos. O nome da fila segue o formato: ackone-argowf-<namespace>-<sensor-name>-<sensor-uid>.

Etapa 4: Verificar se o envio de uma mensagem para o Simple Message Queue (formerly MNS) aciona o workflow

  1. Faça logon no console do Simple Message Queue (formerly MNS).

  2. Na página Queues, localize a fila chamada test-event-queue. Na coluna Actions, clique em Send Messages.

  3. Na página de início rápido para envio e recebimento de mensagens, insira test trigger argo workflow como conteúdo da mensagem e clique em Send Message.

  4. Visualize a execução do workflow no cluster de workflow.

    argo list

    A saída esperada é a seguinte:

    NAME                     STATUS    AGE   DURATION   PRIORITY
    ali-mns-workflow-5prz7   Running   6s    6s         0
  5. Obtenha os logs do workflow para visualizar o conteúdo da mensagem.

    argo logs ali-mns-workflow-5prz7
    Importante
    • O nome do workflow neste comando deve corresponder ao nome retornado na etapa anterior. ali-mns-workflow-5prz7 é apenas um valor de exemplo. Substitua-o pelo valor retornado no seu ambiente.

    • O conteúdo da mensagem está codificado em Base64.

    A saída esperada é a seguinte:

    ali-mns-workflow-5prz7-whalesay-2429203954: time="2023-12-14T08:33:37.964Z" level=info msg="capturing logs" argo=true
    ali-mns-workflow-5prz7-whalesay-2429203954:
    ali-mns-workflow-5prz7-whalesay-2429203954:  < dGVzdCB0cmlnZ2VyIGFyZ28gd29ya2Zsb3c= >
    ali-mns-workflow-5prz7-whalesay-2429203954:  -----------------------------------------
    ali-mns-workflow-5prz7-whalesay-2429203954:     \
    ali-mns-workflow-5prz7-whalesay-2429203954:      \
    ali-mns-workflow-5prz7-whalesay-2429203954:       \
    ali-mns-workflow-5prz7-whalesay-2429203954:                     ##        .
    ali-mns-workflow-5prz7-whalesay-2429203954:               ## ## ##       ==
    ali-mns-workflow-5prz7-whalesay-2429203954:            ## ## ## ##      ===
    ali-mns-workflow-5prz7-whalesay-2429203954:        /""""""""""""""""___/ ===
    ali-mns-workflow-5prz7-whalesay-2429203954:   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
    ali-mns-workflow-5prz7-whalesay-2429203954:        \______ o          __/
    ali-mns-workflow-5prz7-whalesay-2429203954:         \    \        __/
    ali-mns-workflow-5prz7-whalesay-2429203954:           \____\______/
    ali-mns-workflow-5prz7-whalesay-2429203954: time="2023-12-14T08:33:38.979Z" level=info msg="sub-process exited" argo=true error="<nil>"

Etapa 5: Excluir recursos relacionados a eventos

  1. Exclua os recursos relacionados.

    • Exclua o sensor de eventos.

      kubectl delete sensor ali-mns
    • Exclua a fonte de eventos.

      kubectl delete eventsource ali-mns
    • Exclua o event bus.

      kubectl delete eventbus default
  2. Verifique o status dos Pods para confirmar que todos os recursos foram excluídos.

    kubectl get pod