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 ports Private Service Connect.
Le mappage de port Private Service Connect permet aux instances de machine virtuelle (VM) de consommateur de communiquer en privé avec des ports de service spécifiques sur des VM de producteur 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 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 À 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 accorder les rôles IAM suivants sur le projet du 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 ports
Les services de mappage de port ont des configurations similaires aux é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éer un NEG de mappage de port
- Ajouter des points de terminaison réseau au NEG de mappage de port
- Créer un service de mappage de port
- Publier 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
. Vous ne pouvez pas modifier le type d'un NEG de mappage de port une fois qu'il est créé.
Lorsque vous créez un NEG de mappage de port, vous choisissez un sous-réseau. Les points de terminaison 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 beta 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/beta/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 du projet de la négociation 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 réseau au NEG de mappage de port
Créez un ou plusieurs points de terminaison réseau avec des mappages de port, puis associez-les au NEG de mappage de port.
Les points de terminaison réseau des NEG de mappage de port sont zonaux et doivent répondre aux exigences suivantes:
- Chaque point de terminaison réseau fait référence à une VM Compute Engine qui dispose d'une interface réseau principale dans le même sous-réseau que le NEG de mappage de port.
- Chaque point de terminaison réseau fait référence à un port de destination client unique.
Chaque point de terminaison 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 1 de la VM, puis saisissez un port de service.
Cliquez sur Port client 1, puis saisissez un port de destination client.
Pour chaque point de terminaison 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 un indicateur --add-endpoint
pour chaque point de terminaison réseau que vous souhaitez associer.
gcloud beta 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 client du premier point de terminaison réseauPROJECT_ID
: ID du projet du producteurZONE_1
: zone du premier point de terminaison réseauVM_1_NAME
: nom de la VM de destination pour le premier point de terminaison réseauVM_1_PORT
: port de service du premier point de terminaison réseauCLIENT_DESTINATION_PORT_2
: port de destination client du deuxième point de terminaison réseauZONE_2
: zone du deuxième point de terminaison réseauVM_2_NAME
: nom de la VM de destination pour le deuxième point de terminaison réseauVM_2_PORT
: port de service du deuxième point de terminaison réseau
API
Envoyez une requête POST
à la méthode regionNetworkEndpointGroups.attachNetworkEndpoints
.
POST https://compute.googleapis.com/compute/beta/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 client du premier point de terminaison réseauZONE_1
: zone du premier point de terminaison réseauVM_1_NAME
: nom de la VM de destination pour le premier point de terminaison réseauSERVICE_PORT_1
: port de service du premier point de terminaison réseauCLIENT_DESTINATION_PORT_2
: port de destination client du deuxième point de terminaison réseauZONE_2
: zone du deuxième point de terminaison réseauVM_2_NAME
: nom de la VM de destination pour le deuxième point de terminaison réseauSERVICE_PORT_2
: port de service du deuxième point de terminaison 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 avoir ajouté le NEG. Toutefois, vous pouvez mettre à jour les points de terminaison réseau du NEG de mappage de port.
Vous ne pouvez pas modifier la connexion d'une règle de transfert une fois qu'elle a été créée. 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 Type de backend, sélectionnez Groupe de points de terminaison du réseau de mappage de port.
- 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 beta 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 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 même service de backend.
gcloud beta 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 de tous les ports de destination client.
gcloud beta 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 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/beta/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 du projet du service de backendREGION
: région du service de backendSERVICE
: nom du service de backendNETWORK
: réseau VPC 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 même service de backend.
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/beta/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 de tous les ports de destination client.
POST https://compute.googleapis.com/compute/beta/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 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 port disponible pour les consommateurs, publiez-le 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.