はじめに
Amazon EKSでArgoCD Notificationsを利用する方法をまとめます。
Mac環境を想定しています。
今回はSlackに通知をするようにします。
実行環境の準備
-
AWS CLIの設定
AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。 -
EKSクラスタの構築
Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。 -
EKSのコンテキストの設定
MacにてAmazon EKSの設定をするを参考にしてください。 -
Helmの設定
Amazon EKSでHelmを利用するを参考にしてください。 -
ArgoCDの設定
Amazon EKSでArgoCDを利用するを参考にしてください。
Slack Appの作成
-
Slack Appを作成する
Slack apiにアクセスし、Slack Appを作成し、ワークスペーにインストールする。
また、OAuthトークンを発行する。※作成方法Slack Configurationを参考にしてください。
※OAuthトークン例:xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX
-
インストールしたアプリを利用するSlackチェンネルに登録する
-
Slack通知のテスト
※OAuthトークン
とSlackチェンネル名
を設定する
※chat.postMessageを参考にしてください。curl -X POST 'https://slack.com/api/chat.postMessage' \ -d 'token=xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX' \ -d 'channel=#${Slackチャンネル名}' \ -d 'text=*Test*'
環境設定
※事前にKubernetesクラスターのコンテキストの設定をします。
※ArgoCDのインストールが必要です。
-
トリガーとテンプレートをクラスターに適用する
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications_catalog/install.yaml
-
argocd-notifications-secret.yaml
を作成する
※SlackのOAuthトークン
を設定するargocd-notifications-secret.yamlapiVersion: v1 kind: Secret metadata: name: argocd-notifications-secret namespace: argocd stringData: notifiers.yaml: | slack: token: xoxb-0000000000000-0000000000000-XXXXXXXXXXXXXXXXXXXXXXXX type: Opaque
-
クラスターに適用する
kubectl apply -f argocd-notifications-secret.yaml
[サンプル] guestbook-goのマニフェスト
guestbook-goを構築する。
-
guestbook-go.yaml
を作成する
※Slackチェンネル名
を設定するguestbook-go.yamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io annotations: notifications.argoproj.io/subscribe.on-sync-succeeded.slack: ${Slackのチャンネル名} spec: project: default source: repoURL: https://github.com/kubernetes/examples.git path: guestbook-go destination: server: 'https://kubernetes.default.svc' namespace: guestbook syncPolicy: syncOptions: - CreateNamespace=true automated: prune: true selfHeal: true
-
クラスターに適用する
kubectl apply -f guestbook-go.yaml
クリーンアップ
-
クラスターから削除する
kubectl delete -f guestbook-go.yaml kubectl delete -f argocd-notifications-secret.yaml kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications_catalog/install.yaml
デフォルトトリガーを利用する
Default Triggersを参考にしてください。
-
ConfigMapの
defaultTriggers
にトリガーをまとめる。argocd-notifications-cm.yamlapiVersion: v1 kind: ConfigMap metadata: name: argocd-notifications-cm data: # Holds list of triggers that are used by default if trigger is not specified explicitly in the subscription defaultTriggers: | - on-sync-status-unknown - on-sync-running - on-sync-failed - on-sync-succeeded - on-deployed
-
ArgoCDのApplicationマニフェストのアノテーションにはトリガーを記載しなくてすみます。
argocd.yamlapiVersion: argoproj.io/v1alpha1 kind: Application metadata: annotations: notifications.argoproj.io/subscribe.slack: ${Slackのチャンネル名}