Kubernetes上に構築したjiraとmattermostを連携させて通知出来るようにする


目的

Jiraで課題等を作った時にmattermostへ通知が飛ぶようにする。

構成

利用したtool

jira-to-slackというtoolを使いました。
int128さんが作ってくださっている。ありがとうございます。

メモ

K8s上にdeployしたJIRAとmattermost標準のJiraとmattermostのintegration機能を使うと、うまく行かず(原因: https化してないから?深く切り分けられていない)、上記のjira-to-slackを使わせて頂いた。

構築手順

大枠は、jira-to-slackREADME.mdの通り。
構築手順の変更ポイントとしては、jira-to-slackもkubernetesに乗せるようにした。
今回作ったjira-to-slack用のmanifestをgithubに上げておきました。参考になれば幸いです。
https://github.com/iguchikoma/jira-to-slack-kubernetes

1. Mattermost上にincoming webhookを作る。

Ref. https://docs.mattermost.com/developer/webhooks-incoming.html

1-1. mattermost上にchannelを作る。

通知を受ける用のchannelとしてjiraという名前でchannelを作った。

1-2. incoming webhookを設定する

mattermostの左上メニューからintegrations > incoming webhookと進んで、以下のようにwebhookを設定してsaveする

するとwebhookが生成される

2. JIRAにwebhookを設定する。

右上の歯車 > システム > 左サイドバーのWebフック > Webフックの作成と進み、以下のようにWebhookを作成する。URLは[jira-to-slackのURL]?webhook=[mattermostのwebhookのurl]&dialect=mattermost&channel=jira&debug=1

3. jira-to-slackをkubernetesにdeployする

ServiceはNodePortで30003としています。適宜、自分の環境に合わせて書き換えてください。

bash
### jira-to-slackのkubernetes manifest一式をgithubから取ってくる。
vagrant@vagrant:~$ git clone https://github.com/iguchikoma/jira-to-slack-kubernetes.git
vagrant@vagrant:~$ cd jira-to-slack-kubernetes/

### deployする。
vagrant@vagrant:~/jira-to-slack-kubernetes$ kubectl apply -f jira-to-slack-ns.yaml
vagrant@vagrant:~/jira-to-slack-kubernetes$ kubectl apply -f jira-to-slack-deployment.yml
vagrant@vagrant:~/jira-to-slack-kubernetes$ kubectl apply -f jira-to-slack-svc.yaml

### jira-to-slackの動作確認 (NodePortは30003)
vagrant@vagrant:~/jira-to-slack-kubernetes$ kubectl get svc -n jira-to-slack jira-to-slack
NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
jira-to-slack   NodePort   10.100.82.84   <none>        3000:30003/TCP   75s

### curlでAPIの応答確認
vagrant@vagrant:~/jira-to-slack-kubernetes$ curl http://192.168.33.10:30003
missing query parameter. Request with ?webhook=https://hooks.slack.com/xxx

4. 動作確認

JIRAで適当に課題を作ってみて、mattermostに通知が飛ぶか確認する。mattermostへの通知はこんな感じで飛ぶ。

最後に

以上で作業終了です。参考になれば幸いです。