DevCloudLab More courses at DevCloudLab.com →
FLUX CD · SECTION 7 · LECTURE 1

DevCloudLab

Section introduction: Flux CD notification automation

Section 7, Lecture 1, from the Flux CD course by DevCloudLab.


What you’ll learn

One controller, two directions

The notification controller is Flux’s event forwarder and notification dispatcher. Every other Flux controller (source, kustomize, helm, image) emits events as it works: a Git repository synced, a Kustomization failed to apply, a HelmRelease upgraded. Left alone, those events only ever reach the cluster’s own event log, which nobody is watching in real time. The notification controller’s job is to take that internal stream and turn it into something a human team, or another system, actually acts on.

What makes it worth a whole section rather than one lecture is that it does this in both directions. Most of what people mean by “Flux notifications” is the outbound half: pushing alerts out to a chat tool. But the same controller also listens: it accepts inbound webhooks and uses them to kick off reconciliation the moment something changes upstream, rather than on the next scheduled check. The lectures ahead cover both halves, and the table below is the map for the whole section.

Direction Resource(s) What it does Typical trigger
Outbound Provider + Alert Provider defines where to send a notification (a Slack webhook, Microsoft Teams, a generic endpoint) and how to authenticate to it. Alert defines which events qualify (by source kind, by severity) and points at a Provider to dispatch through. A Kustomization fails to reconcile; a HelmRelease finishes upgrading; a new image lands via image update automation
Inbound Receiver Exposes a webhook endpoint. A call to that endpoint triggers reconciliation of the specific GitRepository, HelmRepository or other sources it’s configured to watch, on demand, not on the source’s own polling schedule A git push to the monitored repository, or a new chart version published to a Helm repository
kind: Provider   # where a notification goes
kind: Alert      # which events qualify, and at what severity, sent through a Provider
kind: Receiver   # which incoming webhook triggers reconciliation, and of what

The outbound half is what turns a silent reconciliation failure into a Slack message your on-call engineer actually sees. The inbound half is what closes the gap between Flux’s pull-based model and a push-based one: without a Receiver, every change waits for the source’s next scheduled check; with one, a commit can trigger reconciliation right away.

Where it falls short

Chat notifications are a real-time signal, not a durable record: a message posted to Slack is easy to miss and isn’t a substitute for kubectl or the Flux CLI when you need to know a resource’s actual current state. Treat alerts as the trigger to go look, not as the source of truth themselves.

Getting the noise right

The controller is only useful if the signal isn’t drowned out. That means picking a deliberate eventSeverity per Alert rather than defaulting to everything, scoping each Alert to the sources a given audience actually cares about, and giving different teams (security, on-call, platform) their own Provider and Alert pairs instead of one channel that tries to serve everyone. The lectures ahead build each resource kind from this map, starting with the outbound side.

Further reading


DevCloudLab

Built by DevCloudLab
Hands-on cloud-native courses: Kubernetes, GitOps, CI/CD and the cloud.
Visit DevCloudLab.com →