Créer des services de mappage de port
Cette page explique comment les producteurs de services peuvent publier des services qui utilisent le mappage de port Private Service Connect.
Le mappage de ports Private Service Connect permet aux clients consommateurs de communiquer de manière privée avec des ports de service spécifiques sur des VM de producteurs spécifiques via un seul point de terminaison Private Service Connect.
Avant de commencer
- Vous devez activer l'API Compute Engine dans votre projet.
- Vous devez créer des VM pour chacun des points de terminaison de réseau que vous souhaitez associer au NEG de mappage de port. Les VM doivent toutes se trouver dans la même région.
- Consultez la section À propos des services publiés.
- Consultez la section À propos du mappage de port Private Service Connect.
Rôles requis
Pour obtenir les autorisations nécessaires pour préparer la publication d'un service avec le mappage de port Private Service Connect, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur le projet de producteur :
-
Administrateur de l'équilibreur de charge Compute (
roles/compute.loadBalancerAdmin
) -
Administrateur de réseaux Compute (
roles/compute.networkAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Créer et publier un service de mappage de port
Les services de mappage de port ont des configurations similaires à celles des équilibreurs de charge réseau passthrough internes, mais le trafic n'est pas équilibré. Pour créer et publier un service de mappage de port, procédez comme suit :
- Créez un NEG de mappage de port
- Ajoutez des points de terminaison du réseau au NEG de mappage de port
- Créez un service de mappage de port
- Publiez le service de mappage de port
Créer un NEG de mappage de port
Un NEG de mappage de port est un NEG régional dont le type de point de terminaison du réseau est GCE_VM_IP_PORTMAP
. Il n'est pas possible de modifier le type d'un NEG de mappage de port après sa création.
Lorsque vous créez un NEG de mappage de port, vous choisissez un sous-réseau. Les points de terminaison du réseau que vous associez au NEG de mappage de port doivent disposer d'une interface réseau principale dans ce sous-réseau.
Console
Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.
Accéder à la page "Groupes de points de terminaison du réseau"
Cliquez sur Créer un groupe de points de terminaison du réseau.
Saisissez un nom.
Cliquez sur Type de groupe de points de terminaison du réseau, puis sélectionnez NEG de mappage de port (régional).
Sélectionnez une Région.
Sélectionnez un réseau.
Sélectionnez un sous-réseau.
Cliquez sur Créer.
gcloud
Utilisez la commande network-endpoints-groups create
.
gcloud compute network-endpoint-groups create NEG \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --network-endpoint-type=GCE_VM_IP_PORTMAP
Remplacez les éléments suivants :
NEG
: nom du NEG de mappage de portREGION
: région du NEG de mappage de portNETWORK
: réseau VPC du NEG de mappage de portSUBNET
: sous-réseau du NEG de mappage de port
API
Envoyez une requête POST
à la méthode regionNetworkEndpointGroups.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups { "name": "NEG", "networkEndpointType": "GCE_VM_IP_PORTMAP", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" }
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet du NEG de mappage de portREGION
: région du NEG de mappage de portNEG
: nom du NEG de mappage de portNETWORK
: réseau VPC du NEG de mappage de portSUBNET
: sous-réseau du NEG de mappage de port
Ajouter des points de terminaison du réseau au NEG de mappage de port
Créez un ou plusieurs points de terminaison du réseau avec des mappages de port, puis associez-les au NEG de mappage de port.
Les points de terminaison du réseau pour les NEG de mappage de port sont zonaux et doivent répondre aux exigences suivantes :
- Chaque point de terminaison du réseau fait référence à une VM Compute Engine disposant d'une interface réseau principale dans le même sous-réseau que le NEG de mappage de port.
- Chaque point de terminaison du réseau fait référence à un port de destination client unique.
Chaque point de terminaison du réseau doit faire référence à une combinaison unique de port de service et de VM.
Console
Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.
Accéder à la page "Groupes de points de terminaison du réseau"
Cliquez sur le nom du NEG de mappage de port que vous souhaitez mettre à jour.
Cliquez sur Ajouter des points de terminaison du réseau.
Cliquez sur Instance de VM, puis sélectionnez une VM.
Cliquez sur Port de VM 1, puis saisissez un port de service.
Cliquez sur Port client 1, puis saisissez un port de destination client.
Pour chaque point de terminaison du réseau supplémentaire que vous souhaitez ajouter, cliquez sur Ajouter un point de terminaison du réseau, puis saisissez les détails du point de terminaison du réseau.
Cliquez sur Créer.
gcloud
Utilisez la commande network-endpoint-groups update
. Incluez une option --add-endpoint
pour chaque point de terminaison du réseau que vous souhaitez associer.
gcloud compute network-endpoint-groups update NEG \ --region=REGION \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT
Remplacez les éléments suivants :
NEG
: nom du NEG de mappage de portREGION
: région du NEG de mappage de portCLIENT_DESTINATION_PORT_1
: port de destination du client du premier point de terminaison du réseauPROJECT_ID
: ID du projet du producteurZONE_1
: zone du premier point de terminaison du réseauVM_1_NAME
: nom de la VM de destination pour le premier point de terminaison du réseauVM_1_PORT
: port de service du premier point de terminaison du réseauCLIENT_DESTINATION_PORT_2
: port de destination du client du deuxième point de terminaison du réseauZONE_2
: zone du deuxième point de terminaison du réseauVM_2_NAME
: nom de la VM de destination pour le deuxième point de terminaison du réseauVM_2_PORT
: port de service du deuxième point de terminaison du réseau
API
Envoyez une requête POST
à la méthode regionNetworkEndpointGroups.attachNetworkEndpoints
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints { "networkEndpoints": [ { "clientDestinationPort":CLIENT_DESTINATION_PORT_1, "instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME", "port": SERVICE_PORT_1 }, { "clientDestinationPort": CLIENT_DESTINATION_PORT_2, "instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME", "port": SERVICE_PORT_2 } ] }
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet du producteurREGION
: région du NEG de mappage de portNEG
: nom du NEG de mappage de portCLIENT_DESTINATION_PORT_1
: port de destination du client du premier point de terminaison du réseauZONE_1
: zone du premier point de terminaison du réseauVM_1_NAME
: nom de la VM de destination pour le premier point de terminaison du réseauSERVICE_PORT_1
: port de service du premier point de terminaison du réseauCLIENT_DESTINATION_PORT_2
: port de destination du client du deuxième point de terminaison du réseauZONE_2
: zone du deuxième point de terminaison du réseauVM_2_NAME
: nom de la VM de destination pour le deuxième point de terminaison du réseauSERVICE_PORT_2
: port de service du deuxième point de terminaison du réseau
Créer un service de mappage de port
Pour créer un service de mappage de port, procédez comme suit :
Vous ne pouvez pas modifier le NEG de mappage de port associé à un service de backend après l'avoir ajouté. Toutefois, vous pouvez mettre à jour les points de terminaison du réseau du NEG de mappage de port.
Vous ne pouvez pas mettre à jour la connexion d'une règle de transfert après sa création. Si vous devez vous connecter à un autre service de backend, supprimez la règle de transfert, puis créez-en une autre.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
- Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Saisissez un nom d'équilibreur de charge.
- Sélectionnez une Région.
- Sélectionnez un réseau.
Configurer le backend
- Pour le Type de backend, sélectionnez Groupe de points de terminaison du réseau du mappage de ports.
- Sélectionnez un Groupe de points de terminaison du réseau du mappage de port.
Configuration du frontend
- Cliquez sur Configuration de l'interface.
- Facultatif : Saisissez un Nom.
- Facultatif : saisissez une Description.
- Sélectionnez un protocole.
- Sélectionnez un sous-réseau.
- Cliquez sur OK.
- Cliquez sur Créer.
gcloud
Pour créer un service de backend, utilisez la commande
backend-services create
.gcloud compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
Remplacez les éléments suivants :
SERVICE
: nom du service de backendREGION
: région du service de backendNETWORK
: réseau VPC de producteur du service de backend
Pour ajouter votre NEG de mappage de port au service de backend, utilisez la commande
backend-services add-backend
.Vous ne pouvez pas ajouter plusieurs NEG de mappage de port à un seul service de backend.
gcloud compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION
Remplacez
NEG
par le nom du NEG de mappage de port.Pour créer une règle de transfert pour votre service de mappage de port, utilisez la commande
forwarding-rules create
.La règle de transfert doit être configurée pour transférer le trafic pour tous les ports de destination du client.
gcloud compute forwarding-rules create RULE \ --load-balancing-scheme=INTERNAL \ --ip-protocol=PROTOCOL \ --network=NETWORK \ --subnet=SUBNET \ --address=IP_ADDRESS \ --ports=ALL \ --region=REGION \ --backend-service=SERVICE
Remplacez les éléments suivants :
RULE
: nom de la règle de transfert.PROTOCOL
: protocole de la règle de transfert, qui peut êtreTCP
ouUDP
SUBNET
: sous-réseau du producteur, qui doit être le même sous-réseau que celui associé au NEG de mappage de portIP_ADDRESS
: adresse IP de la règle de transfert, qui doit provenir de la plage d'adresses IP du sous-réseau du producteur
API
Pour créer un service de backend, envoyez une requête
POST
à la méthoderegionBackendServices.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet du service de backendREGION
: région du service de backendSERVICE
: nom du service de backendNETWORK
: réseau VPC du producteur
Pour ajouter votre NEG de mappage de port au service de backend, envoyez une requête
PATCH
à la méthoderegionBackendServices.patch
.Vous ne pouvez pas ajouter plusieurs NEG de mappage de port à un seul service de backend.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG" } ] }
Remplacez
NEG
par le nom de votre NEG de mappage de port.Pour créer une règle de transfert pour votre service de mappage de port, envoyez une requête
POST
à la méthodeforwardingRules.insert
.La règle de transfert doit être configurée pour transférer le trafic pour tous les ports de destination du client.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID>/regions/REGION/forwardingRules { "name": "RULE", "loadBalancingScheme": "INTERNAL", "IPProtocol": "PROTOCOL", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET", "IPAddress": "IP_ADDRESS", "allPorts": true, "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE" }
Remplacez les éléments suivants :
RULE
: nom de la règle de transfert.PROTOCOL
: protocole de la règle de transfert, qui peut êtreTCP
ouUDP
SUBNET
: sous-réseau du producteur, qui doit être le même sous-réseau que celui associé au NEG de mappage de portIP_ADDRESS
: adresse IP de la règle de transfert, qui doit provenir de la plage d'adresses IP du sous-réseau du producteur
Publier le service de mappage de port
Pour rendre votre service de mappage de ports accessible aux clients, publiez le service en créant un rattachement de service. Lorsque vous créez le rattachement de service, spécifiez la règle de transfert associée à votre service de mappage de port.