Operator

Notifications

Slack notifications for sync events — other channels planned

Notifications

The operator's notify.Dispatcher posts to Slack when a sync succeeds or fails — that's the whole surface today.

Supported Channels

ChannelStatus
Slack✅ Implemented — one HTTP POST per event
onHealthDegraded flag📋 Declared in the CRD; the dispatcher never reads it
Teams / Email / Discord / generic webhook📋 Planned — no channel plumbing exists
Message templates📋 Planned

Configuration

spec:
  notifications:
    slack:
      webhookURL: https://hooks.slack.com/services/T000/B000/XXX
    onSyncSuccess: true
    onSyncFailure: true
FieldBehavior
slack.webhookURLSlack incoming-webhook URL — required for any notification
onSyncSuccess✅ Sync succeeded for <app> (revision: <sha>)
onSyncFailure❌ Sync failed for <app>: <err>
onHealthDegraded📋 declared, unwired

Creating a Slack Webhook

  1. api.slack.com/apps → Create New App → From scratch
  2. Enable Incoming Webhooks → Add New Webhook to Workspace
  3. Pick the channel (e.g. #deployments), copy the URL into the App spec

Actual message payloads

The dispatcher sends a simple {"text": "…"} body:

{"text": "✅ Sync succeeded for my-app (revision: a1b2c3d4e5f6)"}
{"text": "❌ Sync failed for my-app: apply failed: …"}

No retries, no dedup, no timeout tuning. Dispatch fires one POST per sync event inline in the reconcile — a Slack outage loses the notification (the failure is only logged). A slow Slack endpoint adds latency to that reconcile.

When notifications fire

Reconcile → apply succeeded? ──┬─ yes + onSyncSuccess → POST
                               └─ no  + onSyncFailure → POST

Health transitions and Held/Skipped operation phases send nothing.

Security

  • Webhook URL lives in the CR spec — anyone with deployment:read on the org's management namespace can see it. secretRef-based storage is a planned enhancement
  • No sensitive data — messages carry the app name, revision, and error text only

Planned

  • Additional channels (Teams, Email, Discord, generic webhook)
  • onHealthDegraded notifications
  • Message templates per channel
  • Retry/dedup/timeout controls

On this page