Connectivité aux services hébergés dans un environnement sans serveur
Cette page explique comment configurer Integration Connectors pour se connecter à des services hébergés dans des environnements sans serveur tels que Cloud Run dans Google Cloud.
L'image suivante montre une configuration de connectivité réseau privée entre les connecteurs d'intégration et un service hébergé dans l'environnement Cloud Run de 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
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 dans différents sous-réseaux du même VPC. Plus précisément, le rattachement de service est toujours créé dans un sous-réseau NAT.
- Le trafic provenant de l'équilibreur de charge et de la sonde de vérification de l'état doit être envoyé au 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 de l'association de service PSC doit atteindre votre service backend.
Règles de sortie
Le trafic de sortie est activé par défaut dans un projet Google Cloud, sauf si des 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.
Créer un rattachement de service PSC
Pour établir une connectivité privée à partir d'Integration Connectors, votre service doit être exposé à Integration Connectors à l'aide d'un rattachement de service PSC. Une pièce jointe de service utilise toujours un équilibreur de charge. Par conséquent, si votre service n'est pas derrière un équilibreur de charge, vous devez en configurer un.
- Créer un équilibreur de charge Si vous disposez déjà d'un équilibreur de charge, ignorez cette étape.
Créez un équilibreur de charge d'application en utilisant un NEG sans serveur comme backend en suivant les instructions de la section Configurer un équilibreur de charge d'application interne régional avec Cloud Run.
- Créer 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 du 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 est la limite de connexions pour le projet. La limite de connexion correspond au nombre Points de terminaison PSC pouvant se connecter à ce service. Pour obtenir l'SERVICE_DIRECTORY_PROJECT_ID, procédez comme suit :
-
Vous pouvez créer le rattachement de service PSC de sorte qu'il n'accepte que les requêtes provenant des projets Google Cloud spécifiés. Toutefois, pour ce faire, vous avez besoin de l'ID de projet du répertoire de services associé à votre projet Google Cloud. Pour obtenir l'ID de projet du répertoire de services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple suivant.
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 les éléments suivants :
- CONNECTORS_PROJECT_ID : ID de votre projet Google Cloud dans lequel vous avez créé votre connexion.
Exemple
Cet exemple obtient l'ID de projet du répertoire de 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 affiche un résultat semblable à celui-ci:
..... { "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 sortie, pour le projet Google Cloud
connectors-test
, l'ID du projet du répertoire de services estabcdefghijk-tp
.
-
- Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé
Créer un rattachement de point de terminaison pour consommer le rattachement de service PSC
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 la section 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 les backends compatibles avec TLS, la destination vous oblige à utiliser 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é au lieu d'une adresse IP pour la destination de l'hôte, en plus de créer une pièce jointe de point de terminaison en tant qu'adresse IP, vous devez également configurer des zones gérées. Pour savoir comment créer un rattachement de point de terminaison en tant que nom d'hôte, consultez la section 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 du 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 Rattachement 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
Suivez les consignes indiquées dans cette section pour éviter les problèmes courants:
- 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 la section Vérifier la connexion du rattachement de point de terminaison.
- Pour en savoir plus sur la résolution des problèmes liés à l'équilibreur de charge, consultez la page Résoudre les problèmes liés aux équilibreurs de charge d'application internes.
- Test de connectivité Google Cloud peut être utilisée pour identifier les écarts dans votre configuration réseau. Pour en savoir plus, consultez Créez et exécutez des tests de connectivité.