Flux v2のNotificationについて簡単に調査してみた

AvatarPosted by

この記事は 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-url

Alertの設定

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 では infoerror を設定することができます。詳細は後ほど。

eventSources ではEventを指定のリソースのみにフィルタすることができます。上記のManifestでは flux-systemGitRepositoryKusotmization の全てのリソースのEventを通知するようになっています。

この2つのManifestを適用し、webappを変更してどのような通知が飛ぶか確認してみます。

Alertの種類

eventSeverity の場所でも記述しましたが、AlertにはSeverityとして infoerror があります。この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との連携ができるようなので、こちらの検証も進めてみたいと思います。

それでは!