Notifying Kubernetes events to Slack using Kubewatch
In this post i’ll show how to notify kubernetes events to our slack channel using bitnami-labs/kubewatch.
kubewatch repo can be accessed using this link.
We need to create slackbot.I created new bot named kubewatch-webischia.
Then i copied this token.
After that we need to install kubewatch. Kubewatch can be installed with helm or using yaml files. Im using yaml files in this example.
kubewatch-configmap.yaml
In handler scope we define our slack configuration such as bot token and resource scope we define which events we should notify on kubernetes.
apiVersion: v1
kind: ConfigMap
metadata:
name: kubewatch
data:
.kubewatch.yaml: |
namespace: "default"
handler:
slack:
token: xoxb-OUR-BOT-TOKEN
channel: kubernetes-events
resource:
deployment: true
replicationcontroller: false
replicaset: false
daemonset: false
services: true
pod: true
secret: true
configmap: false
kubewatch-service-account.yaml
Using rbac give permission to kubewatch for listing events.
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubewatch
rules:
- apiGroups: [""]
resources: ["pods", "replicationcontrollers"]
verbs: ["get", "watch", "list"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubewatch
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubewatch
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubewatch
subjects:
- kind: ServiceAccount
name: kubewatch
namespace: default
kubewatch.yaml
Thats our pod yaml. Defining image from bitnami/tuna.
We shouldnt forget serviceAccountName: kubewatch on spec scope.
apiVersion: v1
kind: Pod
metadata:
name: kubewatch
namespace: default
spec:
serviceAccountName: kubewatch
containers:
- image: tuna/kubewatch:v0.0.1
imagePullPolicy: Always
name: kubewatch
volumeMounts:
- name: config-volume
mountPath: /root
- image: gcr.io/skippbox/kubectl:v1.3.0
args:
- proxy
- "-p"
- "8080"
name: proxy
imagePullPolicy: Always
restartPolicy: Always
volumes:
- name: config-volume
configMap:
name: kubewatch
Testing our kubewatch. I created new service and kubewatch notify us on our slack channel.
Creating pod
Deleting pod


