Cette page contient des informations et des exemples de connexion à une instance Cloud SQL à partir d'un service s'exécutant dans Cloud Run.
Pour obtenir des instructions détaillées sur l'exécution d'un exemple d'application Web Cloud Run connectée à Cloud SQL, consultezDémarrage rapide pour la connexion depuis Cloud Run.
Cloud SQL est un service de base de données entièrement géré qui vous aide à configurer, maintenir, gérer et administrer vos bases de données relationnelles dans le cloud.
Cloud Run est une plate-forme de calcul gérée qui vous permet d'exécuter des conteneurs directement sur l'infrastructure Google Cloud.
Configurer une instance Cloud SQL
- Activez l'API Cloud SQL Admin dans le projet Google Cloud à partir duquel vous vous connectez, si ce n'est pas déjà fait :
- Créez une instance Cloud SQL pour SQL Server. Nous vous recommandons de choisir un emplacement d'instance Cloud SQL qui soit dans la même région que votre service Cloud Run, afin d'améliorer la latence, d'éviter certains coûts de mise en réseau et de réduire les risques de défaillance interrégionale.
Par défaut, Cloud SQL attribue une adresse IP publique à une nouvelle instance. Vous avez également la possibilité d'attribuer une adresse IP privée. Pour en savoir plus sur les options de connectivité disponibles pour ces deux types d'adresses IP, consultez la page Présentation du processus de connexion.
Configurer Cloud Run
La procédure à suivre pour configurer Cloud Run dépend du type d'adresse IP que vous avez attribué à votre instance Cloud SQL. Si vous acheminez tout le trafic de sortie via la sortie VPC directe ou un connecteur d'accès au VPC sans serveur, utilisez une adresse IP privée. Comparez les deux méthodes de sortie réseau.Adresse IP publique (par défaut)
Cloud Run permet de se connecter à Cloud SQL pour SQL Server via une adresse IP publique à l'aide des connecteurs Go, Java et Python.
- Assurez-vous que l'instance dispose d'une adresse IP publique. Vous pouvez le vérifier sur la page Présentation de votre instance dans Google Cloud Console. Si vous devez en ajouter une, consultez la page Configurer une adresse IP publique pour obtenir des instructions.
- Obtenez le INSTANCE_CONNECTION_NAME pour votre instance. Vous trouverez cette valeur sur la page Présentation de votre instance dans la console Google Cloud ou en exécutant la commande
gcloud sql instances describe
suivante: Remplacez INSTANCE_NAME par le nom de votre instance Cloud SQL.gcloud sql instances describe INSTANCE_NAME
- Obtenez l'CLOUD_RUN_SERVICE_ACCOUNT_NAME de votre service Cloud Run. Vous pouvez trouver cette valeur sur la page IAM du projet qui héberge le service Cloud Run dans la console Google Cloud ou en exécutant la commande
gcloud run services describe
suivante dans le projet qui héberge le service Cloud Run: Remplacez les variables suivantes :gcloud run services describe CLOUD_RUN_SERVICE_NAME --region CLOUD_RUN_SERVICE_REGION --format="value(spec.template.spec.serviceAccountName)"
- CLOUD_RUN_SERVICE_NAME: nom de votre service Cloud Run
- CLOUD_RUN_SERVICE_REGION: région de votre service Cloud Run
- Configurez le compte de service pour votre service Cloud Run. Assurez-vous que le compte de service dispose des rôles et autorisations Cloud SQL appropriés pour se connecter à Cloud SQL.
Cloud SQL Client
(rôle à privilégier)Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
- Si vous ajoutez une connexion Cloud SQL à un nouveau service, vous devez le conteneuriser et l'importer dans Container Registry ou Artifact Registry. Si vous ne disposez pas encore d'une connexion, suivez ces instructions pour en créer et en déployer une.
- Le compte de service de votre service doit disposer de l'un des rôles IAM suivants :
Comme pour toute modification de configuration, la définition d'une nouvelle configuration pour la connexion Cloud SQL entraîne la création d'une révision Cloud Run. Les révisions ultérieures hériteront automatiquement de cette connexion Cloud SQL, à moins que vous ne la mettiez explicitement à jour.
Console
-
Commencez à configurer le service. Pour ajouter des connexions Cloud SQL à un service existant, procédez comme suit:
- Dans la liste Services, cliquez sur le nom du service souhaité.
- Sous Afficher dans Cloud Functions, cliquez sur le nom du service.
- Cliquez sur Modifier et redéployer.
- Activez la connexion à une instance Cloud SQL
- Cliquez sur Conteneur, variables et secrets, connexions, sécurité.
- Cliquez sur l'onglet Conteneur.
- Faites défiler la page jusqu'à Connexions Cloud SQL.
- Cliquez sur Ajouter une connexion.
- Cliquez sur le bouton Activer Cloud SQL Admin si vous n'avez pas encore activé l'API Cloud SQL Admin.
- Si vous ajoutez une connexion à une instance Cloud SQL dans votre projet, sélectionnez l'instance Cloud SQL souhaitée dans le menu.
- Si vous utilisez une instance Cloud SQL issue d'un autre projet, sélectionnez custom connection string (chaîne de connexion personnalisée) dans le menu, puis saisissez le nom de connexion complet de l'instance au format PROJECT-ID:REGION:INSTANCE-ID.
- Pour supprimer une connexion, maintenez le curseur à droite de la connexion pour afficher l'icône Supprimer, puis cliquez dessus.
-
Cliquez sur Créer ou Déployer.
Ligne de commande
Avant d'utiliser l'une des commandes suivantes, effectuez les remplacements suivants:
- IMAGE par l'image que vous déployez.
- SERVICE_NAME par le nom de votre service Cloud Run
-
INSTANCE_CONNECTION_NAME par le nom de connexion de l'instance Cloud SQL ou par une liste de noms de connexion séparés par une virgule
Si vous déployez un nouveau conteneur, exécutez la commande suivante:
Si vous mettez à jour un service existant, exécutez la commande suivante:gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraform
Le code suivant crée un conteneur Cloud Run de base avec une instance Cloud SQL connectée.
-
Appliquez les modifications en saisissant
terraform apply
. - Vérifiez les modifications en consultant le service Cloud Run, en cliquant sur l'onglet Révisions, puis sur l'onglet Connexions.
Adresse IP privée
Si le compte de service d'autorisation appartient à un projet différent de celui contenant l'instance Cloud SQL, procédez comme suit :
- Dans les deux projets, activez l'API Cloud SQL Admin.
- Pour le compte de service du projet contenant l'instance Cloud SQL, ajoutez les autorisations IAM.
- Assurez-vous que l'instance Cloud SQL créée précédemment possède une adresse IP privée. Pour ajouter une adresse IP interne, consultez la page Configurer une adresse IP privée.
- Configurez votre méthode de sortie pour vous connecter au même réseau VPC que votre instance Cloud SQL. Veuillez noter les conditions suivantes :
- La sortie VPC directe et l'accès au VPC sans serveur acceptent la communication avec les réseaux VPC connectés à l'aide de Cloud VPN et de l'appairage de réseaux VPC.
- La sortie VPC directe et l'accès au VPC sans serveur ne sont pas compatibles avec les anciens réseaux.
- À moins que vous n'utilisiez le VPC partagé, un connecteur doit se trouver dans le même projet et la même région que la ressource qui l'utilise, mais il peut envoyer du trafic à des ressources se trouvant dans d'autres régions.
- Connectez-vous avec l'adresse IP privée et le port
1433
de votre instance.
Se connecter à Cloud SQL
Une fois que vous avez configuré Cloud Run, vous pouvez vous connecter à votre instance Cloud SQL.
Adresse IP publique (par défaut)
Pour les chemins d'accès des adresses IP publiques, Cloud Run assure le chiffrement et se connecte à l'aide des connecteurs Cloud SQL.
Se connecter avec des connecteurs Cloud SQL
Les connecteurs Cloud SQL sont des bibliothèques propres aux langages de programmation qui fournissent le chiffrement et l'autorisation basée sur IAM lors de la connexion à une instance Cloud SQL.
Python
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Java
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Remarque :
- CLOUD_SQL_CONNECTION_NAME doit être représenté sous la forme <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>.
- Pour en savoir plus sur les exigences de version Socket Factory des sockets JDBC pour le fichier pom.xml, cliquez ici.
Go
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Utiliser Secret Manager
Nous vous recommandons d'utiliser Secret Manager pour stocker les informations sensibles telles que les identifiants SQL. Vous pouvez transmettre des secrets en tant que variables d'environnement ou les installer en tant que volume avec Cloud Run.
Après avoir créé un secret dans Secret Manager, mettez à jour un service existant à l'aide de la commande suivante :
Ligne de commande
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraform
La commande suivante crée des ressources de type secret pour conserver en toute sécurité les valeurs d'utilisateur, de mot de passe et de nom de la base de données à l'aide de google_secret_manager_secret
et google_secret_manager_secret_version
. Notez que vous devez mettre à jour le compte de service Compute du projet pour avoir accès à chaque secret.
Mettez à jour la ressource Cloud Run principale pour inclure les nouveaux secrets.
Appliquez les modifications en saisissant terraform apply
.
L'exemple de commande utilise la version du secret latest. Google recommande toutefois d'épingler le secret à une version spécifique, SECRET_NAME:v1.
Adresse IP privée
Pour les chemins d'accès des adresses IP privées, votre application se connecte directement à votre instance via un réseau VPC. Cette méthode utilise TCP pour se connecter directement à l'instance Cloud SQL sans utiliser le proxy d'authentification Cloud SQL.
Se connecter avec TCP
Connectez-vous en utilisant l'adresse IP privée de votre instance Cloud SQL en tant qu'hôte et le port 1433
.
Python
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Java
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Remarque :
- CLOUD_SQL_CONNECTION_NAME doit être représenté sous la forme <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>.
- L'utilisation de l'argument ipTypes=PRIVATE force la connexion de SocketFactory à l'adresse IP privée associée à une instance.
- Pour en savoir plus sur les exigences de version Socket Factory des sockets JDBC pour le fichier pom.xml, cliquez ici.
Node.js
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Go
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Ruby
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
PHP
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Bonnes pratiques et autres informations
Vous pouvez utiliser le proxy d'authentification Cloud SQL lorsque vous testez votre application en local. Pour obtenir des instructions détaillées, consultez le guide de démarrage rapide pour l'utilisation du proxy d'authentification Cloud SQL.
Vous pouvez également effectuer des tests à l'aide du proxy Cloud SQL via un conteneur Docker.
Pools de connexions
Les connexions aux bases de données sous-jacentes peuvent être supprimées, soit par le serveur de base de données lui-même, soit par l'infrastructure de la plate-forme. Nous vous recommandons d'utiliser une bibliothèque cliente compatible avec les pools de connexions qui restaurent automatiquement les connexions client interrompues. Pour obtenir des exemples plus détaillés sur l'utilisation des pools de connexions, consultez la page Gérer les connexions à la base de données.Limites de connexion
Les éditions MySQL et PostgreSQL de Cloud SQL imposent une limite maximale de connexions simultanées, laquelle peut varier en fonction du moteur de base de données choisi (consultez la page Quotas et limites de Cloud SQL).Les instances de conteneur Cloud Run sont limitées à 100 connexions à une base de données Cloud SQL. Chaque instance d'une tâche ou d'un service Cloud Run peut avoir 100 connexions à la base de données, et le nombre total de connexions par déploiement peut augmenter à mesure que ce service ou cette tâche évolue.
Toutefois, vous avez la possibilité de limiter le nombre maximal de connexions par instance en utilisant un pool de connexions. Pour obtenir des exemples plus détaillés sur les techniques de limitation du nombre de connexions, consultez la page Gérer les connexions à la base de données.
Limites de quota d'API
Cloud Run fournit un mécanisme permettant de se connecter à l'aide du proxy d'authentification Cloud SQL, qui utilise l'API Cloud SQL Admin. Les limites de quota d'API s'appliquent au proxy d'authentification Cloud SQL. Le quota de l'API Cloud SQL Admin est utilisé à hauteur d'environ le double du nombre d'instances Cloud SQL configurées par le nombre d'instances Cloud Run d'un service particulier déployé à un moment donné. Vous pouvez plafonner ou augmenter le nombre d'instances Cloud Run pour modifier le quota d'API que vous prévoyez d'utiliser.Étapes suivantes
- Obtenez plus d'informations sur Cloud Run.
- Découvrez-en davantage sur la création et le déploiement des images de conteneurs.