Eyes, JAPAN Blog > [GKE] Google Container EngineでMattermostを立てるまで

[GKE] Google Container EngineでMattermostを立てるまで

Yuki Ito

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

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-contextsgke_ で始まるものを見つけられると思いますので、それを 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-hostdb-portmm-usernamemm-passwordmm-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 の欄で確認できます。

これが出れば完成です!

Comments are closed.