ハロ(haro)は、Slack用のBotです。 Slackに通知されたAlert Managerからのアラートメッセージを受け、スマート電源タップ(Meross)の電源を制御します。
これにより、ユニコーンガンダムのNT-Dを発動させ光らせること等ができます。
デモ動画はこちらを参照ください。
Qiitaの記事「Kubernetesで障害発生するとNT-Dが発動しユニコーンガンダムのサイコフレームが発光するシステムの開発 」にも詳細が記載していますので参照ください。
事前にSlackにてWebSocketのBotとして登録する必要があります。 また、Botとして登録した後は、Slackの対象のチャンネルへメンバ追加してください。
- 環境変数を設定
$ export SLACK_APP_TOKEN=<Slack Appのトークン (e.g., xapp-x-xxx)>
$ export SLACK_BOT_TOKEN=<Slack Botのトークン (e.g., xoxb-xxxxx)>
$ export ALERTMANAGER_ID=<Slackでの AlertManagerのBot ID (e.g., B03DZ3JPES2)>
$ export MEROSS_EMAIL=<Merossのユーザ登録しているメールアドレス>
$ export MEROSS_PASSWORD=<Merossのパスワード>
$ export MEROSS_DEVICE_TYPE=<Merossのデバイスタイプ (e.g., mss425f)>
$ export MEROSS_DEVICE_NAME=<Merossのデバイス名 (e.g., tap1)>
$ export MEROSS_DEVICE_CHANNEL=<Meross上のコンセント番号 (e.g., 3)>
- Pythonのパッケージをインストール
$ pip install -r requirements.txt
- haro.pyを実行
$ cd manifests
$ python ./haro.py
- ネームスペースを作成
$ kubectl create ns haro
- secret.yaml を作成
以下の内容でsecret.yaml
を作成します。
apiVersion: v1
kind: Secret
metadata:
name: haro
namespace: haro
type: Opaque
data:
SLACK_APP_TOKEN: <Slack Appのトークン (e.g., xapp-x-xxx)>
SLACK_BOT_TOKEN: <Slack Botのトークン (e.g., xoxb-xxxxx)>
ALERTMANAGER_ID: <Slackでの AlertManagerのBot ID (e.g., B03DZ3JPES2)>
MEROSS_EMAIL: <Merossのユーザ登録しているメールアドレス>
MEROSS_PASSWORD: <Merossのパスワード>
MEROSS_DEVICE_TYPE: <Merossのデバイスタイプ (e.g., mss425f)>
MEROSS_DEVICE_NAME: <Merossのデバイス名 (e.g., tap1)>
MEROSS_DEVICE_CHANNEL: <Meross上のコンセント番号 (e.g., 3)>
📝 各値はbase64でエンコードした値を設定してください。
(e.g., Base64へのエンコードの実行例)
$ echo -n "xapp-x-xxx" |base64
- secret.yamlのデプロイ
$ kubectl apply -f secret.yaml
- haroのデプロイ
$ kubectl apply -k manifests/
📝 本Pod内のコンテナイメージはarm64
のアーキテクチャです。
もし、別アーキテクチャのコンテナイメージが必要な方は、Makefileをアップデートしコンテナイメージを作成してください。