Route By NamespaceΒΆ
You can route alerts based on the Kubernetes namespace they relate to. This is ideal for organizations where different teams "own" specific namespaces.
PrerequisitesΒΆ
At least one existing sink, such as Slack, Microsoft Teams, Discord, etc.
Setting Up RoutingΒΆ
Assume you have an existing sink:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
By default, the sink will receive notifications for all namespaces.
Let's create a 2nd copy of the sink and change the Slack channel:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
- slack_sink:
name: slack_system_sink
slack_channel: system-notifications
api_key: secret-key
Now we have two sinks, both receiving all notifications.
The final step is to restrict notifications for each sink by adding scopes:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
scope:
include:
- namespace: [app]
- slack_sink:
name: slack_system_sink
slack_channel: system-notifications
api_key: secret-key
scope:
include:
- namespace: [kube-system]
Alerts will be now routed according to Kubernetes namespace.
Routing for many namespacesΒΆ
Using the above method, you can create one sink for each namespace.
If you have a large number of namespaces, there is an alternative method you can consider: you can define a single sink and set the channel dynamically according to alert metadata. See instructions for Slack or MS Teams.
Fallback for alerts without a namespaceΒΆ
The above example assumes that all alerts have namespace
metadata. It is recommended that you setup a Fallback Sink to catch alerts that don't have a namespace.