ローカルからCloud SQLに接続する方法 by Cloud SQL Auth Proxy

お久しぶりです。GMO NIKKOのharuです。

私が担当するサービスGood!Appsは、GCPを用いて本番環境をクラウド上に構築しております。当然データベースもCloud SQLを使用しているのですが、次のような用途でローカルからCloud SQLに接続したいことがあります。今回は、公式が提供しているCloud SQL Auth ProxyというCloud SQLコネクタを使用した方法をお伝えします。

主な用途

  • データ確認: 開発中にCloud SQL内のデータを確認したい場合。
  • データ修正: 何らかの理由でCloud SQL内のデータを直接修正する必要がある場合。
  • データベースマイグレーション: Cloud Runなどのコンテナ環境からCloud SQLにデータを移行したい場合。

注意点

  • 本番環境のデータベースに接続するため、操作は慎重に行ってください。
  • 不要な時は接続を閉じることを強く推奨します。

前提条件

接続を始める前に、次の条件を満たしていることを確認してください。

詳細な情報は公式docを参照:Cloud SQL Auth Proxy について  |  Cloud SQL for PostgreSQL  |  Google Cloud

Cloud SQL Auth Proxyの起動

ローカル環境の差分影響を最小限に抑えるため、DockerコンテナでCloud SQL Auth Proxyを起動します。(Dockerのインストール方法は割愛)

  1. Google Container RegistryからCloud SQL Auth Proxy Dockerイメージをインストール
  2. Cloud SQL Auth Proxyコンテナを起動
    • 複数のインスタンスに接続する場合
    • ※既に使用されているポート番号を指定するとエラーが発生するので、使用されていないポート番号を指定してください。

ローカルのGUIクライアントツールとの接続

  1. Cloud SQL Auth Proxy Dockerの起動
  2. GUIクライアントツールを起動し、次の値を入力して接続
    • Databese: 接続するDB名
    • Username: ユーザー名
    • Password: パスワード
    • Host: 127.0.0.1
    • Port: cloud-sql-proxyコンテナの外部port番号(起動時に指定したもの)
以下はSequel Proの例
 

ローカルのバックエンドサーバーとの接続

Cloud Runなどのコンテナ内に入れない環境に存在するバックエンドサーバーから、Cloud SQLをマイグレーションする方法はいくつか存在します。
 
  • バックエンドサーバーのDockerFile内にマイグレーション処理を記述して、CI/CD時に実行
  • Cloud Runジョブを用いてマイグレーション
  • ローカル開発環境のバックエンドサーバーから、Cloud SQL Auth Proxyを用いてマイグレーション

それぞれ一長一短ありますが、今回は本記事テーマのCloud SQL Auth Proxyを用いる方法について説明します。Ruby on Railsを例に説明しますが、他のフレームワークでも同様です。

  1. Cloud SQL Auth Proxy Dockerの起動
  2. config/database.ymlを修正
  3. アプリケーションルートディレクトリでマイグレーションを実行

Dockerコンテナ内にローカル開発環境のバックエンドサーバーが存在する場合

前提として、バックエンドサーバーにDockerネットワークが指定されている必要があります。

  1. –network {バックエンドサーバーが存在するDockerネットワーク名}オプションを追加して、Cloud SQL Auth Proxy Dockerを起動
  2. config/database.ymlを修正
  3. バックエンドサーバーのコンテナに入る
  4. アプリケーションルートディレクトリでマイグレーションを実行

さいごに

今回はCloud SQL Auth Proxyを使用したCloud SQLへの接続方法を紹介しました。みなさんの助けになれば幸いです。それではまたの機会に。