![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/fluxv2-notification.png)
この記事は 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のログ
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-info1.png)
KustomizationのApplyログ
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-info2.png)
依存してるKustomizationのReady待ちログ
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-info3.png)
HealthCheckのログ
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-info4.png)
これらに合わせてErrorのAlertがきます。
ErrorのAlert
ErrorのAlertではKustomize ControllerのReconciliation処理でのエラー全てを通知します。ApplyでのエラーやValidationでのエラー 、HealthCheckの失敗などが通知されます。
Validationのエラー
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-err1.png)
Applyのエラー
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-err2.png)
HealthCheckの失敗
![](https://storage.googleapis.com/gpn-techblog-media/1/2020/12/img-err3.png)
まとめ
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との連携ができるようなので、こちらの検証も進めてみたいと思います。
それでは!