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

Container Service for Kubernetes:DingTalkシャボットを使用してイベント通知を送信する

最終更新日:Jan 07, 2025

ワークフローまたはワークフローのステップが完了した後、外部システムに通知を送信する必要がある場合があります。 たとえば、電子メールやインスタントメッセージ (DingTalkメッセージなど) を送信したり、メッセージバス (Kafkaなど) を使用して外部システムに通知したりすることができます。 このトピックでは、外部システムに通知を送信するようにワークフローを設定する方法について説明します。 このトピックでは、DingTalkメッセージを例として使用します。

前提条件

分散Argoワークフロー用のKubernetesクラスターが作成されました。 クラスターの仮想プライベートクラウド (VPC) にインターネットアクセスがあります。

仕組み

  1. 外部システムは通常、HTTP webhookを公開することによってメッセージを受信します。

  2. Argoワークフローは終了ハンドラーをサポートします。 ワークフローのステップの終了ハンドラーを定義するか、ワークフローの終了ハンドラーを定義できます。

  3. 出口ハンドラはコンテナで実行されます。 コンテナでcurlコマンドを実行すると、HTTPメッセージで伝達されるイベント通知を外部システムに送信できます。

ステップ1: DingTalkチャットボットを作成する

DingTalkチャットボットを作成すると、専用のwebhook URLが生成されます。 webhook URLをArgoワークフローなどの他のサービスに関連付けて、通知を受信できます。

  1. イベント通知を受け取る必要があるDingTalkグループに移動します。

  2. チャットボットの設定ページに移動します。

    1. 右上隅のグループ設定アイコン图标.pngをクリックします。 [グループ] [設定] パネルで、[ボット] をクリックします。

    2. [ロボット管理] パネルで、[ロボットの追加] をクリックします。 [ロボット] ダイアログボックスの [ロボットの追加] セクションで、图标2.pngアイコンをクリックします。

    3. [追加するロボットを選択してください] セクションで、[カスタム] をクリックします。 [ロボットの詳細] ダイアログボックスで、[追加] をクリックします。 プロンプトに従ってDingTalkチャットボットを設定します。 少なくとも1つのセキュリティ設定を選択する必要があります。 セキュリティを確保するために、[追加署名][IPアドレス] のいずれかを選択することを推奨します。

      重要

      DingTalkメッセージを送信するようにワークフローを設定するには、ワークフロークラスターのVPCにインターネットアクセスがあることを確認します。 これを行うには、ワークフロークラスターのインターネットNATゲートウェイを設定し、チャットボットのIP addressパラメーターでゲートウェイのelastic IPアドレス (EIP) を指定します。

  3. 設定が完了したら、webhook URLを記録します。image.png

ステップ2: ワークフローでDingTalkチャットボットを使用する

次のYAMLテンプレートを使用してワークフローを作成し、ワークフローでDingTalkチャットボットを使用します。 詳細については、「ワークフローの作成」をご参照ください。

apiVersion: argoproj.io/v1alpha 1
kind: ワークフロー
メタデータ:
  generateName: 通知-デモ-
spec:
  entrypoint: say-hello
  onExit: exit-handler# ワークフローが完了したら、exitハンドラーを実行します。 
  templates:
  -name: say-hello
    container:
      画像: アルパイン: 最新
      コマンド: [sh, -c]
      args: ["echo hello"]

  -name: exit-handler
    container:
      画像: curlimages/curl
      コマンド: [sh, -c]
      # curlコマンドを実行してDingTalkメッセージを送信し、メッセージタイプをlinkに設定します。 Argoワークフローコンソールへのリンクを含めて、他のユーザーがワークフローの詳細をすばやく表示できるようにすることができます。 
      # 次の変数を参照できます: {{workflow.name}} 、{{workflow.status}} 、{{workflow.failures}} 、{{workflow.workflow.duration} 。 
      args: [
        "curl -H 'コンテンツタイプ: application/json' -d' {
          \"msgtype\": \"link\" 、
          \"リンク \": {
            \"title\":\"Argoワークフロー通知 \" 、
            \"text\":\"WF {{workflow.name}} {{workflow.status }}\" 、
            \"messageUrl\":\" https://argo.xxx.cn-zhangjiakou.alicontainer.com:2746/workflows/default/{{workflow.name }}? tab=workflow\"
          }
        }'
        https://oapi.dingtalk.com/robot/send?access_token=b97fb519129fdfce879baa4e3b905b14e6a64e8994f0ea3b11dda **** "# DingTalkグループのwebhook URLに置き換えます。 
      ]

DingTalkメッセージの例を次の図に示します。

消息.png

関連ドキュメント

カスタムチャットボットをシステムに統合する方法の詳細については、「カスタムチャットボットの統合」をご参照ください。