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

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 :

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

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

  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 de VM 1, 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 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.

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

  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 le Type de backend, sélectionnez Groupe de points de terminaison du réseau du mappage de ports.
  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 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 de 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 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.

  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 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 être TCP ou UDP
    • SUBNET : sous-réseau du producteur, qui doit être le même sous-réseau 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/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 backend
    • REGION : région du service de backend
    • SERVICE : nom du service de backend
    • NETWORK : réseau VPC du 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 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.

  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 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 être TCP ou UDP
    • SUBNET : sous-réseau du producteur, qui doit être le même sous-réseau 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 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.

Étape suivante