🐶

GAEにCloudSQL管理用サービスをつくる

2023/03/14に公開

はじめに

GAE(GoogleAppEngine)+GCS(GoogleCloudSQL)の環境でWebサービスを構築しています。

これまでGCSにアクセスする際、Cloud SQL Proxyを使っていましたが、今後アクセスするメンバーが増えたとき、GCPとDBのアカウントをそれぞれ管理する必要があり面倒です。

そこで、DBアカウントの管理のみにできるよう、GAE上にCloudSQLの管理専用サービスを作ることにしました。
DB管理ツールとしてadminerを利用します。
https://kinsta.com/jp/blog/adminer/

環境情報はこちら
・リポジトリ:GitHub
・デプロイ環境:CloudBuild
・DB:MySQL5.7(あんまり関係ない)
・フレームワーク:Laravel6.0/php7.3(あんまり関係ない)

やること

  1. adminer用のリポジトリ作成
  2. デプロイ

1. adminer用のリポジトリ作成

CloudBuildでデプロイしている都合上リポジトリが必要なので、リポジトリを作成してadminerのファイルを配置します。
adminer公式

わざわざ専用リポジトリを作りたくない場合は、既存のリポジトリに親を持たない空ブランチ(orphanブランチ)を作り、そこに配置する形でもOKです。
参考

今回は秘密情報もないので、app.yamlも一緒に配置します。
※秘密情報がある場合はSecretManagerを使いましょう

app.yaml(例)
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です。

cloudbuild.yaml(例)
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