GAEにCloudSQL管理用サービスをつくる
はじめに
GAE(GoogleAppEngine)+GCS(GoogleCloudSQL)の環境でWebサービスを構築しています。
これまでGCSにアクセスする際、Cloud SQL Proxyを使っていましたが、今後アクセスするメンバーが増えたとき、GCPとDBのアカウントをそれぞれ管理する必要があり面倒です。
そこで、DBアカウントの管理のみにできるよう、GAE上にCloudSQLの管理専用サービスを作ることにしました。
DB管理ツールとしてadminerを利用します。
環境情報はこちら
・リポジトリ:GitHub
・デプロイ環境:CloudBuild
・DB:MySQL5.7(あんまり関係ない)
・フレームワーク:Laravel6.0/php7.3(あんまり関係ない)
やること
- adminer用のリポジトリ作成
- デプロイ
1. adminer用のリポジトリ作成
CloudBuildでデプロイしている都合上リポジトリが必要なので、リポジトリを作成してadminerのファイルを配置します。
adminer公式
わざわざ専用リポジトリを作りたくない場合は、既存のリポジトリに親を持たない空ブランチ(orphanブランチ)を作り、そこに配置する形でもOKです。
参考
今回は秘密情報もないので、app.yamlも一緒に配置します。
※秘密情報がある場合はSecretManagerを使いましょう
runtime: php74
instance_class: F1
service: adminer
handlers:
- url: /.*
script: auto
secure: always
redirect_http_response_code: 301
automatic_scaling:
target_cpu_utilization: 0.95
max_instances: 1
min_instances: 0
max_concurrent_requests: 8
target_throughput_utilization: 0.95
max_idle_instances: 0
min_idle_instances: 0
min_pending_latency: 3000ms
max_pending_latency: 5000ms
2. デプロイ
CloudBuildでadminer用のトリガーを作成します。
1.で作成したリポジトリを指定して、インラインYAMLで以下を記載するだけでOKです。
steps:
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
args:
- '-c'
- gcloud config set app/cloud_build_timeout 1200 && gcloud app deploy
entrypoint: bash
timeout: 1200s
※CloudBuildの設定についてはこちらの記事をどうぞ。
デプロイ完了後、adminerのサービスができているはずです。
リンクをクリックしてadminerの画面が表示されれば完了です。
サーバ欄には :/cloudsql/(CloudSQLのインスタンス接続名)
を指定しましょう。
ここに書いてあります。
おわり
Discussion