kube-slack is a monitoring service for Kubernetes. When a pod has failed, it will publish a message in Slack channel.
A Helm chart is available at clearbit/charts
- Create an incoming webhook:
- In the Slack interface, click on the gears button (Channel Settings) near the search box.
- Select "Add an app or integration"
- Search for "Incoming WebHooks"
- Click on "Add configuration"
- Select the channel you want the bot to post to and submit.
- You can customize the icon and name if you want.
- Take note of the "Webhook URL". This will be something like https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
- Load this ReplicationController into your Kubernetes. Make sure you set
SLACK_URL
to the Webhook URL.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kube-slack
namespace: kube-system
spec:
replicas: 1
revisionHistoryLimit: 3
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
name: kube-slack
labels:
app: kube-slack
spec:
containers:
- name: kube-slack
image: willwill/kube-slack:v3.1.1
env:
- name: SLACK_URL
value: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
resources:
requests:
memory: 30M
cpu: 5m
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
- key: CriticalAddonsOnly
operator: Exists
- To test, try creating a failing pod. The bot should announce in the channel after 15s with the status
ErrImagePull
. Example of failing image:
apiVersion: v1
kind: Pod
metadata:
name: kube-slack-test
spec:
containers:
- image: willwill/inexisting
name: kube-slack-test
Additionally, the following environment variables can be used:
TICK_RATE
: How often to update in milliseconds. (Default to 15000 or 15s)FLOOD_EXPIRE
: Repeat notification after this many milliseconds has passed after status returned to normal. (Default to 60000 or 60s)NOT_READY_MIN_TIME
: Time to wait after pod become not ready before notifying. (Default to 60000 or 60s)KUBE_USE_KUBECONFIG
: Read Kubernetes credentials from active context in ~/.kube/config (default off)KUBE_USE_CLUSTER
: Read Kubernetes credentials from pod (default on)KUBE_NAMESPACE_ONLY
: Monitor current namespace only instead of whole cluster (default false)