kubernetes-event-exporterを使ってslackへEventを通知する
kubernetes-event-exporter
を使って slack
へ Event
を通知する
この記事は信州大学 kstm Advent Calendar 2019の21日目です。UTCだとまだ2019/12/21です。
はじめに
この前の kubecon 2019 NA
で発表のあった kubernetes-event-exporter を使用してkubernetesのEventをslackへ通知する方法を試してみます。
kubernetes Event
とは
EventとはkubernetesのClusterの中で実際に何がおこっているかの情報で、terminalからkubectl get event
で取得できます。
ただ、このEventの情報は1時間経過すると削除されてしまうので、後からkubernetes上で参照するのは難しかったりします。
kubernetes-event-exporterは発生したEventのフィルタリング、ルーティングを行なってくれるツールで、ElasticsearchやslackなどにEventの情報を送ってくれます。
install
まずセットアップに必要なfileを kubernetes-event-exporter/deploy から取得します。
00-roles.yaml
01-config.yaml
02-deployment.yaml
01-config.yaml
を編集することで、通知のフィルタリングや送信先を設定できます。
slackに通知を送るためには、以下のように01-config.yaml
を編集します。
設定にslackのtokenが必要になるので事前に発行しておきましょう。
また、通知を送る先のチャンネルも用意します。(ここではkube-alert
というチャンネルを指定しています)
apiVersion: v1
kind: ConfigMap
metadata:
name: event-exporter-cfg
namespace: monitoring
data:
config.yaml: |
route:
match:
- receiver: "slack"
receivers:
- name: "slack"
slack:
token: "xoxb-xxxxxxxxxxxxxxxxxxxxx"
channel: "kube-alert"
message: "{{ .Message}}"
fields:
namespace: "{{ .Namespace }}"
reason: "{{ .Reason }}"
object: "{{ .Namespace }}"
順番どうりにkubernetesに適用します。
$ kubectl apply -f 00-roles.yaml
$ kubectl apply -f 01-config.yaml
$ kubectl apply -f 02-deployment.yaml
確認
適当なリソースを作ってみます。
$ kubectl create deploy test --image=nginx
slackを見てみましょう。(dark themeを入れているので背景色とか違います)
ちゃんと通知されますね。
おわりに
予想以上にslack通知を簡単にセットアップすることができました。 今回は設定しませんでしたが、実環境で使うためには通知するEventのいい感じのフィルタリングが必須でしょうね。 ソースコードを読む限りslack通知の色を変える方法とかは無いように見えたり、まだ足りない部分は多いですね。リリースされて間も無いツールなのでこれから機能が追加されて行くと思います。