この記事は 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
では 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との連携ができるようなので、こちらの検証も進めてみたいと思います。
それでは!