開発
[GKE] Google Container EngineでMattermostを立てるまで
Yuki Ito
GKEことGoogle Container EngineでMattermostを立ててみたので、手順を紹介します。
Mattermostとは?
Slackライクなチャットツールです。
Slackを使っていた方なら違和感なく使えると思います。
メリットとしては、
- Slackからのメッセージ履歴のインポート
- メッセージ履歴 & 添付ファイルが無制限
- SlackとのAPI互換
てなところでしょうか。
コンテナクラスタを作成
では早速始めていきましょう。
まず、Google Cloud Platformのコンソールにアクセスし、Mattermost用のプロジェクトを作成します。
次に、Container Engineのページに行き、コンテナクラスタを新規作成します。
設定項目が現れます。すべてデフォルトでも良いですが、リージョンを日本に近そうな “asia-northeast*” とかにしておくと良いかも知れません。
お金が気になる場合はサイズを減らしておきましょう。
「作成」ボタンを押し、しばらく待つとデプロイが完了し、右側に「接続」ボタンが現れます。
クラスタへの接続
「接続」をクリックするとクラスタに接続するためのコマンドが表示されます。
見てのとおり、 gcloud コマンドと kubectl コマンドが必要です。
まず、 gcloud を下記を参照してインストールしてください。
クイックスタート | Cloud SDK | Google Cloud Platform
すると、 gcloud components install kubectl とすることで kubectl をインストールすることができるようになります。
それでは接続してみましょう。
今回はWeb UIは使わないため、「接続」ボタンをクリックしたところの上の gcloud container ... コマンドのみ実行してみてください。
kubeconfig entry generated for <cluster名>
等と出れば成功です。運が良ければ kubectl config current-context の結果も gke_〜 で始まるものになっているかも知れません。なっていない場合は、まず kubectl config get-contexts で gke_ で始まるものを見つけられると思いますので、それを kubectl config use-context gke_〜 のように入力して実行してください。
これで接続が完了しました。 kubectl clusterinfo 等でクラスタの情報が確認できます。
Mattermostを動かしてみる
ついにMattermostです。まずはDockerfileをcloneします。
$ git clone https://github.com/mattermost/mattermost-docker
$ cd mattermost-docker
以下、mattermost-docker/README.md at master · mattermost/mattermost-dockerにあるとおりです。
まず、postgresのコンテナを立てます。パスワード等適宜変えてください。
$ kubectl run postgres --image=postgres:9 \
--env="POSTGRES_PASSWORD=mmuser_password" \
--env="POSTGRES_DB=mattermost" \
--env="POSTGRES_USER=mmuser"
サービスを作ります。
$ kubectl expose deployment postgres \
--name=db \
--port 5432 \
--target-port 5432
次に、Mattermost自体のサービスを準備します。
まず、 mattermost.secret.yaml を先程postgresに設定したパスワード等に書き換えます。具体的には db-host 、 db-port 、 mm-username 、 mm-password 、 mm-dbname の5つですが、これらはすべてもとの値をbase64化したものを指定しなければならないことに注意してください。
例えば、文字列 db のbase64化したものは以下のコマンドで得られます。
$ echo -n db | base64
詳しくはSecrets | Kubernetesを参照ください。
$ cd contrib/kubernetes
$ editor mattermost.secret.yaml
できたらデプロイします。
$ kubectl create -f mattermost.secret.yaml
アプリケーションをデプロイします。
$ kubectl create -f mattermost.deployment.yaml
ここまでの進捗は、以下のように確認できます。
$ kubectl get po -l app=mattermost
NAME READY STATUS RESTARTS AGE
mattermost-app-1605216003-fvnz1 1/1 Running 0 44m
最後に、 mattermost.svc.yaml を少しGKE用に編集してから、サービスとしてアプリケーションをデプロイします。
$ sed -i 's/NodePort/LoadBalancer/' mattermost.svc.yaml
$ kubectl create -f mattermost.svc.yaml
これで動きました。
ブラウザでアクセスして確認してみましょう。アドレスは、 kubectl get svc としたときの、 EXTERNAL-IP の欄で確認できます。
これが出れば完成です!






2024/09/13
2024/05/17
2024/05/10
2024/01/05
2023/08/18
2023/07/14
2023/05/12