
この記事は GRIPHONE Advent Calendar 2020 3日目の記事です。
SREの徳田です。
今回はFlux v2のNotificationの設定をしてみて、Slackにどのような通知が飛んでくるのか、簡単に調べてみようと思います。
事前にGet Startedの手順を実行している体で進めます。
Notificationの設定
Providerの設定
NotificationのProviderを設定します。
Slackに通知する場合はSlack Appを作成してIncoming Webhookを作成し、これをSecretに保存します。
kubectl -n flux-system create secret generic slack-url \
--from-literal=address=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOKそしてこのSecretを参照するProviderを作成します。
apiVersion: notification.toolkit.fluxcd.io/v1beta1
kind: Provider
metadata:
  name: slack
  namespace: flux-system
spec:
  type: slack
  channel: general
  secretRef:
    name: slack-urlAlertの設定
AlertリソースでProviderへどのリソースのEventを通知するかを設定します。
apiVersion: notification.toolkit.fluxcd.io/v1beta1
kind: Alert
metadata:
  name: on-call-webapp
  namespace: flux-system
spec:
  providerRef:
    name: slack
  eventSeverity: info
  eventSources:
    - kind: GitRepository
      name: '*'
    - kind: Kustomization
      name: '*'eventSeverity では info か error を設定することができます。詳細は後ほど。
eventSources ではEventを指定のリソースのみにフィルタすることができます。上記のManifestでは flux-system の GitRepository と Kusotmization の全てのリソースのEventを通知するようになっています。
この2つのManifestを適用し、webappを変更してどのような通知が飛ぶか確認してみます。
Alertの種類
eventSeverity の場所でも記述しましたが、AlertにはSeverityとして info と error があります。この2つに分けてどのような通知が飛んでくるかを見てみます。
InfoのAlert
GitRepositoryのFetchのログ

KustomizationのApplyログ

依存してるKustomizationのReady待ちログ

HealthCheckのログ

これらに合わせてErrorのAlertがきます。
ErrorのAlert
ErrorのAlertではKustomize ControllerのReconciliation処理でのエラー全てを通知します。ApplyでのエラーやValidationでのエラー 、HealthCheckの失敗などが通知されます。
Validationのエラー

Applyのエラー

HealthCheckの失敗

まとめ
Flux v2でNotificationの設定をすると以下の通知を受け取ることができました。
- Info- GitRepositoryのFetchログ
- KustomizationのApplyログ
- 依存してるKustomizationのReady待ちログ
- HealthCheckのログ
 
- Error- Validationのエラー
- Applyのエラー
- HealthCheckの失敗
 
主にはKustomize Controllerの通知内容の確認になりました。Flux v2にはhelm-controllerも含まれているので、helm-controllerでどのような通知がでるのかも調査したいと思っています。また、ProviderでGitHubやGitLabでは通常のチャット通知とは違いCommit Statusとの連携ができるようなので、こちらの検証も進めてみたいと思います。
それでは!

