読者です 読者をやめる 読者になる 読者になる

Deisのpostgresをoff-clusterにする(postgresql on GCEを利用)

やること

mpon.hatenablog.com

前回はCloud SQLを使ったが、Cloud SQLはデフォルトネットワーク外にあるので、Cloud SQL Proxyをたてて通信するか、外部IPを許可するしかなかった。Deisの場合だと、proxyたてるパターンを使えず、外部IPを許可する方法にしたけど、これだとNodeのIPが変わったり増えたときに対応できない。 なので、素直にGCE上にpostgresqlをたてることにした。

Cloud Launcher

postgreSQLをinstallとかめんどくさいなーって思ってたら、Cloud Launcherなるものを発見した。ぽちぽちっとやるだけで、いい感じにインストールまでしてくれる。本当の本当の本番ならこれはよくないかもしれないけど、今回はこれを使うことにした。

こんな感じで選んで、

f:id:masato47744:20170422013707p:plain

できた。

f:id:masato47744:20170422013800p:plain

単なるVMインスタンスとして出来上がっているので、まぁあとから修正は好きなように加えられるだろう。

f:id:masato47744:20170422013848p:plain

sshするには

外部IPが振られているNode経由で、ログインできる。

$ gcloud compute ssh --ssh-flag="-A" <NODE_INSTANCE_NAME>
# gcloudコマンドでmponユーザーとしてGoogleの認証がうまいことやってくれてる
# さらに内部のインスタンスへはインスタンス名を入れるだけでつなげる。
# この辺がGCPのすごいところ。
mpon@gke-xxxxxxx-p-default-pool-d02cceda-15xb ~ $ ssh deis-postgres-vm
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
       ___ _ _                   _
      | _ |_) |_ _ _  __ _ _ __ (_)
      | _ \ |  _| ' \/ _` | '  \| |
      |___/_|\__|_|_|\__,_|_|_|_|_|

  *** Welcome to the Bitnami PostgreSQL 9.6.2-0 ***
  *** Service accessible using hostname 10.146.0.5 port 5432 ***
  *** Documentation:  https://docs.bitnami.com/google/infrastructure/postgresql/ ***
  ***                 https://docs.bitnami.com/google/ ***
  *** Bitnami Forums: https://community.bitnami.com/ ***
mpon@deis-postgres-vm:~$

あとは、configuring-postgresの内容でdeis君用のdatabaseとuserを作るだけ。

helm install

deis-postgres-vmの内部IPは、例によってコマンドでとれる。

  def sql_instance_address
    res = `gcloud compute instances describe deis-postgres-vm`
    YAML.load(res)["networkInterfaces"].first["networkIP"]
  end

これで持って、helm installすると・・・・

$ kd get pods
NAME                                     READY     STATUS    RESTARTS   AGE
deis-builder-1364651073-9kcjd            1/1       Running   0          28m
deis-controller-2711454920-5v8p5         1/1       Running   0          28m
deis-logger-176328999-qmdqv              1/1       Running   5          28m
deis-logger-fluentd-9frz3                1/1       Running   0          28m
deis-logger-fluentd-hkkcl                1/1       Running   0          28m
deis-logger-fluentd-xlrfz                1/1       Running   0          28m
deis-logger-redis-304849759-wqb0f        1/1       Running   0          28m
deis-monitor-grafana-432627134-1f8qr     1/1       Running   0          28m
deis-monitor-influxdb-2729788615-qlmc4   1/1       Running   0          28m
deis-monitor-telegraf-l8ttq              1/1       Running   2          28m
deis-monitor-telegraf-sscvx              1/1       Running   1          28m
deis-monitor-telegraf-svpxc              1/1       Running   1          28m
deis-nsqd-3597503299-rcjr8               1/1       Running   0          28m
deis-registry-169338602-2jkwm            1/1       Running   0          28m
deis-registry-proxy-6m6fx                1/1       Running   0          28m
deis-registry-proxy-mqwm8                1/1       Running   0          28m
deis-registry-proxy-vtn3v                1/1       Running   0          28m
deis-router-2126433040-9jrs7             1/1       Running   0          28m
deis-workflow-manager-2528409207-jt8fq   1/1       Running   0          28m

無事動いたでござる

まとめ

GCPのネットワークは、AWSVPC的な考えとは結構違うのでそこに慣れる必要がある。

追記:これで解決

mpon.hatenablog.com