General Configuration¶
kpulse is driven by exactly two objects in the kpulse namespace:
ConfigMap/kpulse-config— all tuning knobsSecret/kpulse-secrets— channel credentials
After editing either one, apply:
ConfigMap shape¶
cluster:
name: prod-eks-1 # REQUIRED, shown in every alert title
channels:
# see Channels section; each channel is opt-in
namespaces:
include: ["*"] # alert on all namespaces by default
exclude: [kube-system, kube-public, kpulse]
monitors:
# 12 monitor blocks, each with enabled + per-monitor knobs
dedupe:
window: 30m # suppress the same alert for this window
digest:
enabled: true
interval: 10m
severities: [info, warning] # critical bypasses the digest
routing: [] # optional, see App Configuration
The first install ships with the full file as comments — uncomment what you need.
Required minimum¶
The only required field is cluster.name. Without channels, kpulse runs but silently drops alerts (you'll see a warning in the logs).
Plus the matching secret:
kubectl -n kpulse edit secret kpulse-secrets
# under stringData add:
# SLACK_WEBHOOK_URL: https://hooks.slack.com/services/T0/B0/xxx
Namespace filtering¶
include: ["*"](default) means watch every namespaceinclude: [prod, staging]restricts to just thoseexclude: [foo]removes a namespace from whateverincludematches
Cluster-scoped resources (Nodes, ClusterRoles) ignore this filter.
Dedupe¶
Every alert is keyed by (monitor, namespace, kind, name, reason). Within dedupe.window, the same key fires once and the rest are suppressed. The default 30m is a good fit for most teams: loud enough that you know something is wrong, quiet enough that one CrashLoopBackOff doesn't generate 200 messages.
State is persisted to ConfigMap/kpulse-state every 60 seconds and restored on Pod restart, so a kpulse restart does NOT re-fire every existing condition.
Digests¶
Low-severity alerts (info, warning by default) are batched into a single "digest" message every dedupe.digest.interval. Critical alerts bypass the digest and fire immediately.
Turn off if you prefer one alert per event: enabled: false. Or raise to 1h to be even quieter.
Reloading config¶
There is no live reload. After editing the ConfigMap or Secret:
Next¶
- App Configuration — routing rules and alert semantics
- Channels — wire up Slack, email, etc.
- Monitors — tune individual monitors