daab on kubernetes
はじめに
Raspberry Pi 4 Model B (4GiB) に k3s を導入して複数の試作ボットを single node 上でコンパクトに稼働させられないかな?と考えていて,今回はまずベースとなるマニフェストを Docker Desktop for Mac の kubernetes 上で作成してみます.
要件
構成
daab は hubot ベースなので Brain が Redis を使用します.daab と Redis にそれぞれ Pod を用意してやります.とてもシンプルな構成です.
redis.yml
Redis コンテナは公式の説明に従って --appendonly yes
を指定して起動します.Persitent Volume はとりあえず hostPath でデフォルトの場所 ($HOME/.docker/Volumes
) に作らせておきます*3.これで Pod を更新しても情報が残ります.
後は他の Pod からアクセスするための Service を定義したら完了です.
daab.yml
daab の方は REDIS_URL
を指定し,HUBOT_DIRECT_TOKEN
を Secret から受け取るようにします.また Pod 更新の際に同じトークンを持ったボットが (一時的にでも) 複数稼働するような状況を避けるために .spec.strategy.type = Recreate
にします.
最後に Webhook 用に Ingress を追加*4したら完了です.
起動
あらかじめ ingress-nginx Installation Guide に従って ingress-nginx を導入しておきます*5.
cd daab-ping docker build -t daab-ping:v0.1.3 . daab login #=> アクセストークンを取得する (.env) cd - kubectl create namespace krdlab kubectl create secret generic daab-secrets -n krdlab --from-env-file daab-ping/.env kubectl apply -f redis.yml kubectl apply -f daab.yml kubectl get pods -n krdlab #=> Running を確認
どちらも Running になったらボットが反応してくれるようになります.
おわりに
今回は 1 つのボットを稼働させるために必要なマニフェストを作成しました.この後は k3s 上で動作するように調整を入れて,実装固有の部分をパラメータ化していきます.