日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過輕量消息隊(duì)列(原 MNS)觸發(fā)工作流

更新時(shí)間:

工作流集群支持集成阿里云輕量消息隊(duì)列(原 MNS),利用輕量消息隊(duì)列(原 MNS)作為中介接入豐富的事件源,利用事件驅(qū)動(dòng)觸發(fā)工作流運(yùn)行。當(dāng)有新的事件觸發(fā)(如OSS事件觸發(fā)、EventBridge事件觸發(fā))時(shí),輕量消息隊(duì)列(原 MNS)會(huì)收到相應(yīng)的消息,Argo會(huì)根據(jù)事件觸發(fā)的條件自動(dòng)觸發(fā)工作流的運(yùn)行,實(shí)現(xiàn)自動(dòng)化的工作流處理。

前提條件

步驟一:創(chuàng)建Event Bus

Event Bus可以被命名空間中的事件驅(qū)動(dòng)工作流共享,您可以通過NATS和輕量消息隊(duì)列(原 MNS)兩種方式創(chuàng)建,如果已經(jīng)創(chuàng)建,請(qǐng)直接執(zhí)行步驟二:創(chuàng)建Event Source

通過NATS創(chuàng)建

  1. 創(chuàng)建event-bus.yaml文件。Event Bus示例代碼如下所示:

    apiVersion: argoproj.io/v1alpha1
    kind: EventBus
    metadata:
      name: default
    spec:
      nats:
        native:
          replicas: 3
          auth: token
  2. 執(zhí)行以下命令,創(chuàng)建EventBus。

    kubectl apply -f event-bus.yaml
    說明

    命令執(zhí)行成功后,會(huì)在default命名空間下創(chuàng)建Event Bus Pod。后續(xù)操作需在同一命名空間下。

  3. 執(zhí)行以下命令,查看Event Bus Pod是否正常啟動(dòng)。

    kubectl get pod

通過輕量消息隊(duì)列(原 MNS)創(chuàng)建

  1. 登錄輕量消息隊(duì)列(原 MNS)控制臺(tái)

  2. 主題列表頁(yè)面創(chuàng)建主題argoeventbus,并在主題詳情頁(yè)面的接入點(diǎn)區(qū)域獲取Endpoint。

  3. 使用RAM管理員登錄RAM控制臺(tái)

  4. 創(chuàng)建RAM用戶,為RAM用戶授予AliyunMNSFullAccess權(quán)限,并獲取RAM用戶的AK和SK。

    具體操作,請(qǐng)參見創(chuàng)建RAM用戶為RAM用戶授權(quán)創(chuàng)建AccessKey查看RAM用戶的AccessKey信息

  5. 執(zhí)行以下命令,創(chuàng)建Secret用于存儲(chǔ)AK和SK。

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  6. 創(chuàng)建event-bus-mns.yaml文件,將示例中的參數(shù)修改為實(shí)際使用的參數(shù)值。

    • topic:需替換為步驟2中創(chuàng)建的輕量消息隊(duì)列(原 MNS)中的主題名稱。

    • endpoint:需替換為步驟2中獲取的Endpoint。

    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  # 對(duì)應(yīng)輕量消息隊(duì)列(原 MNS)中的主題名稱。
        endpoint: http://165***368.mns.<region>.aliyuncs.com  # 對(duì)應(yīng)輕量消息隊(duì)列(原 MNS)的Endpoint。
  7. 執(zhí)行以下命令,應(yīng)用event-bus-mns.yaml文件創(chuàng)建Event Bus資源。

    kubectl apply -f event-bus-mns.yaml

步驟二:創(chuàng)建Event Source

  1. 登錄輕量消息隊(duì)列(原 MNS)控制臺(tái)

  2. 隊(duì)列列表頁(yè)面創(chuàng)建隊(duì)列test-event-queue,并在隊(duì)列詳情頁(yè)面的接入點(diǎn)區(qū)域獲取Endpoint。

    說明

    若您是通過輕量消息隊(duì)列(原 MNS)創(chuàng)建的Event Bus,則步驟3~步驟5可直接跳過,直接執(zhí)行步驟6

  3. 使用RAM管理員登錄RAM控制臺(tái)

  4. 創(chuàng)建RAM用戶,為RAM用戶授予AliyunMNSFullAccess權(quán)限,并獲取RAM用戶的AK和SK。

    具體操作,請(qǐng)參見創(chuàng)建RAM用戶為RAM用戶授權(quán)創(chuàng)建AccessKey查看RAM用戶的AccessKey信息

  5. 執(zhí)行以下命令,創(chuàng)建Secret用于存儲(chǔ)AK和SK。

    kubectl create secret generic mns-secret\
      --from-literal=accesskey=*** \
      --from-literal=secretkey=***
  6. 創(chuàng)建event-source.yaml文件,將示例中的參數(shù)修改為實(shí)際使用的參數(shù)值。

    • topic:需替換為步驟2中創(chuàng)建的輕量消息隊(duì)列(原 MNS)中的主題名稱。

    • endpoint:需替換為步驟2中獲取的Endpoint。

    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 # 對(duì)應(yīng)輕量消息隊(duì)列(原 MNS)中的隊(duì)列名稱。
          waitTimeSeconds: 20
          endpoint: http://165***368.mns.<region>.aliyuncs.com # 對(duì)應(yīng)輕量消息隊(duì)列(原 MNS)的Endpoint。
  7. 執(zhí)行以下命令,應(yīng)用event-source.yaml文件創(chuàng)建Event Source。

    kubectl apply -f event-source.yaml
  8. 執(zhí)行以下命令,查看Event Source Pod是否正常啟動(dòng)。

    kubectl get pod

步驟三:創(chuàng)建Event Sensor

  1. 創(chuàng)建event-sensor.yaml文件,在Event Sensor中嵌入待執(zhí)行的工作流定義。Event Sensor示例代碼如下所示:

    展開查看示例代碼

    apiVersion: argoproj.io/v1alpha1
    kind: Sensor
    metadata:
      name: ali-mns
    spec:
      template:
        serviceAccountName: default
      dependencies:
        - name: test-dep
          eventSourceName: ali-mns    # 匹配eventsource名稱。
          eventName: example          # 匹配eventsource中的事件名稱定義。
      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:        # 參數(shù)傳遞事件內(nèi)容。
                        - 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:        # 解析事件內(nèi)容,傳遞給工作流。
                    dependencyName: test-dep
                    dataKey: body
                  dest: spec.arguments.parameters.0.value
  2. 執(zhí)行以下命令,應(yīng)用event-sensor.yaml文件創(chuàng)建Event Sensor。

    kubectl apply -f event-sensor.yaml
  3. 執(zhí)行以下命令,查看Event Sensor Pod是否正常啟動(dòng)。

    kubectl get pod
說明

通過輕量消息隊(duì)列(原 MNS)創(chuàng)建Eventbus時(shí),在Event Sensor創(chuàng)建完成后,會(huì)自動(dòng)創(chuàng)建一個(gè)輕量消息隊(duì)列(原 MNS)與之對(duì)應(yīng),隊(duì)列命名格式為:ackone-argowf-<namespace>-<sensor-name>-<sensor-uid>

步驟四:驗(yàn)證通過向輕量消息隊(duì)列(原 MNS)發(fā)送消息觸發(fā)工作流

  1. 登錄輕量消息隊(duì)列(原 MNS)控制臺(tái)

  2. 隊(duì)列列表頁(yè)面中,找到隊(duì)列test-event-queue,在其操作列選擇更多 > 收發(fā)消息

  3. 在收發(fā)消息快速體驗(yàn)頁(yè)面中,輸入消息內(nèi)容test trigger argo workflow,然后單擊發(fā)送消息

  4. 執(zhí)行以下命令,在工作流集群中查看工作流的運(yùn)行情況。

    argo list

    預(yù)期輸出如下:

    NAME                     STATUS    AGE   DURATION   PRIORITY
    ali-mns-workflow-5prz7   Running   6s    6s         0
  5. 獲取工作流日志,查看消息內(nèi)容。

    argo logs ali-mns-workflow-5prz7
    重要
    • 該命令中的工作流名稱必須和上一步驟中返回的工作流名稱一致,ali-mns-workflow-5prz7僅為示例值,請(qǐng)您修改為實(shí)際環(huán)境中的返回值。

    • 消息內(nèi)容使用Base64編碼。

    預(yù)期輸出如下:image.png

步驟五:清除Event相關(guān)資源

  1. 執(zhí)行以下命令清除相關(guān)資源。

    • 清除Event Sensor

      kubectl delete sensor ali-mns
    • 清除Event Source

      kubectl delete eventsource ali-mns
    • 清除Event Bus

      kubectl delete eventbus default
  2. 執(zhí)行以下命令查看Pod狀態(tài),確認(rèn)所有資源已清除。

    kubectl get pod