これまでローカルからCloud SQLに繋ぐ時、GCEにつくったbastion(踏み台)インスタンスを立てて、次のようにそこ経由でsshでポートフォーワードして使っていた
$ gcloud compute ssh my-gcp-account@my-app-bastion --ssh-flag "-N -L 5432:xx.xx.xx.xx:5432"
今回コストの見直しで、踏み台インスタンスを立ち上げっぱなしも料金が少なからずかかるので踏み台なしで接続する方法を探していたところ
Cloud SQL Auth Proxyいうのを知ったので試した
Cloud SQL Auth Proxy
Cloud SQL Auth Proxy は、ローカル環境で動作するプロキシサーバで、承認済みネットワークや SSL の構成を必要とせずに、安全にインスタンスへアクセスすることができる
Cloud SQL Auth Proxy を使用するには、次の要件を満たす必要がある
- Cloud SQL API が有効になっている
- Cloud SQL Auth Proxy に Google Cloud 認証情報を指定する
- Cloud SQL Auth Proxy に有効なデータベース ユーザー アカウントとパスワードを指定する
- インスタンスでパブリック IPv4 アドレスが指定されているか、プライベート IP を使用するように構成されている
導入はドキュメントだとローカルマシンのOSに合わせてwgetとかcurlつかってダウンロード&インストールと書いてあるが、以下のコマンドでインストールした
$ gcloud components install cloud_sql_proxy
そして、下のコマンドでサーバーを立ち上げる
$ cloud_sql_proxy -instances="my-project:asia-northeast1:backend-db-postgres=tcp:5432"
これで踏み台不要でCloud SQLに繋ぐことができた