Publier des services à l'aide de Private Service Connect
En tant que producteur de services, vous pouvez utiliser Private Service Connect pour publier des services à l'aide d'adresses IP internes sur votre réseau VPC. Vos services publiés sont accessibles aux clients de services en utilisant des adresses IP internes dans les réseaux VPC consommateur.
Ce guide explique comment publier un service à l'aide de Private Service Connect. Pour publier un service, procédez comme suit :
Hébergez le service sur un équilibreur de charge compatible avec une configuration compatible.
Créez un rattachement de service qui pointe vers la règle de transfert associée à l'équilibreur de charge.
Private Service Connect propose deux méthodes pour se connecter aux services publiés :
Ces types de points de terminaison nécessitent des configurations de producteur légèrement différentes. Pour en savoir plus, consultez la section Fonctionnalités et compatibilité.
Rôles
Le rôle IAM suivant fournit les autorisations nécessaires pour effectuer les tâches décrites dans ce guide.
- Administrateur de réseaux Compute (
roles/compute.networkAdmin
)
Avant de commencer
Pour en savoir plus, y compris sur la configuration et les limites du DNS, consultez la section À propos des services publiés.
Déterminez si le service doit être accessible depuis tous les projets ou si vous souhaitez contrôler quels projets peuvent accéder à votre service.
Indiquez si vous souhaitez que ce service accepte des points de terminaison, des backends ou les deux. Pour plus d'informations sur les points de terminaison et les backends, consultez la section Types Private Service Connect.
Pour en savoir plus sur les exigences de configuration d'un service, consultez la section Fonctionnalités et compatibilité.
Types d'équilibreur de charge compatibles
Vous pouvez héberger le service à l'aide des équilibreurs de charge suivants :
Équilibreur de charge réseau interne à stratégie directe dans un réseau VPC de producteur de services.
Équilibreur de charge d'application interne régional dans un réseau VPC de producteur de services.
Transfert de protocole interne dans un réseau VPC de producteur de services.
Équilibreur de charge réseau proxy interne régional dans un réseau VPC de producteur de services. Les backends peuvent être situés dans Google Cloud, dans d'autres clouds, dans un environnement sur site ou une combinaison de ces emplacements.
Pour en savoir plus sur les configurations compatibles avec chaque type d'équilibreur de charge, consultez la section Fonctionnalités et compatibilité.
Vous pouvez également publier un service hébergé sur un équilibreur de charge réseau interne à stratégie directe sur Google Kubernetes Engine. Cette configuration, y compris la configuration de l'équilibreur de charge et du rattachement de service, est décrite dans la section Créer un équilibreur de charge interne à stratégie directe avec Private Service Connect de la documentation GKE.
Créer un sous-réseau pour Private Service Connect
Créez un ou plusieurs sous-réseaux dédiés à utiliser avec Private Service Connect. Si vous utilisez Google Cloud Console pour publier un service, vous pouvez créer les sous-réseaux pendant cette procédure.
Si vous devez rendre d'autres adresses IP disponibles pour un service existant, consultez la section Ajouter ou supprimer des sous-réseaux d'un service publié.
Vous pouvez aussi créer un sous-réseau Private Service Connect dans un projet hôte de VPC partagé.
Créez le sous-réseau dans la même région que l'équilibreur de charge du service.
Vous ne pouvez pas convertir un sous-réseau standard en sous-réseau Private Service Connect.
Console
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Cliquez sur le nom d'un réseau VPC pour afficher la page des détails du réseau VPC.
Cliquez sur Ajouter un sous-réseau. Dans le panneau qui apparaît :
- Indiquez un Nom.
- Sélectionnez une Région.
- Dans la section Objectif, sélectionnez Private Service Connect.
- Saisissez une plage d'adresses IP. Exemple :
10.10.10.0/24
- Cliquez sur Ajouter.
gcloud
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK_NAME --region=REGION \ --range=SUBNET_RANGE --purpose=PRIVATE_SERVICE_CONNECT
Remplacez l'élément suivant :
SUBNET_NAME
: nom à attribuer au sous-réseau.NETWORK_NAME
: nom du VPC pour le nouveau sous-réseau.REGION
: région du nouveau sous-réseau. Il doit s'agir de la même région que celle du service que vous publiez.SUBNET_RANGE
: plage d'adresses IP à utiliser pour le sous-réseau. Exemple :10.10.10.0/24
API
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "SUBNET_RANGE", "name": "SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "purpose": "PRIVATE_SERVICE_CONNECT", }
Remplacez l'élément suivant :
PROJECT_ID
: projet du sous-réseau.REGION
: région du nouveau sous-réseau. Il doit s'agir de la même région que celle du service que vous publiez.SUBNET_RANGE
: plage d'adresses IP à utiliser pour le sous-réseau. Par exemple,10.10.10.0/24
.SUBNET_NAME
: nom à attribuer au sous-réseau.NETWORK_NAME
: nom du réseau VPC pour le nouveau sous-réseau.
Configurer des règles de pare-feu
Configurez des règles de pare-feu pour autoriser le trafic entre les points de terminaison ou les backends, et le rattachement de service. Les requêtes des clients proviennent de différents emplacements en fonction du type Private Service Connect.
Type Private Service Connect | Plages d'adresses IP pour le trafic client | Détails |
---|---|---|
Point de terminaison (basé sur une règle de transfert) | Les plages d'adresses IP des sous-réseaux Private Service Connect associés à ce service. | Si vous utilisez le réseau par défaut, la règle default-allow-internal préremplie autorise ce trafic, sauf si une règle de priorité plus élevée la bloque. |
Backend (basé sur un équilibreur de charge d'application externe global) |
|
Les équilibreurs de charge d'application externes globaux sont mis en œuvre sur GFE (Google Front End), qui utilise ces plages d'adresses IP. |
Si la configuration de votre pare-feu n'autorise pas déjà le trafic du type de point de terminaison approprié, configurez des règles de pare-feu pour l'autoriser.
L'exemple de configuration suivant vous permet de créer des règles de pare-feu VPC afin d'autoriser le trafic provenant des plages d'adresses IP clientes vers les VM de backend dans l'équilibreur de charge du service producteur. Cette configuration suppose que les VM de backend ont été configurées avec un tag réseau.
Exemple de règle d'entrée :
gcloud compute firewall-rules create NAME \ --network=NETWORK_NAME \ --direction=ingress \ --action=allow \ --target-tags=TAG \ --source-ranges=CLIENT_IP_RANGES_LIST \ --rules=RULES_LIST
Remplacez les éléments suivants :
NAME
: nom de la règle de pare-feu.NETWORK_NAME
: réseau qui contient le service et le sous-réseau Private Service Connect.TAG
: tag cible qui est appliqué aux VM de backend dans l'équilibreur de charge du service producteur.CLIENT_IP_RANGES_LIST
: plages d'adresses IP d'où provient le trafic client. Pour plus d'informations, consultez le tableau précédent.RULES_LIST
: liste de protocoles et ports de destination séparés par une virgule et auxquels la règle s'applique. Exemple :tcp,udp
.
Exemple de règle de sortie :
gcloud compute firewall-rules create NAME \ --network=NETWORK_NAME \ --direction=egress \ --action=allow \ --target-tags=TAG \ --destination-ranges=CLIENT_IP_RANGES_LIST \ --rules=RULES_LIST
Remplacez les éléments suivants :
NAME
: nom de la règle de pare-feu.NETWORK_NAME
: réseau qui contient le service et le sous-réseau Private Service Connect.TAG
: tag cible qui est appliqué aux VM de backend dans l'équilibreur de charge du service producteur.CLIENT_IP_RANGES_LIST
: plages d'adresses IP d'où provient le trafic client. Pour plus d'informations, consultez le tableau précédent.RULES_LIST
: liste de protocoles et ports de destination séparés par une virgule et auxquels la règle s'applique. Exemple :tcp,udp
.
Pour en savoir plus sur la configuration des règles de pare-feu VPC, consultez la page Règles de pare-feu VPC. Pour configurer des règles de pare-feu hiérarchiques afin d'autoriser ce trafic, consultez la page Stratégies de pare-feu hiérarchiques.
Publier un service
Pour publier un service, vous devez créer un rattachement de service. Vous pouvez rendre le service disponible de deux manières :
- Vous pouvez publier un service avec approbation automatique.
- Vous pouvez publier un service avec approbation explicite.
Créez le rattachement de service dans la même région que l'équilibreur de charge du service.
Chaque rattachement de service peut pointer vers un ou plusieurs sous-réseaux Private Service Connect, mais un sous-réseau Private Service Connect ne peut pas être utilisé dans plusieurs rattachements de service.
Publier un service avec approbation automatique
Suivez ces instructions pour publier un service et autoriser automatiquement tous les clients à se connecter à ce service. Si vous souhaitez approuver explicitement les connexions client, consultez la section Publier un service avec approbation explicite.
Lorsque vous publiez un service, vous créez un rattachement de service. Les clients de services utilisent les détails du rattachement de service pour se connecter à votre service.
Si vous souhaitez afficher les informations de connexion client, vous pouvez activer le protocole PROXY sur les services compatibles. Pour en savoir plus sur les services compatibles, consultez la page Fonctionnalités et compatibilité. Pour en savoir plus sur le protocole PROXY, consultez la section Afficher les informations de connexion client.
Console
Dans Google Cloud Console, accédez à la page Private Service Connect.
Cliquez sur l'onglet Services publiés.
Cliquez sur Publier le service.
Sélectionnez le type d'équilibreur de charge pour le service que vous souhaitez publier :
- Équilibreur de charge réseau passthrough interne
- Équilibreur de charge réseau proxy interne régional
- Équilibreur de charge d'application interne régional
Sélectionnez l'équilibreur de charge interne qui héberge le service que vous souhaitez publier.
Les administrateurs de projet de service peuvent sélectionner un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
Les champs de réseau et de région sont renseignés avec les détails de l'équilibreur de charge interne sélectionné.
Si vous y êtes invité, sélectionnez la règle de transfert associée au service que vous souhaitez publier.
Dans le champ Nom du service, saisissez le nom du rattachement de service.
Sélectionnez un ou plusieurs sous-réseaux Private Service Connect pour le service. La liste contient les sous-réseaux du réseau VPC de l'équilibreur de charge interne sélectionné, y compris les sous-réseaux qui sont partagés avec un projet de service via un VPC partagé.
Si votre rattachement de service utilise un équilibreur de charge interne avec une adresse IP provenant d'un réseau VPC partagé, vous devez sélectionner un sous-réseau partagé dans le même réseau VPC partagé.
Si vous souhaitez afficher les informations de connexion client, sélectionnez Utiliser le protocole PROXY.
Si vous souhaitez configurer un nom de domaine, saisissez un nom de domaine, incluant un point final.
Le format recommandé pour le nom de domaine est
REGION.p.DOMAIN.
.Vous devez détenir le nom de domaine. Pour en savoir plus, consultez la section Configuration DNS.
Sélectionnez Accepter automatiquement les connexions.
Cliquez sur Ajouter un service.
gcloud
gcloud compute service-attachments create ATTACHMENT_NAME \ --region=REGION \ --producer-forwarding-rule=RULE_NAME \ --connection-preference=ACCEPT_AUTOMATIC \ --nat-subnets=PSC_SUBNET_LIST \ [ --enable-proxy-protocol ] \ [ --domain-names=DOMAIN_NAME ]
Remplacez les éléments suivants :
ATTACHMENT_NAME
: nom à attribuer au rattachement de service.REGION
: région du nouveau rattachement de service. Il doit s'agir de la même région que le service que vous publiez.RULE_NAME
: nom de la règle de transfert associée au service que vous publiez.Les administrateurs de projet de service peuvent spécifier la règle de transfert d'un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
PSC_SUBNET_LIST
: liste d'un ou de plusieurs noms séparés par une virgule de sous-réseaux à utiliser avec ce rattachement de service.Si vous créez un rattachement de service avec une règle de transfert ayant une adresse IP issue d'un réseau VPC partagé, utilisez des sous-réseaux partagés du même réseau VPC partagé. Pour chaque sous-réseau partagé, spécifiez l'URI complet de la ressource (par exemple,
--nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
).DOMAIN_NAME
: nom de domaine DNS du service, y compris un point final. Format recommandé :REGION.p.DOMAIN.
Pour en savoir plus, consultez la section Configurer un DNS.
API
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments { "name": "ATTACHMENT_NAME", "connectionPreference": "ACCEPT_AUTOMATIC", "targetService": "RULE_URI", "enableProxyProtocol": false, "natSubnets": [ "PSC_SUBNET_1_URI", "PSC_SUBNET_2_URI", ], "domainNames": [ "DOMAIN_NAME", ] }
Remplacez l'élément suivant :
PROJECT_ID
: projet pour le rattachement de service.REGION
: région du nouveau rattachement de service. Il doit s'agir de la même région que le service que vous publiez.ATTACHMENT_NAME
: nom à attribuer au rattachement de service.RULE_URI
: URI de la règle de transfert associée au service que vous publiez.Les administrateurs de projet de service peuvent spécifier la règle de transfert d'un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
PSC_SUBNET_1_URI
etPSC_SUBNET_2_URI
: URI de sous-réseau à utiliser pour ce rattachement de service. Vous pouvez spécifier un ou plusieurs sous-réseaux par URI.Si vous créez un rattachement de service avec une règle de transfert ayant une adresse IP issue d'un réseau VPC partagé, utilisez des sous-réseaux partagés du même réseau VPC partagé.
DOMAIN_NAME
: nom de domaine DNS du service, y compris un point final. Format recommandé :REGION.p.DOMAIN.
Pour en savoir plus, consultez la section Configurer un DNS.
Publier un service avec approbation explicite
Suivez ces instructions pour publier un service si vous souhaitez approuver explicitement les clients avant qu'ils puissent se connecter au service. Si vous souhaitez approuver automatiquement les connexions client, consultez la page Publier un service avec approbation automatique du projet.
Lorsque vous publiez un service, vous créez un rattachement de service. Les clients de services utilisent les détails du rattachement de service pour se connecter à votre service.
Chaque rattachement de service possède une liste d'acceptation client et une liste de refus client, qui permettent de déterminer les points de terminaison pouvant se connecter au service. Un rattachement de service donné peut utiliser les projets ou les réseaux de ces listes, mais pas les deux. Il n'est pas possible de spécifier des clients par dossier.
Si vous passez de l'acceptation de clients basée sur un projet à l'acceptation de clients basée sur un réseau, ou inversement, procédez comme suit :
- Remplacez tous les projets ou réseaux approuvés en une seule opération.
- Si vous devez fournir le même accès qu'auparavant, assurez-vous que les nouvelles listes d'acceptation et de rejet sont équivalentes aux précédentes.
Si vous ajoutez simultanément un projet ou un réseau à la liste d'acceptation et à la liste de refus, les requêtes de connexion de ce projet ou réseau sont refusées.
Console
Dans Google Cloud Console, accédez à la page Private Service Connect.
Cliquez sur l'onglet Services publiés.
Cliquez sur Publier le service.
Sélectionnez le type d'équilibreur de charge : Équilibreur de charge TCP/UDP interne ou Équilibreur de charge HTTP(S) interne.
Sélectionnez l'équilibreur de charge interne qui héberge le service que vous souhaitez publier.
Les administrateurs de projet de service peuvent sélectionner un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
Les champs de réseau et de région sont renseignés avec les détails de l'équilibreur de charge interne sélectionné.
Si vous y êtes invité, sélectionnez la règle de transfert associée au service que vous souhaitez publier.
Dans le champ Nom du service, saisissez le nom du rattachement de service.
Sélectionnez un ou plusieurs sous-réseaux Private Service Connect pour le service. La liste contient les sous-réseaux du réseau VPC de l'équilibreur de charge interne sélectionné, y compris les sous-réseaux qui sont partagés avec un projet de service via un VPC partagé.
Si votre rattachement de service utilise un équilibreur de charge interne avec une adresse IP provenant d'un réseau VPC partagé, vous devez sélectionner un sous-réseau partagé dans le même réseau VPC partagé.
Si vous souhaitez afficher les informations sur les connexions client, cochez la case Protocoles.
Si vous souhaitez configurer un nom de domaine, saisissez un nom de domaine, incluant un point final.
Le format recommandé pour le nom de domaine est
REGION.p.DOMAIN.
.Vous devez détenir le nom de domaine. Pour en savoir plus, consultez la section Configuration DNS.
Si vous souhaitez accepter les connexions pour les projets sélectionnés, sélectionnez Accepter les connexions pour les projets sélectionnés.
- Pour chaque projet à partir duquel vous souhaitez accepter les connexions, procédez comme suit :
- Cliquez sur Ajouter un projet accepté, puis saisissez les informations suivantes :
- ID ou numéro du projet à partir duquel vous souhaitez accepter les connexions.
- Une limite de connexion pour spécifier le nombre maximal de points de terminaison du projet spécifié pouvant se connecter.
- Cliquez sur Ajouter un projet accepté, puis saisissez les informations suivantes :
- Facultatif : pour chaque projet pour lequel vous souhaitez explicitement refuser les connexions, cliquez sur Ajouter un projet refusé, puis saisissez l'ID ou le numéro du projet.
- Pour chaque projet à partir duquel vous souhaitez accepter les connexions, procédez comme suit :
Si vous souhaitez accepter les connexions des réseaux sélectionnés, sélectionnez Accepter les connexions pour les réseaux sélectionnés.
- Pour chaque réseau à partir duquel vous souhaitez accepter les connexions, procédez comme suit :
- Cliquez sur Ajouter un réseau accepté, puis saisissez les informations suivantes :
- ID ou numéro de projet du projet parent du réseau à partir duquel vous souhaitez accepter les connexions.
- Nom du réseau à partir duquel vous souhaitez accepter les connexions.
- Une limite de connexion pour spécifier le nombre maximal de points de terminaison du réseau spécifié pouvant se connecter.
- Cliquez sur Ajouter un réseau accepté, puis saisissez les informations suivantes :
- Facultatif : pour chaque réseau dont vous souhaitez rejeter explicitement les connexions, cliquez sur Ajouter un réseau refusé, puis saisissez l'ID ou le numéro du projet parent du réseau et le nom du réseau.
- Pour chaque réseau à partir duquel vous souhaitez accepter les connexions, procédez comme suit :
Si vous souhaitez désactiver le rapprochement des connexions, décochez la case Activer le rapprochement des connexions.
Cliquez sur Ajouter un service.
gcloud
gcloud compute service-attachments create ATTACHMENT_NAME \ --region=REGION \ --producer-forwarding-rule=RULE_NAME \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2 \ --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2 \ --nat-subnets=PSC_SUBNET_LIST \ [--enable-proxy-protocol ] \ [--domain-names=DOMAIN_NAME] \ [--reconcile-connections]
Remplacez les éléments suivants :
ATTACHMENT_NAME
: nom à attribuer au rattachement de service.REGION
: région du nouveau rattachement de service. Il doit s'agir de la même région que le service que vous publiez.RULE_NAME
: nom de la règle de transfert associée au service que vous publiez.Les administrateurs de projet de service peuvent spécifier la règle de transfert d'un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
ACCEPTED_PROJECT_OR_NETWORK_1
etACCEPTED_PROJECT_OR_NETWORK_2
: ID de projet, noms de projet ou URI de réseau à accepter.--consumer-accept-list
est facultatif et peut contenir un ou plusieurs projets ou réseaux, mais pas une combinaison des deux types.LIMIT_1
etLIMIT_2
: limites de connexion pour les projets ou les réseaux. La limite de connexion est le nombre de points de terminaison ou de backends clients pouvant se connecter à ce service. Une limite de connexion doit être configurée pour chaque projet ou réseau accepté.REJECTED_PROJECT_OR_NETWORK_1
etREJECTED_PROJECT_OR_NETWORK_2
: ID de projet, noms de projet ou URI réseau à rejeter.--consumer-reject-list
est facultatif et peut contenir un ou plusieurs projets ou réseaux, mais pas une combinaison des deux types.PSC_SUBNET_LIST
: liste d'un ou de plusieurs noms séparés par une virgule de sous-réseaux à utiliser avec ce rattachement de service.Si vous créez un rattachement de service avec une règle de transfert ayant une adresse IP issue d'un réseau VPC partagé, utilisez des sous-réseaux partagés du même réseau VPC partagé. Pour chaque sous-réseau partagé, spécifiez l'URI complet de la ressource (par exemple,
--nat-subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
).DOMAIN_NAME
: nom de domaine DNS du service, y compris un point final. Format recommandé :REGION.p.DOMAIN.
Pour en savoir plus, consultez la section Configurer un DNS.
API
Pour publier un service et approuver explicitement les clients en fonction du projet, envoyez la requête suivante :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments { "name": "ATTACHMENT_NAME", "region": "REGION", "connectionPreference": "ACCEPT_MANUAL", "targetService": "RULE_URI", "enableProxyProtocol": false, "natSubnets": [ "PSC_SUBNET_1_URI", "PSC_SUBNET_2_URI" ], "consumerRejectLists": [ "REJECTED_PROJECT_1", "REJECTED_PROJECT_2" ], "consumerAcceptLists": [ { "projectIdOrNum": "ACCEPTED_PROJECT_1", "connectionLimit": "LIMIT_1" }, { "projectIdOrNum": "ACCEPTED_PROJECT_2", "connectionLimit": "LIMIT_2" } ], "domainNames": [ "DOMAIN_NAME" ] }
Remplacez les éléments suivants :
PROJECT_ID
: projet pour le rattachement de service.REGION
: région du rattachement de service.ATTACHMENT_NAME
: nom à attribuer au rattachement de service.RULE_URI
: URI de la règle de transfert associée au service que vous publiez.Les administrateurs de projet de service peuvent spécifier la règle de transfert d'un équilibreur de charge interne disposant d'une adresse IP provenant d'un réseau VPC partagé. Pour en savoir plus, consultez la section VPC partagé.
PSC_SUBNET_1_URI
etPSC_SUBNET_2_URI
: URI de sous-réseau à utiliser pour ce rattachement de service. Vous pouvez spécifier un ou plusieurs sous-réseaux par URI.Si vous créez un rattachement de service avec une règle de transfert ayant une adresse IP issue d'un réseau VPC partagé, utilisez des sous-réseaux partagés du même réseau VPC partagé.
REJECTED_PROJECT_1
etREJECTED_PROJECT_2
: ID ou nombre de projets à rejeter.consumerRejectLists
est facultatif et peut contenir un ou plusieurs projets.ACCEPTED_PROJECT_1
etACCEPTED_PROJECT_2
: ID ou numéros des projets à accepter.consumerAcceptLists
est facultatif et peut contenir un ou plusieurs projets.LIMIT_1
etLIMIT_2
: limites de connexion pour les projets. La limite de connexion est le nombre de points de terminaison ou de backends clients pouvant se connecter à ce service. Une limite de connexion doit être configurée pour chaque projet accepté.DOMAIN_NAME
: nom de domaine DNS du service, y compris un point final. Format recommandé :REGION.p.DOMAIN.
. Pour en savoir plus, consultez la section Configuration DNS.
Pour publier un service et approuver explicitement les clients en fonction du réseau VPC, envoyez la requête suivante :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments { "name": "ATTACHMENT_NAME", "region": "REGION", "connectionPreference": "ACCEPT_MANUAL", "targetService": "RULE_URI", "enableProxyProtocol": false, "natSubnets": [ "PSC_SUBNET_1_URI", "PSC_SUBNET_2_URI" ], "consumerRejectLists": [ "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1", "projects/REJECTED_PROJECT_ID_2/global/networks/REJECTED_NETWORK_2" ], "consumerAcceptLists": [ { "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/networks/ACCEPTED_NETWORK_1", "connectionLimit": "LIMIT_1" }, { "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/networks/ACCEPTED_NETWORK_2", "connectionLimit": "LIMIT_2" } ], "domainNames": [ "DOMAIN_NAME" ] }
Remplacez les éléments suivants :
REJECTED_PROJECT_ID_1
etREJECTED_PROJECT_ID_2
: ID des projets parents des réseaux que vous souhaitez rejeter.consumerRejectLists
est facultatif et peut contenir un ou plusieurs réseaux.REJECTED_NETWORK_1
etREJECTED_NETWORK_2
: noms des réseaux que vous souhaitez rejeter.ACCEPTED_PROJECT_ID_1
etACCEPTED_PROJECT_ID_2
: ID des projets parents des réseaux que vous souhaitez accepter.consumerAcceptLists
est facultatif et peut contenir un ou plusieurs réseaux.ACCEPTED_NETWORK_1
etACCEPTED_NETWORK_2
: noms des réseaux que vous souhaitez accepter.LIMIT_1
etLIMIT_2
: limites de connexion pour les projets. La limite de connexion est le nombre de points de terminaison ou de backends clients pouvant se connecter à ce service. Une limite de connexion doit être configurée pour chaque projet accepté.
Pour publier un service avec le rapprochement des connexions activé, envoyez une requête semblable aux requêtes précédentes, mais incluez le champ suivant :
{ ... "reconcileConnections": true ... }
Afficher les informations de connexion client
Par défaut, Private Service Connect traduit l'adresse IP source du client en adresse dans l'un des sous-réseaux Private Service Connect du réseau VPC du producteur de services. Si vous souhaitez voir l'adresse IP source d'origine du client, activez le protocole PROXY.
Certains services ne sont pas compatibles avec le protocole PROXY. Pour en savoir plus, consultez la section Fonctionnalités et compatibilité.
Si le protocole PROXY est activé, vous pouvez obtenir l'adresse IP source et l'ID de connexion PSC (pscConnectionId
) du client à partir de l'en-tête de protocole PROXY.
Lorsque vous activez le protocole de PROXY pour un rattachement de service, la modification ne s'applique qu'aux nouvelles connexions. Les connexions existantes n'incluent pas l'en-tête du protocole de PROXY.
Si vous activez le protocole PROXY, consultez la documentation de votre logiciel serveur Web backend pour obtenir des informations sur l'analyse et le traitement des en-têtes de protocole PROXY entrants dans les charges utiles TCP de connexion client. Si le protocole PROXY est activé sur le rattachement de service, mais que le serveur Web de backend n'est pas configuré pour traiter les en-têtes de protocole PROXY, les requêtes Web peuvent être mal formulées. Si les requêtes sont mal formulées, le serveur ne peut pas les interpréter.
L'ID de connexion PSC (pscConnectionId
) est encodé dans l'en-tête de protocole de PROXY au format TLV (Type-Length-Value).
Champ | Longueur du champ | Valeur du champ |
---|---|---|
Type | 1 octet | 0xE0 (PP2_TYPE_GCP)
|
Durée | 2 octets | 0x8 (8 octets) |
Valeur | 8 octets | ID de connexion PSC (pscConnectionId ) de 8 octets dans l'ordre réseau |
Vous pouvez afficher l'ID de connexion PSC (pscConnectionId
) de 8 octets en consultant la règle de transfert du client ou le rattachement de service du producteur.
La valeur pscConnectionId
est unique pour toutes les connexions actives à un moment donné. Toutefois, au fil du temps, un pscConnectionId
peut être réutilisé dans les scénarios suivants :
Dans un réseau VPC donné, si vous supprimez un point de terminaison (règle de transfert) et que vous créez un point de terminaison utilisant la même adresse IP, il est possible d'utiliser le même
pscConnectionId
.Si vous supprimez un réseau VPC contenant des points de terminaison (règles de transfert), après un délai d'attente de sept jours, le
pscConnectionId
utilisé pour ces points de terminaison peut être utilisé pour un autre point de terminaison dans un autre réseau VPC.
Vous pouvez utiliser le pscConnectionId
pour le débogage et pour suivre la source des paquets.
De plus, un ID de rattachement PSC de 16 octets est disponible dans le rattachement de service producteur. L'ID de rattachement PSC est un ID unique qui identifie un rattachement de service Private Service Connect. Vous pouvez utiliser l'ID de rattachement PSC pour plus de visibilité et pour le débogage. L'ID de rattachement PSC n'est pas inclus dans l'en-tête de protocole PROXY.
Gérer les requêtes d'accès à un service publié
Si vous disposez d'un service publié avec une approbation explicite, vous pouvez accepter ou refuser les demandes de connexion de projets ou de réseaux clients. Pour en savoir plus, consultez la section Gérer les requêtes d'accès à un service publié.
Vous pouvez basculer entre l'acceptation automatique du projet et l'acceptation explicite du projet pour un service publié. Pour en savoir plus, consultez la page Modifier la préférence de connexion d'un service publié.
Ajouter ou supprimer des sous-réseaux d'un service publié
Vous pouvez ajouter ou supprimer des sous-réseaux d'un service publié. Pour en savoir plus, consultez la section Ajouter ou supprimer des sous-réseaux d'un service publié.
Répertorier les services publiés
Vous pouvez répertorier tous les services.
Console
Dans Google Cloud Console, accédez à la page Private Service Connect.
Cliquez sur l'onglet Services publiés.
Les rattachements de service Private Service Connect s'affichent.
gcloud
Répertorier les rattachements de service.
gcloud compute service-attachments list [--regions=REGION_LIST]
Remplacez l'élément suivant :
REGION_LIST
: liste d'une ou de plusieurs régions dont vous souhaitez afficher les rattachements de service, séparées par une virgule. Par exemple,us-central1
ouus-west1,us-central1
.
API
Vous pouvez afficher tous les rattachements de service dans une région donnée ou dans toutes les régions.
Afficher tous les rattachements de service d'une région :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments
Afficher tous les rattachements de service dans toutes les régions :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/serviceAttachments
Remplacez l'élément suivant :
PROJECT_ID
: projet pour le rattachement de service.REGION
: région du rattachement de service.ATTACHMENT_NAME
: nom du rattachement de service.
Afficher les détails d'un service publié
Vous pouvez afficher tous les détails de configuration d'un service publié.
Vous pouvez afficher certains détails de configuration dans la console Google Cloud, par exemple l'URI du rattachement de service dont les clients du service ont besoin pour se connecter au service. Pour afficher tous les détails, y compris les valeurs pscConnectionId
des clients du rattachement de service, utilisez Google Cloud CLI ou l'API.
Console
Vous pouvez afficher les détails d'un service publié. Le champ Rattachement de service contient l'URI du rattachement de service.
Dans Google Cloud Console, accédez à la page Private Service Connect.
Cliquez sur l'onglet Services publiés.
Cliquez sur le service que vous souhaitez afficher.
gcloud
Vous pouvez afficher les détails d'un service publié. Le champ selfLink
contient l'URI du rattachement de service.
gcloud compute service-attachments describe \ ATTACHMENT_NAME --region=REGION
API
Vous pouvez afficher les détails d'un service publié. Le champ selfLink
contient l'URI du rattachement de service.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
Remplacez l'élément suivant :
PROJECT_ID
: projet pour le rattachement de service.REGION
: région du rattachement de service.ATTACHMENT_NAME
: nom du rattachement de service.
Supprimer un service publié
Vous pouvez supprimer un service publié, même s'il existe des connexions client au rattachement de service. La suppression du service publié n'entraîne que la suppression du rattachement de service. L'équilibreur de charge associé n'est pas supprimé. Lorsque vous supprimez un service publié, cela entraîne les points suivants :
Le trafic provenant des points de terminaison (basés sur des règles de transfert) n'est plus envoyé à l'équilibreur de charge.
Le trafic provenant des backends (basés sur des équilibreurs de charge d'application externes globaux) est envoyé à l'équilibreur de charge jusqu'à ce que l'équilibreur de charge soit supprimé.
Console
Dans Google Cloud Console, accédez à la page Private Service Connect.
Cliquez sur l'onglet Services publiés.
Cliquez sur le service que vous souhaitez supprimer.
Cliquez sur Supprimer.
gcloud
gcloud compute service-attachments delete \ ATTACHMENT_NAME --region=REGION
API
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
Remplacez l'élément suivant :
PROJECT_ID
: projet pour le rattachement de service.REGION
: région du rattachement de service.ATTACHMENT_NAME
: nom du rattachement de service.
Problèmes connus
Déconnexions après la mise à niveau du fournisseur Google pour Terraform
Si vous avez utilisé le fournisseur Google pour Terraform avec des versions antérieures à la version 4.76.0 pour créer des rattachements de service, ne passez pas aux versions 4.76.0 à 4.81.x. Lorsque vous exécutez terraform apply
après la mise à niveau vers les versions 4.76.0 à 4.81.x, Terraform peut supprimer et recréer involontairement les rattachements de service, et fermer les connexions Private Service Connect existantes. Les rattachements de service qui sont recréés ne rétablissent pas automatiquement les connexions Private Service Connect.
Si vous passez à la version 4.82.0, puis exécutez terraform apply
, vos rattachements de service ne sont pas supprimés, mais le paramètre rapprocher les connexions est défini sur "true". Si ce paramètre était précédemment défini sur "false", certaines connexions Private Service Connect risquent d'être fermées.
Mise à niveau vers les versions 4.76.0 à 4.81.x du fournisseur Google. Dans ce scénario, la sortie de la commande
terraform plan
inclut les éléments suivants :-/+ resource "google_compute_service_attachment" "SERVICE_NAME" { ... ~ reconcile_connections = false -> true # forces replacement ...
Appliquez les explications données dans la section Solution pour éviter ce problème.
Mise à niveau vers la version 4.82.0 du fournisseur Google. Dans ce scénario, la sortie de la commande
terraform plan
inclut les éléments suivants :~ reconcile_connections = false -> true
Si vous ignorez cet avertissement et appliquez les modifications, Terraform met à jour le rattachement de service en activant le rapprochement des connexions. Le fait de passer de
false
àtrue
peut fermer certaines connexions existantes, selon leur état. Pour en savoir plus, consultez la section Rapprochement des connexions.Appliquez les explications données dans la section Solution pour éviter ce problème.
Solution
Nous vous recommandons de mettre à niveau le fournisseur Google pour Terraform vers la version 4.82.0 ou ultérieure. Cette version empêche la suppression involontaire des rattachements de service, et leur recréation.
Si vous ne pouvez pas effectuer la mise à niveau immédiatement, ou si vous souhaitez empêcher Terraform de modifier le paramètre de rapprochement des connexions, mettez à jour votre configuration Terraform afin de définir explicitement ce paramètre.
Affichez la configuration détaillée du rattachement de service et notez l'état du paramètre
reconcileConnections
.$ gcloud compute service-attachments describe SERVICE_NAME --region=REGION
La sortie inclut le champ
reconcileConnections
, qui peut être défini sur "true" ou "false".reconcileConnections: false
Mettez à jour votre fichier de configuration Terraform pour utiliser explicitement le même paramètre que celui utilisé sur le rattachement de service.
resource "google_compute_service_attachment" "SERVICE_NAME" { ... reconcile_connections = false }
Pour obtenir un exemple de configuration, consultez l'exemple Rapprochement de connexions pour des rattachements de service sur GitHub.
Mises à jour correctives des rattachements de service
Lorsque vous mettez à jour un rattachement de service à l'aide de l'API PATCH
, vous devez indiquer tous les champs du rattachement de service dans le corps de la requête, et pas seulement les champs que vous mettez à jour. Utilisez serviceAttachments.get
pour récupérer tous les champs.
Dépannage
Erreur lors de la mise à jour d'un rattachement de service
Si le message d'erreur suivant s'affiche lorsque vous mettez à jour un rattachement de service, la liste d'acceptation ou de rejet peut inclure les projets supprimés : The
resource PROJECT was not found
.
Retirez les projets supprimés de la configuration du rattachement de service pour résoudre le problème.
Utilisez la commande
gcloud compute service-attachments describe
pour afficher la configuration du rattachement de service que vous souhaitez modifier.Pour générer la liste d'acceptation dans un format que vous pourrez utiliser ultérieurement pour mettre à jour le rattachement de service, procédez comme suit :
gcloud compute service-attachments describe ATTACHMENT_NAME \ --region=REGION --flatten="consumerAcceptLists[]" \ --format="csv[no-heading,separator='='](consumerAcceptLists.projectIdOrNum,consumerAcceptLists.connectionLimit)" \ | xargs | sed -e 's/ /,/g'
La sortie de la liste d'acceptation ressemble à ceci :
PROJECT_1=LIMIT_1,PROJECT_2=LIMIT_2,PROJECT_3=LIMIT_3
Pour générer la liste de rejet dans un format que vous pourrez utiliser ultérieurement pour mettre à jour le rattachement de service, procédez comme suit :
gcloud compute service-attachments describe ATTACHMENT_NAME \ --region=REGION \ --format="value[delimiter=','](consumerRejectLists[])"
La liste de rejet ressemble à ce qui suit :
PROJECT_1,PROJECT_2,PROJECT_3
Modifiez le résultat de la commande pour retirer les projets supprimés de la liste d'acceptation et de la liste de rejet.
Mettez à jour le rattachement de service pour retirer les projets supprimés.
Pour mettre à jour la liste d'acceptation, procédez comme suit :
gcloud compute service-attachments update ATTACHMENT_NAME \ --region=REGION \ --consumer-accept-list=UPDATED_ACCEPT_LIST
Pour mettre à jour la liste de refus, procédez comme suit :
gcloud compute service-attachments update ATTACHMENT_NAME \ --region=REGION \ --consumer-reject-list=UPDATED_REJECT_LIST
La connectivité n'est pas établie.
Si un client a créé un point de terminaison ou un backend qui fait référence à votre rattachement de service, mais que la connectivité n'est pas établie, vérifiez l'état de connexion du rattachement de service. L'état de la connexion peut indiquer les étapes à suivre pour résoudre le problème.
Délai d'expiration des connexions client
Si les connexions client dépassent le délai d'expiration, vérifiez si votre service nécessite des connexions de longue durée. Le délai d'inactivité d'une connexion TCP établie pour la NAT Private Service Connect est de 20 minutes. Si votre service nécessite un délai avant expiration plus long, vous devrez peut-être apporter des modifications à la configuration pour vous assurer que les connexions n'expirent pas. Pour en savoir plus, consultez la section Spécifications NAT.