ワークフローまたはワークフローのステップが完了した後、外部システムに通知を送信する必要がある場合があります。 たとえば、電子メールやインスタントメッセージ (DingTalkメッセージなど) を送信したり、メッセージバス (Kafkaなど) を使用して外部システムに通知したりすることができます。 このトピックでは、外部システムに通知を送信するようにワークフローを設定する方法について説明します。 このトピックでは、DingTalkメッセージを例として使用します。
前提条件
分散Argoワークフロー用のKubernetesクラスターが作成されました。 クラスターの仮想プライベートクラウド (VPC) にインターネットアクセスがあります。
仕組み
外部システムは通常、HTTP webhookを公開することによってメッセージを受信します。
Argoワークフローは終了ハンドラーをサポートします。 ワークフローのステップの
終了ハンドラーを定義するか、ワークフローの終了ハンドラーを定義できます。出口ハンドラはコンテナで実行されます。 コンテナで
curlコマンドを実行すると、HTTPメッセージで伝達されるイベント通知を外部システムに送信できます。
ステップ1: DingTalkチャットボットを作成する
DingTalkチャットボットを作成すると、専用のwebhook URLが生成されます。 webhook URLをArgoワークフローなどの他のサービスに関連付けて、通知を受信できます。
設定が完了したら、webhook URLを記録します。
ステップ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メッセージの例を次の図に示します。

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