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

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:

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

  1. 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"

  2. Cliquez sur Créer un groupe de points de terminaison du réseau.

  3. Saisissez un nom.

  4. Cliquez sur Type de groupe de points de terminaison du réseau, puis sélectionnez NEG de mappage de port (régional).

  5. Sélectionnez une Région.

  6. Sélectionnez un réseau.

  7. Sélectionnez un sous-réseau.

  8. 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 port
  • REGION: région du NEG de mappage de port
  • NETWORK: réseau VPC du NEG de mappage de port
  • SUBNET: 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 port
  • REGION: région du NEG de mappage de port
  • NEG: nom du NEG de mappage de port
  • NETWORK: réseau VPC du NEG de mappage de port
  • SUBNET: 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

  1. 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"

  2. Cliquez sur le nom du NEG de mappage de port que vous souhaitez mettre à jour.

  3. Cliquez sur Ajouter des points de terminaison du réseau.

  4. Cliquez sur Instance de VM, puis sélectionnez une VM.

  5. Cliquez sur Port 1 de la VM, puis saisissez un port de service.

  6. Cliquez sur Port client 1, puis saisissez un port de destination client.

  7. 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.

  8. 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 port
  • REGION: région du NEG de mappage de port
  • CLIENT_DESTINATION_PORT_1: port de destination client du premier point de terminaison réseau
  • PROJECT_ID: ID du projet du producteur
  • ZONE_1: zone du premier point de terminaison réseau
  • VM_1_NAME: nom de la VM de destination pour le premier point de terminaison réseau
  • VM_1_PORT: port de service du premier point de terminaison réseau
  • CLIENT_DESTINATION_PORT_2: port de destination client du deuxième point de terminaison réseau
  • ZONE_2: zone du deuxième point de terminaison réseau
  • VM_2_NAME: nom de la VM de destination pour le deuxième point de terminaison réseau
  • VM_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 producteur
  • REGION: région du NEG de mappage de port
  • NEG: nom du NEG de mappage de port
  • CLIENT_DESTINATION_PORT_1: port de destination client du premier point de terminaison réseau
  • ZONE_1: zone du premier point de terminaison réseau
  • VM_1_NAME: nom de la VM de destination pour le premier point de terminaison réseau
  • SERVICE_PORT_1: port de service du premier point de terminaison réseau
  • CLIENT_DESTINATION_PORT_2: port de destination client du deuxième point de terminaison réseau
  • ZONE_2: zone du deuxième point de terminaison réseau
  • VM_2_NAME: nom de la VM de destination pour le deuxième point de terminaison réseau
  • SERVICE_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

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Sous Type d'équilibreur de charge, sélectionnez Équilibreur de charge réseau (TCP/UDP/SSL), puis cliquez sur Suivant.
  4. Pour Proxy ou passthrough, sélectionnez Équilibreur de charge passthrough, puis cliquez sur Suivant.
  5. Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
  6. Cliquez sur Configurer.

Configuration de base

  1. Saisissez un nom d'équilibreur de charge.
  2. Sélectionnez une Région.
  3. Sélectionnez un réseau.

Configurer le backend

  1. Pour Type de backend, sélectionnez Groupe de points de terminaison du réseau de mappage de port.
  2. Sélectionnez un groupe de points de terminaison du réseau du mappage de port.

Configuration du frontend

  1. Cliquez sur Configuration de l'interface.
  2. Facultatif: saisissez un nom.
  3. Facultatif : saisissez une Description.
  4. Sélectionnez un protocole.
  5. Sélectionnez un sous-réseau.
  6. Cliquez sur OK.
  7. Cliquez sur Créer.

gcloud

  1. 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 backend
    • REGION: région du service de backend
    • NETWORK: réseau VPC producteur du service de backend
  2. 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.

  3. 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 être TCP ou UDP
    • SUBNET: sous-réseau du producteur, qui doit être le même que celui associé au NEG de mappage de port
    • IP_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

  1. Pour créer un service de backend, envoyez une requête POST à la méthode regionBackendServices.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 backend
    • REGION: région du service de backend
    • SERVICE: nom du service de backend
    • NETWORK: réseau VPC producteur
  2. Pour ajouter votre NEG de mappage de port au service de backend, envoyez une requête PATCH à la méthode regionBackendServices.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.

  3. Pour créer une règle de transfert pour votre service de mappage de port, envoyez une requête POST à la méthode forwardingRules.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 être TCP ou UDP
    • SUBNET: sous-réseau du producteur, qui doit être le même que celui associé au NEG de mappage de port
    • IP_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.

Étape suivante