NBM2

natural born minority

GKEにGrowiを立てるまで

GKEにGrowiを立てるまで

概要

GKE上で、Growiを起動させる。

基本的には「Growi公式のdocker-compose構成を模倣」する。

https://github.com/weseek/growi-docker-compose/blob/master/docker-compose.yml

やること

用意

sudo apt-get update && sudo apt-get --only-upgrade install kubectl google-cloud-sdk google-cloud-sdk-app-engine-grpc google-cloud-sdk-pubsub-emulator google-cloud-sdk-app-engine-go google-cloud-sdk-cloud-build-local google-cloud-sdk-datastore-emulator google-cloud-sdk-app-engine-python google-cloud-sdk-cbt google-cloud-sdk-bigtable-emulator google-cloud-sdk-app-engine-python-extras google-cloud-sdk-datalab google-cloud-sdk-app-engine-java

GCP内にプロジェクト作成

gcloud init
gcloud config set compute/zone asia-northeast1-a

プロジェクト名は kfa-growi-on-gke とした。

Dockerイメージをアップロード

Growiのdocker-composeで「その場でビルドするファイルはGrowi本体のDockerfileだけ」である。

それをビルドし、GCP上にUploadする。

GCP_PROJECT=$(gcloud config get-value project)
echo ${GCP_PROJECT}

GCP_PROJECT=$(gcloud config get-value project)
git clone https://github.com/weseek/growi-docker-compose.git growi
cd growi

# Container Registryの格納先をタグにしてDockerイメージをビルドする
# タグの形式は、asia.gcr.io/[GCP_PROJECT_ID]/[IMAGE_NAME]:[TAG]
docker build -t asia.gcr.io/$GCP_PROJECT/growi-for-compose:3.0 .

# DockerイメージをContainer Registryにアップロード
# ※GCP APIに課金設定をしてない場合、途中で止められるので表示されるURLから設定する事。
gcloud docker -- push asia.gcr.io/$GCP_PROJECT/growi-for-compose:3.0

永続ディスク(PersitentVolume)を作成する

本家は、docker-composeで「volumes」作成しているところを、Persistent Volumeで代用する。

gcloud compute --project=$GCP_PROJECT disks create growi-disk \
  --zone=asia-northeast1-a \
  --type=pd-ssd \
  --size=10GB

が、結局使わなかった(いまは繋いでない)ので、消した。

GKEのクラスタを作成

gcloud container clusters create --num-nodes=1 --disk-size=32G kansai-free-alliance-wiki
# 削除したい場合は、以下
# gcloud container clusters delete kansai-free-alliance-wiki

作成できたら、コマンドを其のクラスタに、 gcloud container clusters get-credentials xxx つなぐ。(コンソールのUIから「接続」を押せばClopBordにコピーされる)

GKEにGrowi用のコンテナ3つ立てる

こちらのやりかた で、クラスタにコンテナを3つ建てます。

Growiのデータの復元する

こちらのやりかた で、以前 mongodump で取得した、データを復元します。

ただし、「パスワードがダメになる」ので管理者権限で発行する必要があります。

参照

入門・概要把握

kubectl

ネットワーク周り

yamlの書き方

DockerhubとContainer Repository周り

ストレージ(永続化)系を同扱うかばなし

DNS関連

dashbotd関連

エラー解析系

blog comments powered by Disqus