Argo CD NotificationsでSlackに通知をしてみる
- はじめに
- 対象
- 目標
- 前提
- 前準備
- Slackでappを作成する
- Secretを作成する
- ConfigMapを作成する
- kustomization.yamlを編集する
- ディレクトリの確認
- argocd-notificationのインストールと一緒にkustomize buildする
- Argo CDのApplicationにannotationをつける
- Slackに通知する
- ログを確認する
- controllerに登録したTemplateを確認する
- 最後に
- 参考
はじめに
- argocd notificationsに興味があったので構築手順をブログに残します
対象
- argocd-notificationsを触ってみたいが、開発環境の構築方法がわからない人
- 手元の環境でargocd-notificationsを触ってみたい人
目標
guestbookアプリをSyncしたときSlackに通知される
前提
- docker, kind, kustomizationがインストールされている
前準備
ディレクトリ構成は下の記事で紹介したここと同じものを準備します
全てコピーしてくるとディレクトリは以下のようになっていると思います
ktbbrk.hatenablog.com
※ 使わないディレクトリは削除しています
$ tree . └── manifests └── argocd ├── base │ ├── kustomization.yaml │ └── namespace.yaml └── overlays └── development ├── apps │ └── guestbook.yaml └── kustomization.yaml
Argo CDを立ち上げる
$ kustomize build manifests/argocd/overlays/development | k apply -f - $ k -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d $ k port-forward svc/argocd-server -n argocd 8080:443
http://localhost:8080 にアクセスします
guestbookのApplicationを作成する
$ k apply -f manifests/argocd/overlays/development/apps/guestbook.yaml
前準備を全て行うと以下の画像のようになっているはずです
Slackでappを作成する
以下のサイトにApp作成の手順が書いてあるので、1 ~ 5までを行ってください
argocd-notifications.readthedocs.io
tokenが取得できるのでどこかにメモしておきましょう
Secretを作成する
slackからtokenを取得したらSecretを作成します
manifests/argocd/base/argocd-notifications-secret.yaml
apiVersion: v1 kind: Secret metadata: name: argocd-notifications-secret stringData: slack-token: xoxb-xxxxxxxx
ConfigMapを作成する
以下のコマンドでTriggerとTemplateの設定をダウンロードします
curl -o manifests/argocd/base/argocd-notifications-cm.yaml https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/v1.1.1/catalog/install.yaml
argocd-notifications-cm.yamlを編集します
data: # 以下を追加 service.slack: | token: $slack-token # ~~ 省略 ~~~~
kustomization.yamlを編集する
manifests/argocd/base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: argocd resources: - https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/v1.1.1/manifests/install.yaml - ./namespace.yaml patchesStrategicMerge: - ./argocd-notifications-secret.yaml - ./argocd-notifications-cm.yaml
ディレクトリの確認
$ tree . └── manifests └── argocd ├── base │ ├── argocd-notifications-cm.yaml │ ├── argocd-notifications-secret.yaml │ ├── kustomization.yaml │ └── namespace.yaml └── overlays └── development ├── apps │ └── guestbook.yaml └── kustomization.yaml
argocd-notificationのインストールと一緒にkustomize buildする
$ kustomize build manifests/argocd/overlays/development/ | k apply -f -
Argo CDのApplicationにannotationをつける
今回slackのチャンネル名は general
を指定します
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd # 以下のannotatioinsを追加 annotations: notifications.argoproj.io/subscribe.on-sync-succeeded.slack: general spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: server: https://kubernetes.default.svc namespace: default
結果を反映する
$ k apply -f manifests/argocd/overlays/development/apps/guestbook.yaml
Slackに通知する
Syncボタンを押してみましょう
Slackから通知が来ると思います
ログを確認する
argocd-notifications-controller-xxx
の名前を探す
$ k -n argocd get pod NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 4h54m argocd-dex-server-68c7bf5fdd-qvqnx 1/1 Running 0 4h54m argocd-notifications-controller-7df59c88f8-sct8s 1/1 Running 0 43m $ k -n argocd logs -f argocd-notifications-controller-7df59c88f8-sct8s
controllerに登録したTemplateを確認する
もしslackに通知が来ない場合はTemplateが登録されていない可能性がある
$ k exec -it -n argocd argocd-notifications-controller-7df59c88f8-sct8s -- /app/argocd-notifications trigger get
最後に
今回使用したコードはここにまとめています