CtrlK
BlogDocsLog inGet started
Tessl Logo

nitinjain999/platform-skills

Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.

67

Quality

84%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

fluxcd-notifications.mdreferences/

FluxCD Notifications Reference

The notification-controller manages outgoing alerts (Provider + Alert) and incoming webhooks (Receiver). All resources share the namespace of their notification target.


Provider

Defines an external service that receives routed events.

apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: slack-platform
  namespace: flux-system
spec:
  type: slack
  channel: "#platform-alerts"
  secretRef:
    name: slack-webhook-url   # key: address (webhook URL)

Provider categories:

CategoryTypes
Messagingslack, discord, msteams, telegram, matrix, googlechat, lark, webex
Alerting / Monitoringalertmanager, grafana, sentry, pagerduty, opsgenie, datadog
Event Streaminggooglepubsub, azureeventhub, nats
Git commit statusgithub, gitlab, gitea, bitbucket, bitbucketserver, azuredevops
Generic webhookgeneric (plain JSON POST), generic-hmac (HMAC-signed POST)

Key spec fields:

FieldPurpose
typeProvider type (required)
addressWebhook URL (or inline in secretRef)
channelTarget channel (Slack, Discord, etc.)
usernameDisplay name for bot messages
secretRef.nameSecret containing address key
certSecretRef.nameCA bundle for self-signed HTTPS endpoints
suspendPause alert delivery

Alert

Routes Flux events to a Provider with filtering.

apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
  name: platform-errors
  namespace: flux-system
spec:
  providerRef:
    name: slack-platform
  eventSeverity: error          # info | error
  eventSources:
    - kind: GitRepository
      name: "*"                  # wildcard — all resources of this kind
    - kind: Kustomization
      name: apps
      namespace: flux-system
    - kind: HelmRelease
      matchLabels:
        team: platform
  exclusionList:
    - ".*is already up to date.*"
  eventMetadata:
    cluster: production
    env: prod

Severity levels:

ValueDelivers
infoAll events (reconciliation start, success, failure)
errorErrors only — recommended for paging channels

Filtering:

  • inclusionList — regex patterns; only matching events pass
  • exclusionList — regex patterns; exclusion takes precedence over inclusion
  • eventSources supports: specific name, "*" wildcard, cross-namespace refs, matchLabels selector

Valid source kinds: GitRepository, OCIRepository, HelmRepository, HelmChart, Bucket, Kustomization, HelmRelease, ImageRepository, ImagePolicy, ImageUpdateAutomation, FluxInstance, ResourceSet


Receiver

Accepts inbound webhooks and triggers immediate reconciliation by annotating resources with reconcile.fluxcd.io/requestedAt.

apiVersion: notification.toolkit.fluxcd.io/v1
kind: Receiver
metadata:
  name: github-push
  namespace: flux-system
spec:
  type: github
  events:
    - "push"
  secretRef:
    name: github-webhook-token   # key: token (HMAC secret)
  resources:
    - kind: GitRepository
      name: fleet-manifests
      namespace: flux-system

After creation, the unique webhook path appears in .status.webhookPath. The full endpoint is:

https://<notification-controller-address><.status.webhookPath>

Supported types: github, gitlab, gitea, bitbucket, azuredevops, generic, generic-hmac

CEL filtering via resourceFilter allows expression-based matching — e.g., only trigger when the pushed tag matches the resource name:

spec:
  resourceFilter: "resource.metadata.name == headers['X-GitHub-Event']"

Common patterns

Slack error alerting

# Secret: slack-webhook-url with key "address"
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: slack
  namespace: flux-system
spec:
  type: slack
  channel: "#gitops-alerts"
  secretRef:
    name: slack-webhook-url
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
  name: cluster-errors
  namespace: flux-system
spec:
  providerRef:
    name: slack
  eventSeverity: error
  eventSources:
    - kind: Kustomization
      name: "*"
    - kind: HelmRelease
      name: "*"

GitHub commit status on PRs

apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: github-status
  namespace: flux-system
spec:
  type: github
  address: https://github.com/my-org/fleet-manifests
  secretRef:
    name: github-token   # key: token (PAT with repo:status scope)
---
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
  name: staging-commit-status
  namespace: flux-system
spec:
  providerRef:
    name: github-status
  eventSeverity: info
  eventSources:
    - kind: Kustomization
      name: staging-apps
      namespace: flux-system

Datadog event forwarding

apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
  name: datadog
  namespace: flux-system
spec:
  type: datadog
  address: https://api.datadoghq.eu/api/v1/events
  secretRef:
    name: datadog-api-key   # key: token (DD API key)

Immediate Git sync on push (Receiver)

# GitHub sends a push webhook → Receiver annotates GitRepository → source-controller fetches immediately
apiVersion: notification.toolkit.fluxcd.io/v1
kind: Receiver
metadata:
  name: fleet-push
  namespace: flux-system
spec:
  type: github
  events:
    - "push"
  secretRef:
    name: github-webhook-secret
  resources:
    - kind: GitRepository
      name: fleet-manifests
      namespace: flux-system

Validation

# List providers, alerts, receivers
flux get alert-providers -n flux-system
flux get alerts -n flux-system
flux get receivers -n flux-system

# Check receiver webhook path
kubectl get receiver github-push -n flux-system -o jsonpath='{.status.webhookPath}'

# Check alert delivery
kubectl describe alert cluster-errors -n flux-system
kubectl logs -n flux-system deploy/notification-controller | grep -i "error\|alert\|provider"

BEFORE_AFTER.md

CHANGELOG.md

CODE_OF_CONDUCT.md

COMMANDS.md

CONTRIBUTING.md

EDITOR_INTEGRATIONS.md

GETTING_STARTED.md

HOW_IT_WORKS.md

install.sh

INSTALLATION.md

LAUNCH.md

PROMPTS.md

QUICKSTART.md

README.md

renovate.json

SECURITY.md

SKILL.md

tessl.json

tile.json