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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue