Connectivité réseau dans un VPC Google Cloud
Cette page explique comment configurer la connectivité privée depuis Integration Connectors vers votre service de backend, tel que MySQL, Postgres et SQL Server, hébergé dans le VPC Google Cloud.
Sur cette page, nous partons du principe que vous connaissez bien les éléments suivants :
- Rattachements de point de terminaison
- Zones gérées
- Private Service Connect (PSC)
- Équilibreur de charge Google Cloud
La connectivité privée au VPC Google Cloud peut correspondre à l'un des cas de figure suivants :
- Le service de backend et le rattachement de service PSC se trouvent dans le même projet ou VPC Google Cloud.
- Le service de backend et le rattachement de service PSC se trouvent dans des projets ou des VPC Google Cloud différents.
Remarques
Lorsque vous créez un rattachement de service PSC, tenez compte des points clés suivants :
- Le rattachement de service PSC et l'équilibreur de charge sont créés sur des sous-réseaux différents dans le même VPC. Plus précisément, le rattachement de service est toujours créé sur un sous-réseau NAT.
- Le trafic provenant de l'équilibreur de charge et du test de vérification de l'état doit être envoyé vers le même port.
- Configurez les règles de pare-feu pour faciliter le flux de trafic.
Règles d'entrée
Le trafic provenant du sous-réseau du rattachement de service PSC doit atteindre votre service de backend.
Règles de sortie
Le trafic de sortie est activé par défaut dans un projet Google Cloud, sauf si des règles de refus spécifiques sont configurées.
- Tous vos composants Google Cloud, tels que le rattachement de service PSC et l'équilibreur de charge, doivent se trouver dans la même région.
Connectivité privée à un service de backend dans un VPC Google Cloud
Cette section explique comment établir une connectivité privée lorsque le service de backend et le rattachement de service PSC se trouvent dans le même projet Google Cloud.
L'image suivante représente la configuration de la connectivité réseau privée depuis Integration Connectors vers un service hébergé dans un VPC Google Cloud :
Pour configurer la connectivité privée à un service de backend dans un VPC Google Cloud, procédez comme suit :
- Créez un rattachement de service PSC.
- Créez un rattachement de point de terminaison pour utiliser le rattachement de service PSC.
- Configurez une connexion pour utiliser le rattachement de point de terminaison.
Créer un rattachement de service PSC
Pour que vous établissiez une connectivité privée à partir d'Integration Connectors, votre service doit être exposé à Integration Connectors à l'aide d'un rattachement de service PSC. Un rattachement de service utilise toujours un équilibreur de charge. Par conséquent, si votre service n'est pas placé derrière un équilibreur de charge, vous devez en configurer un.
- Créez un test de vérification de l'état, puis autorisez le trafic provenant du test.
- Créez le test de vérification de l'état.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION
Dans cette commande, définissez BACKEND_SERVER_PORT sur "3306", qui est le port par défaut sur lequel le serveur MySQL s'exécute.
- Créez une règle de pare-feu pour autoriser le trafic provenant de la vérification.
gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
- Créez le test de vérification de l'état.
- Créez un équilibreur de charge interne L4 et autorisez le trafic provenant de l'équilibreur de charge.
- Créez un service de backend.
gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION
- Ajoutez le groupe d'instances au service de backend.
gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
- Créez une règle de transfert.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
-
Créez une règle de pare-feu pour autoriser le trafic interne de l'équilibreur de charge vers le groupe d'instances.
gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Créez un service de backend.
- Créez le rattachement de service.
- Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé
psc-nat-subnet1
et dont l'objectif estPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Créez une règle de pare-feu pour autoriser le trafic du NAT PSC vers l'équilibreur de charge.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Créez un rattachement de service avec une approbation explicite.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
Dans cette commande, LIMIT correspond à la limite de connexions pour le projet. La limite de connexions est le nombre de points de terminaison clients PSC pouvant se connecter à ce service. Pour obtenir le SERVICE_DIRECTORY_PROJECT_ID, procédez comme suit :
-
Vous pouvez créer le rattachement de service PSC de sorte qu'il n'accepte les requêtes que des projets Google Cloud spécifiés. Pour cela, vous avez toutefois besoin de l'ID de projet de l'annuaire des services associé à votre projet Google Cloud. Pour obtenir l'ID de projet de l'annuaire des services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple ci-dessous.
Syntaxe
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Remplacez l'élément suivant :
- CONNECTORS_PROJECT_ID : ID du projet Google Cloud dans lequel vous avez créé votre connexion
Exemple
Cet exemple récupère l'ID de projet de l'annuaire des services pour le projet Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'exécution de cette commande sur le terminal génère un résultat semblable au suivant :
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Dans l'exemple de résultat, pour le projet Google Cloud
connectors-test
, l'ID de projet de l'annuaire des services estabcdefghijk-tp
.
-
- Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé
Après avoir créé un rattachement de service PSC, créez un rattachement de point de terminaison pour utiliser le rattachement de service PSC. Pour en savoir plus, consultez Créer un rattachement de point de terminaison.
Connectivité privée pour différents projets Google Cloud
Cette section explique comment établir une connectivité privée lorsque le service de backend et le rattachement de service PSC se trouvent dans des projets ou des VPC Google Cloud différents.
L'image suivante représente la configuration de la connectivité réseau privée, où le rattachement de service PSC et le service de backend se trouvent dans des projets Google Cloud différents :
Pour configurer la connectivité privée pour différents projets Google Cloud, procédez comme suit :
- Configurez la connectivité privée.
- Créez un rattachement de point de terminaison pour utiliser le rattachement de service PSC.
- Configurez une connexion pour utiliser le rattachement de point de terminaison.
Configurer la connectivité privée
Pour configurer la connectivité privée, procédez comme suit :
- Créez un équilibreur de charge. Si vous en avez déjà un, ignorez cette étape.
- Créez un groupe de points de terminaison du réseau (NEG, Network Endpoint Group) zonal. Pour en savoir plus, consultez Créer un NEG zonal.
- Ajoutez le NEG zonal en tant que backend, puis créez les règles suivantes :
- Créez une règle de transfert.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \ --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \ --backend-service-region=REGION
-
Créez une règle de pare-feu pour autoriser le trafic interne de l'équilibreur de charge vers le groupe d'instances.
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \ --direction=INGRESS --priority=1000 --network=VPC_NETWORK \ --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Créez une règle de transfert.
- Créez le rattachement de service.
- Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé
psc-nat-subnet1
et dont l'objectif estPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Créez une règle de pare-feu pour autoriser le trafic du NAT PSC vers l'équilibreur de charge.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Créez un rattachement de service avec une approbation explicite.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
Dans cette commande, LIMIT correspond à la limite de connexions pour le projet. La limite de connexions est le nombre de points de terminaison clients PSC pouvant se connecter à ce service. Pour obtenir le SERVICE_DIRECTORY_PROJECT_ID, procédez comme suit :
-
Vous pouvez créer le rattachement de service PSC de sorte qu'il n'accepte les requêtes que des projets Google Cloud spécifiés. Pour cela, vous avez toutefois besoin de l'ID de projet de l'annuaire des services associé à votre projet Google Cloud. Pour obtenir l'ID de projet de l'annuaire des services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple ci-dessous.
Syntaxe
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Remplacez l'élément suivant :
- CONNECTORS_PROJECT_ID : ID du projet Google Cloud dans lequel vous avez créé votre connexion
Exemple
Cet exemple récupère l'ID de projet de l'annuaire des services pour le projet Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'exécution de cette commande sur le terminal génère un résultat semblable au suivant :
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Dans l'exemple de résultat, pour le projet Google Cloud
connectors-test
, l'ID de projet de l'annuaire des services estabcdefghijk-tp
.
-
- Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé
Ajouter le projet Integration Connectors à la liste d'autorisation dans un rattachement de service
Vous pouvez créer le rattachement de service PSC de sorte qu'il n'accepte les requêtes que des projets Google Cloud spécifiés. Pour cela, vous avez toutefois besoin de l'ID de projet de l'annuaire des services associé à votre projet Google Cloud. Pour obtenir l'ID de projet de l'annuaire des services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple ci-dessous.
Syntaxe
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Remplacez l'élément suivant :
- CONNECTORS_PROJECT_ID : ID du projet Google Cloud dans lequel vous avez créé votre connexion
Exemple
Cet exemple récupère l'ID de projet de l'annuaire des services pour le projet Google Cloud connectors-test
.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'exécution de cette commande sur le terminal génère un résultat semblable au suivant :
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Dans l'exemple de résultat, pour le projet Google Cloud connectors-test
, l'ID de projet de l'annuaire des services est abcdefghijk-tp
.
Après avoir ajouté le projet Integration Connectors à la liste d'autorisation d'un rattachement de service PSC, créez un rattachement de point de terminaison pour utiliser le rattachement de service PSC. Pour en savoir plus, consultez Créer un rattachement de point de terminaison.
Créer un rattachement de point de terminaison
Rattachement de point de terminaison en tant qu'adresse IPPour savoir comment créer un rattachement de point de terminaison en tant qu'adresse IP, consultez Créer un rattachement de point de terminaison en tant qu'adresse IP.
Rattachement de point de terminaison en tant que nom d'hôteDans certains cas, comme pour les backends compatibles avec TLS, la destination nécessite que vous utilisiez des noms d'hôte au lieu d'adresses IP privées pour effectuer la validation TLS. Dans les cas où un DNS privé est utilisé à la place d'une adresse IP pour la destination de l'hôte, vous devez configurer des zones gérées en plus de créer un rattachement de point de terminaison en tant qu'adresse IP. Pour savoir comment créer un rattachement de point de terminaison en tant que nom d'hôte, consultez Créer un rattachement de point de terminaison en tant que nom d'hôte.
Plus tard, lorsque vous configurerez votre connexion pour utiliser le rattachement de point de terminaison, vous pourrez le sélectionner.
Configurer une connexion pour utiliser le rattachement de point de terminaison
Maintenant que vous avez créé un rattachement de point de terminaison, utilisez-le dans votre connexion. Lorsque vous créez une connexion ou mettez à jour une connexion existante, dans la section "Destinations", sélectionnez Rattachement de point de terminaison comme Type de destination, puis sélectionnez le rattachement de point de terminaison que vous avez créé dans la liste Rattachements de point de terminaison.
Si vous avez créé une zone gérée, sélectionnez Adresse de l'hôte comme Type de destination et utilisez l'enregistrement A que vous avez créé lors de la création de la zone gérée.
Conseils de dépannage
Si vous rencontrez des problèmes de connectivité privée, suivez les consignes de cette section pour éviter tout problème courant.
- Pour vérifier que le rattachement de point de terminaison est correctement configuré et que la connexion PSC est établie, vérifiez l'état de la connexion. Pour en savoir plus, consultez Vérifier la connexion du rattachement de point de terminaison.
- Assurez-vous que les règles de pare-feu sont configurées comme suit :
- Le trafic provenant du sous-réseau du rattachement de service PSC doit pouvoir atteindre votre service de backend.
- L'équilibreur de charge doit pouvoir envoyer du trafic vers votre service de backend.
- Équilibreurs de charge passthrough (ILB L4 TCP/UDP) : les requêtes provenant des adresses IP NAT du rattachement de service PSC doivent pouvoir atteindre votre backend. Ces adresses IP NAT sont allouées automatiquement à partir de la plage de sous-réseaux NAT PSC. Vous devez donc autoriser l'ensemble de la plage d'adresses IP du sous-réseau NAT dans lequel se trouve votre rattachement de service. Pour trouver le sous-réseau NAT PSC, utilisez la commande suivante :
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
- Équilibreurs de charge basés sur un proxy/HTTP(S) (ILB proxy L4, ILB L7) : les requêtes d'un équilibreur de charge proxy proviennent du sous-réseau proxy réservé de la région. Par conséquent, vos règles de pare-feu doivent être configurées pour autoriser les requêtes provenant des plages du sous-réseau proxy réservé à atteindre votre backend. Pour trouver le sous-réseau proxy réservé, utilisez la commande suivante :
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
- Le test de vérification de l'état doit pouvoir accéder à votre système backend. Les tests de vérification de l'état Google Cloud ont une plage d'adresses IP fixe (35.191.0.0/16, 130.211.0.0/22). Ces adresses IP doivent donc être autorisées à envoyer du trafic vers votre serveur backend.
Pour savoir comment résoudre les problèmes liés aux équilibreurs de charge, consultez Résoudre les problèmes liés aux équilibreurs de charge d'application internes.
- Équilibreurs de charge passthrough (ILB L4 TCP/UDP) : les requêtes provenant des adresses IP NAT du rattachement de service PSC doivent pouvoir atteindre votre backend. Ces adresses IP NAT sont allouées automatiquement à partir de la plage de sous-réseaux NAT PSC. Vous devez donc autoriser l'ensemble de la plage d'adresses IP du sous-réseau NAT dans lequel se trouve votre rattachement de service. Pour trouver le sous-réseau NAT PSC, utilisez la commande suivante :
- Le test de connectivité Google Cloud permet d'identifier les lacunes de votre configuration réseau. Pour en savoir plus, consultez Créer et exécuter des tests de connectivité.