前提:Cloud SQL Auth Proxy

GCPコンソール

Cloud Run「Cloud SQL接続」を有効にする これは内部的にCloud SQL Auth Proxyをサイドカーで立ち上げる設定らしい。 https://blog.g-gen.co.jp/entry/from-cloudrun-to-cloud-sql-with-auth-proxy

マニフェスト

.spec.template.metadata.annotationsrun.googleapis.com/cloudsql-instancesを追加する

apiVersion: serving.knative.dev/v1
kind: Service
spec:
	template:
		metadata:
			annotations:
				run.googleapis.com/cloudsql-instances: '{project}:{region}:{instanceName}'

UnixSocket接続

AuthProxyとの接続はTCPではなくunixソケットで接続する。 コンテナの/cloudsql/{cloudsql接続名}でUnix Socketがマウントされているので、環境変数などで指定する

dbURI := fmt.Sprintf("host=%s user=%s password=%s database=%s",
    dbHost, dbUser, dbPwd, dbName)

※unix socket接続なのでPortを渡していない

IAM認証の場合はパスワードを渡さなければ自動でログインできるらしいが、パスワードが求められてしまいうまくいかなかった。。。 CloudSQLの認証方式