認証情報ファイルをコンテナ内に追加せずにCloud SQL上のデータベースに接続するにはどうすればよいですか?
現時点では、Cloud Run(フルマネージド)は、TCPを使用したCloud SQLインスタンスへの接続をサポートしていません。コードは、127.0.0.1や172.17.0.1などのIPアドレスを使用してインスタンスにアクセスしようとしないでください。 リンク
2.コンポーネントの更新:
gcloud components update
3.新しいプロジェクトを作成する
gcloud projects create run-to-sql
gcloud config set project run-to-sql
gcloud projects describe run-to-sql
4.課金を有効にする
gcloud alpha billing projects link run-to-sql --billing-account XXXXXX-XXXXXX-XXXX
5. compute project-infoメタデータを設定します。
gcloud compute project-info describe --project run-to-sql
gcloud compute project-info add-metadata --metadata google-compute-default-region=europe-west2,google-compute-default-zone=europe-west2-b
6. Cloud SQL Admin APIを有効にします。
gcloud services enable sqladmin.googleapis.com
7.パブリックIPを使用してCloud SQLインスタンスを作成する
#Create the sql instance in the same region as App Engine Application
gcloud --project=run-to-sql beta sql instances create database-external --region=europe-west2
#Set the password for the "root@%" MySQL user:
gcloud sql users set-password root --Host=% --instance database-external --password root
#Create a user
gcloud sql users create user_name --Host=% --instance=database-external --password=user_password
#Create a database
gcloud sql databases create user_database --instance=database-external
gcloud sql databases list --instance=database-external
gcloud sql instances list
Cloud Run(フルマネージド)は、サービスアカウントを使用してCloud SQLへの接続を承認します。このサービスアカウントには、正常に接続するための適切なIAM権限が必要です。特に設定されていない限り、デフォルトのサービスアカウントは[email protected]の形式です。
8.サービスのサービスアカウントに次のIAM役割のいずれかがあることを確認します。CloudSQL Client(推奨)
gcloud iam service-accounts list
gcloud projects add-iam-policy-binding run-to-sql --member serviceAccount:[email protected]. --role roles/cloudsql.client
9.Java-docs-repositoryを複製する
git clone https://github.com/GoogleCloudPlatform/Java-docs-samples.git
cd Java-docs-samples/cloud-sql/mysql/servlet/
ls
#Dockerfile pom.xml README.md src
10.Cloud SQLへの接続を処理するファイルを検査する
cat src/main/Java/com/example/cloudsql/ConnectionPoolContextListener.Java
11.アプリのコンテナ化とContainer Registryへのアップロード
gcloud builds submit --tag gcr.io/run-to-sql/run-mysql
12.サービスをCloud Runにデプロイする
gcloud run deploy run-mysql --image gcr.io/run-to-sql/run-mysql
13.Cloud Runで使用するサービスを構成する
gcloud run services update run-mysql --add-cloudsql-instances run-to-sql:europe-west2:database-external --set-env-vars CLOUD_SQL_CONNECTION_NAME=run-to-sql:europe-west2:database-external DB_USER=user_name,DB_PASS=user_password,DB_NAME=user_database
14.テストする
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://run-mysql-xxxxxxxx-xx.x.run.app
成功!