Cette page explique comment utiliser Private Service Connect pour se connecter à une instance Cloud SQL.
Vous pouvez utiliser Private Service Connect pour vous connecter à une instance Cloud SQL principale ou à l'une de ses instances répliquées avec accès en lecture à partir de plusieurs réseaux de cloud privé virtuel (VPC) appartenant à différents groupes, équipes, projets ou organisations.
Avant de commencer
L'utilisation de Private Service Connect avec une instance Cloud SQL est disponible pour les versions de gcloud CLI
416.0.0 et ultérieures.
Rôles utilisateur
Le tableau suivant fournit des informations sur les rôles requis pour utiliser Private Service Connect avec une instance Cloud SQL :
Rôle | Description |
---|---|
compute.networkAdmin |
Accorde un contrôle total sur le réseau VPC qui lance une connexion à une instance Cloud SQL. Vous pouvez créer et gérer des adresses IP, des règles de pare-feu, des stratégies de connexion aux services et des points de terminaison Private Service Connect. Si vous utilisez Private Service Connect pour vous connecter à une instance Cloud SQL à partir de plusieurs réseaux VPC, chaque réseau a son propre administrateur. |
dns.admin |
Accorde un contrôle total sur les ressources Cloud DNS, y compris les zones et enregistrements DNS. |
cloudsql.admin |
Fournit un contrôle complet sur une instance Cloud SQL et contrôle l'instance tout au long de son cycle de vie. |
cloudsql.instanceUser |
Fournit un accès à l'instance Cloud SQL. Si vous vous connectez via le client proxy d'authentification Cloud SQL, vous devez disposer du rôle Client Cloud SQL. Si vous vous connectez directement, vous n'avez pas besoin de rôles ni d'autorisations IAM (Identity and Access Management). |
Créer un point de terminaison Private Service Connect
Les points de terminaison Private Service Connect sont des adresses IP internes d'un réseau VPC client, auxquelles les utilisateurs appartenant à ce réseau peuvent accéder directement. Les clients peuvent utiliser ces points de terminaison pour se connecter aux instances Cloud SQL.
Vous pouvez demander à Cloud SQL de créer automatiquement un point de terminaison Private Service Connect dans votre VPC ou de le créer manuellement.
Pour que Cloud SQL crée automatiquement le point de terminaison Private Service Connect, procédez comme suit:
- Créez une règle de connexion de service dans vos réseaux VPC. Avec cette règle, vous pouvez provisionner automatiquement des points de terminaison Private Service Connect.
- Créez une instance Cloud SQL avec Private Service Connect activé et configurez-la pour qu'elle crée automatiquement des points de terminaison Private Service Connect.
- Récupérez le point de terminaison de l'instance. Vous pouvez ainsi utiliser le point de terminaison pour vous connecter à l'instance.
Pour créer manuellement le point de terminaison Private Service Connect, procédez comme suit:
- Créez une instance Cloud SQL avec Private Service Connect activé.
- Obtenez l'URI du rattachement de service. Vous utilisez cet URI pour créer le point de terminaison Private Service Connect.
- Réservez une adresse IP interne pour le point de terminaison Private Service Connect et créez un point de terminaison avec cette adresse.
Créer le point de terminaison automatiquement
Les sections suivantes expliquent comment configurer votre instance pour permettre à Cloud SQL de créer automatiquement le point de terminaison Private Service Connect.
Créer une règle de connexion de service
Une règle de connexion de service vous permet d'autoriser une classe de service spécifiée à créer un point de terminaison Private Service Connect dans votre réseau VPC client. Vous pouvez utiliser la règle de connexion de service pour autoriser Cloud SQL à créer automatiquement des points de terminaison Private Service Connect.
Vous pouvez créer une règle de connexion de service à l'aide de la console Google Cloud, de gcloud CLI ou de l'API.
Console
Dans la console Google Cloud, accédez à la page Private Service Connect.
Cliquez sur l'onglet Règles de connexion.
Cliquez sur Créer une règle de connexion.
Saisissez un nom pour la règle de connexion.
Spécifiez la classe de service en procédant comme suit:
- Dans la case Classe de service source, sélectionnez Services Google.
- Dans le menu Classe de service, sélectionnez
google-cloud-sql
, car Cloud SQL est le service géré pour la stratégie de connexion.
Dans la section Champ d'application des points de terminaison cibles, sélectionnez un réseau et une région auxquels cette règle s'applique.
Dans la section Règle, sélectionnez un ou plusieurs sous-réseaux dans le menu Sous-réseaux. Les sous-réseaux permettent d'allouer des adresses IP aux points de terminaison.
Facultatif : spécifiez une limite de connexion pour la règle. Cette limite détermine le nombre de points de terminaison pouvant être créés à l'aide de cette règle de connexion. Si vous ne spécifiez pas de limite de connexion, il n'y a aucune limite.
Cliquez sur Créer une règle.
gcloud
Pour créer une règle de connexion de service, utilisez la commande service-connection-policies create
.
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description=DESCRIPTION \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL
Remplacez les éléments suivants :
POLICY_NAME
: nom de votre stratégie de connexion de service.NETWORK
: réseau auquel s'applique cette règle.PROJECT_ID
: ID du projet ou numéro du projet du réseau VPC. Pour les réseaux VPC partagés, vous devez déployer des règles de connexion de service dans le projet hôte, car ces règles ne sont pas compatibles avec les projets de service.REGION
: région à laquelle cette règle s'applique. La même règle doit exister pour chaque région dans laquelle vous souhaitez automatiser la connectivité du service.SERVICE_CLASS
: identifiant de ressource fourni par le producteur de la classe de service. Pour Cloud SQL, la classe de service estgoogle-cloud-sql
.SUBNETS
: un ou plusieurs sous-réseaux client standard utilisés pour allouer des adresses IP aux points de terminaison Private Service Connect. Ces adresses IP sont allouées automatiquement et renvoyées au pool de sous-réseaux à mesure que des instances de service géré sont créées et supprimées. Les sous-réseaux doivent se trouver dans la même région que la règle de connexion de service. Si plusieurs règles de connexion partagent la même région, vous pouvez réutiliser le même sous-réseau dans ces règles. Vous pouvez fournir plusieurs sous-réseaux dans une liste séparée par des virgules.LIMIT
: nombre maximal de points de terminaison que vous pouvez créer à l'aide de cette règle. Si vous ne spécifiez pas de limite, il n'y en a pas.DESCRIPTION
: description facultative de la règle de connexion de service.PRODUCER_INSTANCE_LOCATION
: utilisez cet indicateur facultatif pour spécifier si vous souhaitez autoriser une hiérarchie personnalisée des emplacements pour une instance Cloud SQL. Vous ne pouvez définir la valeur dePRODUCER_INSTANCE_LOCATION
que sur l'une des valeurs suivantes:custom-resource-hierarchy-levels
: l'instance doit se trouver dans l'un des projets, dossiers ou organisations que vous spécifiez comme valeur pour le paramètreallowed-google-producers-resource-hierarchy-level
.none
: l'instance se trouve dans le même projet que la règle de connexion de service.
RESOURCE_HIERARCHY_LEVEL
: liste des projets, des dossiers ou des organisations dans lesquels se trouve l'instance. Cette liste se présente sous la formeprojects/PROJECT_ID
,folders/FOLDER_ID
ouorganizations/ORGANIZATION_ID
.
Par exemple, la commande suivante crée une règle de connexion de service pour la classe de service google-cloud-sql
qui alloue des adresses IP provenant du sous-réseau managed-services
. Vous pouvez créer jusqu'à 10 points de terminaison Private Service Connect avec cette règle. Les points de terminaison doivent être créés dans des projets appartenant à la même organisation que l'instance de service géré. L'instance Cloud SQL se trouve dans le projet myproject
.
gcloud network-connectivity service-connection-policies create cloud-sql-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-sql \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: par l'ID du projet.REGION
: région de votre règle de connexion de service.POLICY_NAME
: nom de votre stratégie de connexion de service.DESCRIPTION
: description facultative de votre règle de connexion de service.NETWORK
: réseau de votre règle de connexion de service.LIMIT
: nombre maximal de points de terminaison que vous pouvez créer à l'aide de cette règle. Si vous ne spécifiez pas de limite, il n'y en a pas.SUBNETS
: un ou plusieurs sous-réseaux client standard utilisés pour allouer des adresses IP aux points de terminaison Private Service Connect. Ces adresses IP sont automatiquement allouées et renvoyées au pool de sous-réseaux à mesure que des instances de service géré sont créées et supprimées. Les sous-réseaux doivent se trouver dans la même région que la règle de connexion de service. Si plusieurs règles de connexion partagent la même région, vous pouvez réutiliser le même sous-réseau dans ces règles. Vous pouvez saisir plusieurs sous-réseaux dans une liste séparée par des virgules.SERVICE_CLASS
: identifiant de ressource fourni par le producteur de la classe de service.
Méthode HTTP et URL :
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
Corps JSON de la requête :
{ "description": "DESCRIPTION", "network": "projects/PROJECT_ID/global/networks/NETWORK", "pscConfig": { "limit": "LIMIT", "subnetworks": [ "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" ] }, "serviceClass": "SERVICE_CLASS" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Créer une instance Cloud SQL
Vous pouvez créer une instance avec Private Service Connect activé et la configurer pour qu'elle crée automatiquement des points de terminaison à l'aide de gcloud CLI ou de l'API.
gcloud
Pour créer une instance avec Private Service Connect activé, utilisez la commande gcloud sql instances create
:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --psc-auto-connections=network=VPC_NETWORK,project=SERVICE_PROJECT \ --enable-bin-log
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- REGION_NAME : nom de la région pour l'instance.
ALLOWED_PROJECTS: liste d'ID ou de numéros de projet autorisés à partir desquels les points de terminaison Private Service Connect peuvent se connecter aux instances Cloud SQL, séparés par une virgule.
Si un projet ne figure pas dans cette liste, vous ne pouvez pas créer de points de terminaison Private Service Connect dans le projet pour vous connecter à l'instance.
- AVAILABILITY_TYPE: permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité pour une instance existante et Désactiver la haute disponibilité pour une instance.
- MACHINE_TYPE : type de machine de l'instance.
- DATABASE_VERSION : version de la base de données pour l'instance (par exemple,
MYSQL_8_0
). - VPC_NETWORK: chemin d'accès au réseau VPC à partir duquel les points de terminaison Private Service Connect doivent être créés. Par exemple:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: projet dans lequel le point de terminaison Private Service Connect est créé. Si le réseau VPC n'est pas un VPC partagé, il ne peut s'agir que du projet hôte du réseau. S'il s'agit d'un VPC partagé, il peut s'agir du projet hôte ou du projet de service.
Tous les projets que vous spécifiez dans les paramètres de connexion automatique sont automatiquement ajoutés à vos projets autorisés. Si vous souhaitez créer manuellement des points de terminaison Private Service Connect pour certains projets, vous pouvez les ajouter à votre liste de projets autorisés.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance.
- REGION_NAME : nom de la région pour l'instance.
- AVAILABILITY_TYPE: permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.
ALLOWED_PROJECTS: liste d'ID ou de numéros de projet autorisés à partir desquels les points de terminaison Private Service Connect peuvent se connecter aux instances Cloud SQL, séparés par une virgule.
Si un projet ne figure pas dans cette liste, vous ne pouvez pas créer de points de terminaison Private Service Connect dans le projet pour vous connecter à l'instance.
- MACHINE_TYPE : type de machine de l'instance.
- VPC_NETWORK: chemin d'accès au réseau VPC à partir duquel les points de terminaison Private Service Connect doivent être créés.
SERVICE_PROJECT: projet dans lequel le point de terminaison Private Service Connect est créé. Si le réseau VPC n'est pas un VPC partagé, il ne peut s'agir que du projet hôte du réseau. S'il s'agit d'un VPC partagé, il peut s'agir du projet hôte ou du projet de service.
Tous les projets que vous spécifiez dans les paramètres de connexion automatique sont automatiquement ajoutés à vos projets autorisés. Si vous souhaitez créer manuellement des points de terminaison Private Service Connect pour certains projets, vous pouvez les ajouter à votre liste de projets autorisés.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corps JSON de la requête :
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Récupérer le point de terminaison
En récupérant l'adresse IP interne, qui est le point de terminaison Private Service Connect d'une instance, vous pouvez utiliser ce point de terminaison pour vous connecter à l'instance.
gcloud
Pour afficher des informations sur une instance, y compris l'adresse IP qui correspond au point de terminaison Private Service Connect de l'instance, utilisez la commande gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance Cloud SQL. Si Private Service Connect est activé pour cette instance, les points de terminaison Private Service Connect des réseaux VPC peuvent s'y connecter.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
Dans la réponse, notez la valeur qui s'affiche à côté du champ pscConfig:pscAutoConnections:ipAddress
. Cette valeur correspond à l'adresse IP interne, qui est également le point de terminaison Private Service Connect de l'instance.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance Cloud SQL. Si Private Service Connect est activé pour cette instance, les points de terminaison Private Service Connect des réseaux VPC peuvent s'y connecter.
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "MYSQL_8_0", "settings": { "authorizedGaeApplications": [], "tier": "db-custom-2-7680", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": { consumerNetwork:"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS", consumerProject:"SERVICE_PROJECT", ipAddress:"IP_ADDRESS", status:"STATUS" }, "pscEnabled": true }, "ipv4Enabled": false }, }
Les champs suivants existent pour les instances sur lesquelles Private Service Connect est activé :
allowedConsumerProjects
: liste des projets autorisés pour l'instance. Vous pouvez créer des points de terminaison Private Service Connect à partir de n'importe quel réseau VPC de ces projets vers le rattachement de service de l'instance.pscAutoConnections
: réseau VPC autorisé, état de la règle de connexion de service et état de l'adresse IP qui est le point de terminaison de l'instance.pscEnabled
: indique si Private Service Connect est activé sur une instance.
Pour découvrir comment construire la requête sous-jacente de l'API REST pour cette tâche, consultez la page instances:get.
Créer le point de terminaison manuellement
Les sections suivantes expliquent comment créer manuellement un point de terminaison Private Service Connect.
Créer une instance Cloud SQL
Vous pouvez créer une instance avec Private Service Connect activé pour celle-ci à l'aide de gcloud CLI, Terraform ou l'API.
gcloud
Pour créer une instance avec Private Service Connect activé, utilisez la commande gcloud sql instances create
:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --enable-bin-log
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- REGION_NAME : nom de la région pour l'instance.
ALLOWED_PROJECTS: liste d'ID ou de numéros de projet autorisés à partir desquels les points de terminaison Private Service Connect peuvent se connecter aux instances Cloud SQL, séparés par une virgule.
Si un projet ne figure pas dans cette liste, vous ne pouvez pas créer de points de terminaison Private Service Connect dans le projet pour vous connecter à l'instance.
- AVAILABILITY_TYPE : permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité pour une instance existante et Désactiver la haute disponibilité pour une instance.
- MACHINE_TYPE : type de machine de l'instance.
- DATABASE_VERSION : version de la base de données pour l'instance (par exemple,
MYSQL_8_0
).
Terraform
Pour créer une instance avec Private Service Connect activé, utilisez la ressource google_sql_database_instance
Terraform.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf
, par exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tf
que vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance.
- REGION_NAME : nom de la région pour l'instance.
- AVAILABILITY_TYPE: permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.
ALLOWED_PROJECTS: liste d'ID ou de numéros de projet autorisés à partir desquels les points de terminaison Private Service Connect peuvent se connecter aux instances Cloud SQL, séparés par une virgule.
Si un projet ne figure pas dans cette liste, vous ne pouvez pas créer de points de terminaison Private Service Connect dans le projet pour vous connecter à l'instance.
- MACHINE_TYPE : type de machine de l'instance.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corps JSON de la requête :
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Obtenir le rattachement de service
Après avoir créé une instance Cloud SQL avec Private Service Connect activé, obtenez l'URI du rattachement de service et utilisez-le pour créer le point de terminaison Private Service Connect.
gcloud
Pour afficher des informations récapitulatives sur une instance sur laquelle Private Service Connect est activé, telles que le champ pscServiceAttachmentLink
qui affiche l'URI qui pointe vers le rattachement de service de l'instance, utilisez la commande gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance Cloud SQL à laquelle les points de terminaison Private Service Connect des réseaux VPC peuvent se connecter.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
L'exemple suivant illustre un exemple de sortie pour cette commande :
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
Terraform
Pour obtenir l'URI du rattachement de service, utilisez la ressource Terraform google_compute_address
.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf
, par exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tf
que vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
Le champ pscServiceAttachmentLink
affiche l'URI qui pointe vers le rattachement de service de l'instance.
Créer un point de terminaison Private Service Connect
Vous pouvez réserver une adresse IP interne pour le point de terminaison Private Service Connect et créer un point de terminaison avec cette adresse. Pour créer le point de terminaison, vous avez besoin de l'URI du rattachement de service et des projets autorisés pour l'instance.
gcloud
Pour réserver une adresse IP interne pour le point de terminaison Private Service Connect, utilisez la commande
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS
Effectuez les remplacements suivants :
- ADDRESS_NAME : nom de l'adresse IP interne.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud pour le point de terminaison.
- REGION_NAME : nom de la région du point de terminaison.
- SUBNET_NAME : nom de sous-réseau de l'adresse IP.
- INTERNAL_IP_ADDRESS : adresse IP à réserver. Cette adresse IP doit être comprise dans la plage d'adresses IP principales du sous-réseau. L'adresse IP peut être une adresse RFC 1918 ou un sous-réseau avec des plages non-RFC.
Pour vérifier que l'adresse IP est réservée, utilisez la commande
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
Dans la réponse, vérifiez qu'un état
RESERVED
s'affiche pour l'adresse IP.Pour créer le point de terminaison Private Service Connect et le faire pointer vers le rattachement de service Cloud SQL, utilisez la commande
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
Effectuez les remplacements suivants :
- ENDPOINT_NAME : nom du point de terminaison.
- NETWORK_NAME : nom du réseau VPC utilisé pour le point de terminaison.
- SERVICE_ATTACHMENT_URI : URI du rattachement de service.
Pour vérifier que le rattachement de service accepte le point de terminaison, utilisez la commande
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Dans la réponse, vérifiez qu'un état
ACCEPTED
s'affiche pour le champpscConnectionStatus
. Le point de terminaison peut se connecter au rattachement de service.
Terraform
Pour créer un point de terminaison Private Service Connect, utilisez la ressource google_sql_database_instance
Terraform.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf
, par exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tf
que vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
REST
Réservez une adresse IP interne pour le point de terminaison Private Service Connect.
Vérifiez que l'adresse IP est réservée.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ADDRESS_NAME : nom de l'adresse IP.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
Dans la réponse, vérifiez qu'un état
RESERVED
s'affiche pour l'adresse IP.Créez le point de terminaison Private Service Connect et faites-le pointer vers le rattachement de service Cloud SQL.
Vérifiez que le rattachement de service accepte le point de terminaison.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ENDPOINT_NAME : nom du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
Dans la réponse, vérifiez qu'un état
ACCEPTED
s'affiche pour le champpscConnectionStatus
. Le point de terminaison peut se connecter au rattachement de service.
Connexion à une instance Cloud SQL
Vous pouvez vous connecter à une instance Cloud SQL avec Private Service Connect activé à l'aide d'une adresse IP interne, d'un enregistrement DNS, du proxy d'authentification Cloud SQL, des connecteurs de langage Cloud SQL ou d'autres applications Google Cloud.
Configurer une zone gérée DNS et un enregistrement DNS
Cloud SQL ne crée pas d'enregistrements DNS automatiquement. À la place, la réponse de l'API de recherche d'instance fournit un nom DNS suggéré. Nous vous recommandons de créer l'enregistrement DNS dans une zone DNS privée du réseau VPC correspondant. Cela permet d'utiliser le proxy d'authentification Cloud SQL de manière cohérente pour se connecter à partir de différents réseaux.
gcloud
Pour afficher des informations récapitulatives sur une instance Cloud SQL, y compris son nom DNS, utilisez la commande
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance Cloud SQL.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
Dans la réponse, vérifiez que le nom DNS apparaît. Ce nom a le format suivant :
INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
. Exemple :1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
.Pour créer une zone DNS privée, utilisez la commande
gcloud dns managed-zones create
. Cette zone est associée au réseau VPC utilisé pour se connecter à l'instance Cloud SQL via le point de terminaison Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Effectuez les remplacements suivants :
- ZONE_NAME : nom de la zone DNS
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone.
- DESCRIPTION : une description de la zone (par exemple, une zone DNS pour l'instance Cloud SQL).
- DNS_NAME : nom du suffixe DNS pour la zone, tel que
REGION_NAME.sql.goog.
(où REGION_NAME correspond au nom de la région pour la zone). - NETWORK_NAME : nom du réseau VPC.
Après avoir créé le point de terminaison Private Service Connect, utilisez la commande
gcloud dns record-sets create
pour créer un enregistrement DNS dans la zone :gcloud dns record-sets create DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Effectuez les remplacements suivants :
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE : le type d'enregistrement de ressource du jeu d'enregistrements DNS (par exemple,
A
). - RR_DATA : adresse IP allouée au point de terminaison Private Service Connect (par exemple,
198.51.100.5
). Vous pouvez également saisir plusieurs valeurs, telles querrdata1 rrdata2 rrdata3
(par exemple10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
REST
- Procurez-vous le nom DNS d'une instance Cloud SQL.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance
- Créez une zone DNS privée. Cette zone est associée au réseau VPC utilisé pour se connecter à l'instance Cloud SQL via le point de terminaison Private Service Connect.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone DNS.
- ZONE_NAME : nom de la zone.
- DESCRIPTION : une description de la zone (par exemple, une zone DNS pour l'instance Cloud SQL).
- DNS_NAME : nom du suffixe DNS pour la zone, tel que
REGION_NAME.sql.goog.
(où REGION_NAME correspond au nom de la région pour la zone). - NETWORK_NAME : nom du réseau VPC.
- Après avoir créé le point de terminaison Private Service Connect, créez un enregistrement DNS dans la zone.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone DNS.
- ZONE_NAME : nom de la zone.
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE : type du jeu d'enregistrements (par exemple,
A
). - TTL : valeur TTL (Time To Live) du jeu d'enregistrements exprimée en nombre de secondes (par exemple,
300
). - RR_DATA : adresse IP allouée au point de terminaison Private Service Connect (par exemple,
198.51.100.5
). Vous pouvez également saisir plusieurs valeurs, telles querrdata1 rrdata2 rrdata3
(par exemple10.1.2.3 10.2.3.4 10.3.4.5
).
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
Le champ dnsName
affiche le nom DNS de l'instance Cloud SQL. Les noms DNS se terminent toujours par un point (.
).
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
Méthode HTTP et URL :
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
Corps JSON de la requête :
{ "name": "ZONE_NAME", "description": "DESCRIPTION", "dnsName": "DNS_NAME", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME" } ] } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "ZONE_NAME", "dnsName": "DNS_NAME", "description": "DESCRIPTION", "id": "ID", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
Méthode HTTP et URL :
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME
Corps JSON de la requête :
{ "deletions": [] "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ] } ] }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID", "status": "pending", "kind": "dns#change" }
Se connecter directement à l'aide d'un enregistrement DNS
Avant de vous connecter à une instance Cloud SQL à l'aide d'un enregistrement DNS, procédez comme suit:
- Créer un point de terminaison Private Service Connect
- Vérifiez que le rattachement de service de l'instance accepte le point de terminaison. Pour vérifier que l'état du point de terminaison est
ACCEPTED
, vérifiez l'état. - Configurer une zone gérée DNS et un enregistrement DNS
Une fois ces conditions remplies, utilisez l'enregistrement DNS pour vous connecter à l'instance à partir de n'importe quel réseau VPC dans lequel vous avez créé le point de terminaison.
mysql --host=DNS_RECORD --user=USERNAME -p
Effectuez les remplacements suivants :
- DNS_RECORD : l'enregistrement DNS du point de terminaison.
- USERNAME : nom de l'utilisateur qui se connecte à l'instance.
Se connecter directement via une adresse IP interne
Avant de vous connecter à une instance Cloud SQL avec Private Service Connect activé, procédez comme suit:
- Créer un point de terminaison Private Service Connect
- Vérifiez que le rattachement de service de l'instance accepte le point de terminaison. Pour vérifier que l'état du point de terminaison est
ACCEPTED
, vérifiez l'état.
Une fois ces conditions remplies, utilisez l'adresse IP du point de terminaison pour accéder à l'instance à partir de n'importe quel réseau VPC dans lequel vous avez créé le point de terminaison.
Récupérez l'adresse IP interne du point de terminaison Private Service Connect à l'aide du nom de l'adresse IP du point de terminaison.
gcloud
Pour récupérer l'adresse IP, utilisez la commande
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Effectuez les remplacements suivants :
- ADDRESS_NAME : nom de l'adresse IP du point de terminaison.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
- REGION_NAME : nom de la région du point de terminaison
Dans la réponse, vérifiez qu'une adresse IP apparaît pour le champ
address
. Il s'agit de l'adresse IP interne.REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
- REGION_NAME : nom de la région du point de terminaison
- ADDRESS_NAME : nom de l'adresse IP du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
L'adresse IP interne correspond à la valeur associée au champ
address
.Vous pouvez également récupérer l'adresse IP interne du point de terminaison Private Service Connect à l'aide du rattachement de service de l'instance Cloud SQL.
gcloud
Pour récupérer l'adresse IP, utilisez la commande
gcloud compute forwarding-rules list
:gcloud compute forwarding-rules list \ --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \ --project=PROJECT_ID
Effectuez les remplacements suivants :
- REGION_NAME : nom de la région du point de terminaison
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
- SERVICE_ATTACHMENT_NAME: nom de l'attachement de service pour l'instance Cloud SQL
Dans la réponse, vérifiez qu'une adresse IP apparaît. Il s'agit de l'adresse IP interne.
Voici un exemple de réponse :
NAME
REGION
IP_ADDRESS
TARGET
myInstance
us-central1
10.10.10.10
us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
- REGION_NAME : nom de la région du point de terminaison
- SERVICE_ATTACHMENT_PROJECT_ID: ID ou numéro de projet du projet Google Cloud contenant l'attachement de service
- SERVICE_ATTACHMENT_NAME: nom de l'attachement de service pour l'instance Cloud SQL
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#forwardingRuleList", "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "PSC_CONNECTION_ID", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules" }
L'adresse IP interne correspond à la valeur associée au champ
IPAddress
.-
Pour vous connecter à l'instance Cloud SQL, utilisez l'adresse IP interne.
mysql --host=IP_ADDRESS --user=USERNAME -p
Effectuez les remplacements suivants :
- IP_ADDRESS : l'adresse IP du point de terminaison.
- USERNAME : nom de l'utilisateur qui se connecte à l'instance.
Se connecter à l'aide du proxy d'authentification Cloud SQL
Le proxy d'authentification Cloud SQL est un connecteur qui fournit un accès sécurisé à une instance avec Private Service Connect activé sans nécessiter de réseaux autorisés ni de configuration SSL.
Pour autoriser les connexions du client proxy d'authentification Cloud SQL, configurez un enregistrement DNS correspondant au nom DNS recommandé fourni pour l'instance. L'enregistrement DNS est un mappage entre une ressource DNS et un nom de domaine.
Si vous vous connectez via Private Service Connect, la version v2.5.0 ou ultérieure du proxy d'authentification Cloud SQL est requise.
Télécharger et installer le proxy d'authentification Cloud SQL
Pour vous connecter à des instances sur lesquelles Private Service Connect est activé, vous devez télécharger et installer le binaire du proxy d'authentification Cloud SQL. Le binaire à télécharger dépend du système d'exploitation et de l'utilisation d'un noyau 32 bits ou 64 bits. Dans la plupart des cas, le matériel récent possède un noyau 64 bits.
Si vous ne savez pas si votre machine exécute un noyau 32 bits ou 64 bits, utilisez la commande uname -a
pour Linux ou macOS. Pour Windows, consultez la documentation Windows.
Démarrer le proxy d'authentification Cloud SQL
Le proxy d'authentification Cloud SQL accepte les connexions aux instances pour lesquelles Private Service Connect est activé. Pour en savoir plus, consultez la section Démarrer le proxy d'authentification Cloud SQL.
- Affichez des informations récapitulatives sur une instance Cloud SQL, y compris son nom de connexion.
gcloud
Pour afficher des informations récapitulatives sur une instance Cloud SQL, utilisez la commande
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
Effectuez les remplacements suivants :
- INSTANCE_NAME : nom de l'instance Cloud SQL.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
Le nom de la connexion est au format
PROJECT_ID:REGION_NAME:INSTANCE_NAME
.REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
Le nom de la connexion est au format
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Copiez le nom de connexion de l'instance.
Lancez le proxy d'authentification Cloud SQL :
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
Remplacez INSTANCE_CONNECTION_NAME par le nom de connexion de l'instance que vous avez copié à l'étape précédente.
Se connecter à l'aide des connecteurs de langage Cloud SQL
Les connecteurs de langage Cloud SQL sont des bibliothèques qui fournissent un accès sécurisé à une instance Cloud SQL avec Private Service Connect activé sans nécessiter de réseaux autorisés ni de configuration SSL.
Pour autoriser les connexions avec les connecteurs de langage Cloud SQL, configurez un enregistrement DNS correspondant au nom DNS recommandé fourni pour l'instance. L'enregistrement DNS est un mappage entre une ressource DNS et un nom de domaine.
Les connecteurs de langage Cloud SQL sont compatibles avec les connexions Private Service Connect via le type d'adresse IP PSC
dans leurs bibliothèques respectives.
- Connecteur Python Cloud SQL (version 1.3.0 ou ultérieure)
- Connecteur Go Cloud SQL (version 1.4.0 ou ultérieure)
- Connecteur Java Cloud SQL (version 1.13.0 ou ultérieure)
- Connecteur Node.js Cloud SQL (version 0.5.0 ou ultérieure)
Se connecter depuis App Engine Standard, Cloud Run ou les Cloud Run Functions
Pour vous connecter à des instances Cloud SQL avec Private Service Connect activé, vous pouvez utiliser App Engine Standard, Cloud Run ou les fonctions Cloud Run.
Dans ces environnements sans serveur compatibles, les connecteurs de langage Cloud SQL et les connexions TCP directes via une adresse IP et un numéro de port sont pris en charge. Pour les connexions TCP directes, il s'agit de l'adresse IP que vous réservez lorsque vous créez le point de terminaison Private Service Connect. Vous pouvez spécifier l'adresse IP comme adresse pour l'hôte de base de données.
Si vous créez un enregistrement DNS pour le point de terminaison, vous pouvez spécifier cet enregistrement pour l'hôte.
Se connecter depuis BigQuery
Pour accéder aux données dans Cloud SQL et effectuer des requêtes sur ces données via une connexion IP interne, utilisez le paramètre --enable-google-private-path
. Ce paramètre n'est valide que dans les cas suivants :
- Vous utilisez le paramètre
--no-assign-ip
. - Vous utilisez le paramètre
--network
pour spécifier le nom du réseau VPC que vous souhaitez utiliser pour créer une connexion privée.
Tester la connectivité
Pour tester la connectivité entrante vers une instance Cloud SQL avec Private Service Connect activé, définissez l'adresse IP du point de terminaison Private Service Connect comme adresse IP de destination.
gcloud
Pour créer un test de connectivité pour une instance Cloud SQL avec Private Service Connect activé, utilisez la commande gcloud network-management connectivity-tests create
:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
Effectuez les remplacements suivants :
- CONNECTIVITY_TEST_NAME : nom du test de connectivité.
- SOURCE_INSTANCE: URI de l'instance Compute Engine où se trouve l'adresse IP source (par exemple,
projects/myproject/zones/myzone/instances/myinstance
). - DESTINATION_CLOUD_SQL_INSTANCE: URL de l'instance Cloud SQL (par exemple,
projects/myproject/instances/myinstance
). - DESTINATION_NETWORK : URI du réseau VPC où se trouve l'adresse IP de destination (par exemple,
projects/myproject/global/networks/mynetwork
). - DESTINATION_PORT : numéro de port réservé à l'instance. Pour les instances Cloud SQL pour MySQL, le numéro de port est
3306
.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- CONNECTIVITY_TEST_NAME : nom du test de connectivité.
- SOURCE_IP_ADDRESS : adresse IP de l'instance Compute Engine source.
- SOURCE_INSTANCE: URI de l'instance Compute Engine où se trouve l'adresse IP source (par exemple,
projects/myproject/zones/myzone/instances/myinstance
). - SOURCE_NETWORK : URI du réseau VPC où se trouve l'adresse IP source (par exemple,
projects/myproject/global/networks/mynetwork
). - DESTINATION_IP_ADDRESS : adresse IP de l'instance Cloud SQL de destination.
- DESTINATION_PORT : numéro de port réservé à l'instance. Pour les instances Cloud SQL pour MySQL, le numéro de port est
3306
. - DESTINATION_NETWORK : URI du réseau VPC où se trouve l'adresse IP de destination (par exemple,
projects/myproject/global/networks/mynetwork
).
Méthode HTTP et URL :
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
Corps JSON de la requête :
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS", "instance": "SOURCE_INSTANCE", "network": "SOURCE_NETWORK" }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS", "port": DESTINATION_PORT, "network": "DESTINATION_NETWORK", "projectId": "PROJECT_ID" }, "protocol": "TCP" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
Limites
- Vous pouvez configurer jusqu'à 20 points de terminaison Private Service Connect qui se connectent au rattachement de service d'une instance Cloud SQL sur laquelle Private Service Connect est activé.
- Vous ne pouvez pas utiliser les backends Private Service Connect pour les instances pour lesquelles Private Service Connect est activé.
- Les options suivantes sont invalidées ou affectées :
--no-assign-ip:
utilise cette option, car les instances pour lesquelles Private Service Connect est activé ne sont pas compatibles avec les autres types de connectivité tels que les connexions IP externes.--authorized-networks:
Vous ne pouvez pas utiliser cette option pour ajouter des réseaux autorisés.--network:
Vous ne pouvez pas utiliser cette option, car elle est associée à l'accès aux services privés.--allocated-ip-range-name:
Vous ne pouvez pas utiliser cette option, car les noms de plages d'adresses IP autorisés ne sont pas acceptés.
- Vous ne pouvez pas créer d'instance répliquée externe pour une instance sur laquelle Private Service Connect est activé.
- Vous ne pouvez pas configurer une instance pour laquelle Private Service Connect est activé afin d'utiliser l'accès aux services privés ou les connexions IP publiques.
- Vous ne pouvez pas activer les connexions IP publiques sur une instance sur laquelle Private Service Connect est activé.
- Vous ne pouvez pas activer l'accès aux services privés ni ajouter des réseaux autorisés à l'instance.
- Vous ne pouvez pas modifier le type de connectivité de l'instance.
- Vous ne pouvez pas utiliser la commande
gcloud sql connect
, Cloud Shell, Cloud Build, Database Migration Service ni Datastream pour vous connecter à des instances Cloud SQL sur lesquelles Private Service Connect est activé. - Lorsque vous testez la connectivité à une instance Cloud SQL avec Private Service Connect activé, vous ne pouvez pas définir les éléments suivants :
- L'adresse IP privée ou le nom DNS de l'instance comme destination directe
- L'instance en tant que source
- L'adresse IP du point de terminaison Private Service Connect en tant que source
- L'ajout à la liste d'autorisation basé sur l'adresse IP en utilisant des réseaux autorisés n'est pas accepté.
- Si votre projet réseau contient des instances qui utilisent l'ancienne architecture réseau Cloud SQL, vous ne pouvez pas créer d'instance Private Service Connect. Cloud SQL fournit des outils permettant de mettre à niveau les instances de l'ancienne architecture réseau vers la nouvelle. Pour en savoir plus ou vérifier l'architecture réseau des instances Cloud SQL de votre projet et effectuer les mises à niveau nécessaires, consultez la page Mettre à niveau une instance vers la nouvelle architecture réseau.
Résoudre les problèmes
Cette section contient des informations sur les problèmes associés aux instances Cloud SQL pour lesquelles Private Service Connect est activé, ainsi que la procédure à suivre pour les résoudre.
Problème Dépannage Le rattachement de service de l'instance n'accepte pas le point de terminaison Private Service Connect. - Vérifiez l'état du point de terminaison.
gcloud
Pour vérifier l'état, utilisez la commande
gcloud compute forwarding-rules describe
.gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ | grep pscConnectionStatus
Effectuez les remplacements suivants :
- ENDPOINT_NAME : nom du point de terminaison.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
- REGION_NAME : nom de la région du point de terminaison
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ENDPOINT_NAME : nom du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
- Vérifiez que l'état du point de terminaison est
ACCEPTED
. Si l'état estPENDING
, l'instance n'autorise pas le projet Google Cloud contenant le point de terminaison. Assurez-vous que le projet réseau dans lequel le point de terminaison est créé est autorisé. Pour en savoir plus, consultez la page Modifier une instance avec Private Service Connect activé.
Étapes suivantes
- Apprenez-en plus sur les adresses IP privées.
- Apprenez-en plus sur Private Service Connect.
- Découvrez comment créer une instance répliquée avec accès en lecture pour une instance avec Private Service Connect activé.
- Découvrez comment cloner une instance avec Private Service Connect activé.
- Découvrez comment afficher des informations récapitulatives sur les instances pour lesquelles Private Service Connect est activé.
- Découvrez comment définir et supprimer la haute disponibilité pour une instance sur laquelle Private Service Connect est activé.
- Découvrez comment modifier et supprimer une instance avec Private Service Connect activé.