web-dev-qa-db-fra.com

Comment se connecter en toute sécurité à Cloud SQL depuis Cloud Run?

Comment puis-je me connecter à la base de données sur Cloud SQL sans avoir à ajouter mon fichier d'informations d'identification à l'intérieur du conteneur?

12
gabidavila

CONNEXION DE CLOUD RUN (entièrement géré) À CLOUD SQL À L'AIDE DE PRISES DE DOMAINE UNIX (Java)

À l'heure actuelle, Cloud Run (entièrement géré) ne prend pas en charge la connexion à l'instance Cloud SQL à l'aide de TCP. Votre code ne doit pas essayer d'accéder à l'instance à l'aide d'une adresse IP telle que 127.0.0.1 ou 172.17.0.1. lien

1 . Installer et initialiser le SDK Cloud

2. Mettre à jour les composants:

gcloud components update

3.Créez un nouveau projet

gcloud projects create run-to-sql
gcloud config set project run-to-sql
gcloud projects describe run-to-sql

4. activer la facturation

gcloud alpha billing projects link  run-to-sql --billing-account  XXXXXX-XXXXXX-XXXX

5.Définissez les métadonnées de calcul du projet:

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 Activez l'API Admin Cloud SQL:

 gcloud services enable sqladmin.googleapis.com

7.Créez une instance Cloud SQL avec un Ip public

#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 (entièrement géré) utilise un compte de service pour autoriser vos connexions à Cloud SQL. Ce compte de service doit disposer des autorisations IAM correctes pour réussir la connexion. Sauf configuration contraire, le compte de service par défaut est au format [email protected].

8.Assurez-vous que le compte de service de votre service possède l'un des rôles IAM suivants: Cloud SQL Client (préféré)

gcloud iam service-accounts list
gcloud projects add-iam-policy-binding run-to-sql --member serviceAccount:[email protected]. --role roles/cloudsql.client

9.Clonez le référentiel Java-docs

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.Inspectez le fichier qui gère la connexion à Cloud SQL

 cat src/main/Java/com/example/cloudsql/ConnectionPoolContextListener.Java

11. Conteneuriser l'application et la télécharger dans Container Registry

gcloud builds submit --tag gcr.io/run-to-sql/run-mysql

12.Déployez le service sur Cloud Run

gcloud run deploy run-mysql --image gcr.io/run-to-sql/run-mysql

13.Configurez le service à utiliser avec 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.Testez-le

 curl -H "Authorization: Bearer $(gcloud auth print-identity-token)"   https://run-mysql-xxxxxxxx-xx.x.run.app

SUCCÈS!

0
marian.vladoi