mirror of https://github.com/fluxcd/flux2.git
Add notifications guide
parent
c0b18f85aa
commit
229d1d8c6e
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
@ -0,0 +1,101 @@
|
||||
# Setup Notifications
|
||||
|
||||
When operating a cluster, different teams may wish to receive notifications about
|
||||
the status of their GitOps pipelines.
|
||||
For example, the on-call team would receive alerts about reconciliation
|
||||
failures in the cluster, while the dev team may wish to be alerted when a new version
|
||||
of an app was deployed and if the deployment is healthy.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* [Get started guide](../get-started/index.md)
|
||||
|
||||
The GitOps toolkit controllers emit Kubernetes events whenever a resource status changes.
|
||||
You can use the [notification-controller](../components/notification/controller.md)
|
||||
to forward these events to Slack, Microsoft Teams, Discord or Rocket chart.
|
||||
The notification controller is part of the default toolkit installation.
|
||||
|
||||
## Define a provider
|
||||
|
||||
First create a secret with your Slack incoming webhook:
|
||||
|
||||
```sh
|
||||
kubectl -n gitops-system create secret generic slack-url \
|
||||
--from-literal=address=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
|
||||
```
|
||||
|
||||
Note that the secret must contain an `address` field,
|
||||
it can be a Slack, Microsoft Teams, Discord or Rocket webhook URL.
|
||||
|
||||
Create a notification provider for Slack by referencing the above secret:
|
||||
|
||||
```yaml
|
||||
apiVersion: notification.fluxcd.io/v1alpha1
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: slack
|
||||
namespace: gitops-system
|
||||
spec:
|
||||
type: slack
|
||||
channel: general
|
||||
secretRef:
|
||||
name: slack-url
|
||||
```
|
||||
|
||||
The provider type can be `slack`, `msteams`, `discord`, `rocket` or `webhook`.
|
||||
|
||||
When type `webhook` is specified, the notification controller will post the incoming
|
||||
[event](../components/notification/event.md) in JSON format to the webhook address.
|
||||
This way you can create custom handlers that can store the events in
|
||||
Elasticsearch, CloudWatch, Stackdriver, etc.
|
||||
|
||||
## Define an alert
|
||||
|
||||
Create an alert definition for the webapp kustomizations:
|
||||
|
||||
```yaml
|
||||
apiVersion: notification.fluxcd.io/v1alpha1
|
||||
kind: Alert
|
||||
metadata:
|
||||
name: on-call-webapp
|
||||
namespace: gitops-system
|
||||
spec:
|
||||
providerRef:
|
||||
name: slack
|
||||
eventSeverity: info
|
||||
eventSources:
|
||||
- kind: Kustomization
|
||||
name: webapp-backend
|
||||
- kind: Kustomization
|
||||
name: webapp-frontend
|
||||
```
|
||||
|
||||
Apply the above files or commit them to the `fleet-infra` repository.
|
||||
|
||||
To verify that the alert has been acknowledge by the notification controller do:
|
||||
|
||||
```console
|
||||
$ kubectl -n gitops-system get alerts
|
||||
|
||||
NAME READY STATUS AGE
|
||||
on-call-webapp True Initialized 1m
|
||||
```
|
||||
|
||||
Multiple alerts can be used to send notifications to different channels or Slack organizations.
|
||||
|
||||
The event severity can be set to `info` or `error`.
|
||||
When the severity is set to `error`, the kustomize controller will alert on any error
|
||||
encountered during the reconciliation process.
|
||||
This includes kustomize build and validation errors,
|
||||
apply errors and health check failures.
|
||||
|
||||
![error alert](../diagrams/slack-error-alert.png)
|
||||
|
||||
When the verbosity is set to `info`, the controller will alert if:
|
||||
|
||||
* a Kubernetes object was created, updated or deleted
|
||||
* heath checks are passing
|
||||
* a dependency is delaying the execution
|
||||
* an error occurs
|
||||
|
||||
![info alert](../diagrams/slack-info-alert.png)
|
Loading…
Reference in New Issue