Provisionner un VPC partagé

Le VPC partagé vous permet d'exporter des sous-réseaux d'un réseau cloud privé virtuel (VPC) dans un projet hôte vers d'autres projets de service dans la même organisation. Les instances hébergées dans les projets de service peuvent établir des connexions réseau au sein des sous-réseaux partagés du projet hôte. Cette page décrit comment configurer et utiliser le VPC partagé, y compris certaines étapes d'administration préparatoires requises pour votre organisation.

Le VPC partagé est compatible avec l'exportation de sous-réseaux IPv4 uniquement (pile unique) et IPv4 et IPv6 (double pile).

Pour en savoir plus sur la dissociation des projets de service ou la suppression complète de la configuration d'un VPC partagé, consultez la page Déprovisionner un VPC partagé.

Le VPC partagé est également appelé "XPN" dans l'API et l'interface de ligne de commande.

Quotas, limites et ressources éligibles

Avant de commencer, assurez-vous de bien connaître le VPC partagé et IAM, en particulier :

Préparer votre organisation

Tenez compte des informations suivantes lorsque vous préparez votre organisation.

Administrateurs et IAM

La préparation de votre organisation, la configuration des projets hôtes de VPC partagé et l'utilisation des réseaux VPC partagés impliquent au minimum trois rôles d'administration différents pour la gestion de l'authentification et des accès (IAM, Identity and Access Management). Pour plus d'informations sur chaque rôle, ainsi que des informations sur les rôles facultatifs, consultez la section Administrateurs et IAM dans la présentation du VPC partagé.

Contraintes liées aux règles d'administration

Les contraintes de règles d'administration permettent de protéger les ressources de VPC partagé au niveau du projet, du dossier ou de l'organisation. Les sections suivantes décrivent chacune des règles.

Empêcher la suppression accidentelle de projets hôtes

La suppression accidentelle d'un projet hôte conduirait à des interruptions dans tous les projets de service qui y sont associés. Lorsqu'un projet est configuré en tant que projet hôte de VPC partagé, un verrou spécial, appelé privilège, lui est appliqué. Tant que le privilège est présent, il empêche toute suppression accidentelle du projet. Le privilège est automatiquement supprimé du projet hôte lorsque celui-ci n'est plus configuré pour le VPC partagé.

Un utilisateur doté du rôle orgpolicy.policyAdmin peut définir une contrainte de règle au niveau de l'organisation (constraints/compute.restrictXpnProjectLienRemoval) qui limite la suppression des privilèges aux seuls rôles suivants :

  • Utilisateurs dotés du rôle roles/owner ou roles/resourcemanager.lienModifier au niveau de l'organisation
  • Utilisateurs dotés de rôles personnalisés incluant les autorisations resourcemanager.projects.get et resourcemanager.projects.updateLiens au niveau de l'organisation

Cela permet d'empêcher un propriétaire de projet ne disposant pas des rôles roles/owner ou resourcemanager.lienModifier au niveau de l'organisation de supprimer accidentellement un projet hôte de VPC partagé. Pour plus d'informations sur les autorisations associées au rôle resourcemanager.lienModifier, consultez la section Placer un privilège sur un projet dans la documentation de Resource Manager.

Comme une règle d'administration s'applique à tous les projets de l'organisation, vous n'avez besoin de réaliser les étapes ci-dessous qu'une seule fois pour limiter la suppression des privilèges.

  1. Authentifiez-vous auprès de gcloud en tant qu'administrateur de l'organisation ou compte principal IAM possédant le rôle orgpolicy.policyAdmin. Remplacez ORG_ADMIN par le nom d'un administrateur de l'organisation :

    gcloud auth login ORG_ADMIN
    
  2. Repérez l'ID de votre organisation dans le résultat renvoyé par cette commande.

    gcloud organizations list
    
  3. Appliquez la règle compute.restrictXpnProjectLienRemoval à votre organisation en exécutant cette commande. Remplacez ORG_ID par le numéro identifié à l'étape précédente.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Pour protéger votre compte, déconnectez-vous de gcloud lorsque vous avez terminé d'effectuer des tâches en tant qu'administrateur de l'organisation.

    gcloud auth revoke ORG_ADMIN
    

Contraindre les associations de projets hôtes

Par défaut, un administrateur de VPC partagé peut associer un projet non hôte à un projet hôte de la même organisation. Un administrateur de règles d'administration peut restreindre l'ensemble de projets hôtes auxquels un ou plusieurs projets non hôtes d'un dossier ou d'une organisation peuvent être associés. Pour en savoir plus, consultez la contrainte constraints/compute.restrictSharedVpcHostProjects.

Définir les sous-réseaux du projet hôte pouvant être utilisés par un projet de service

Par défaut, une fois que vous avez configuré le VPC partagé, les comptes principaux IAM des projets de service peuvent utiliser n'importe quel sous-réseau du projet hôte s'ils disposent des autorisations IAM appropriées. En plus de pouvoir gérer les autorisations d'utilisateur au niveau individuel, un administrateur de règles d'administration peut définir une stratégie visant à indiquer l'ensemble de sous-réseaux auxquels un projet spécifique ou des projets d'un dossier ou d'une organisation peuvent accéder. Pour en savoir plus, consultez la contrainte constraints/compute.restrictSharedVpcSubnetworks.

Empêcher l'arrêt accidentel de projets hôtes

La déconnexion de la facturation sur un réseau VPC partagé peut entraîner l'arrêt complet de toutes les ressources dépendantes, y compris les projets de service. Pour éviter toute occurrence d'un arrêt accidentel de VPC partagé en raison d'une facturation inactive ou désactivée, sécurisez la liaison entre le projet hôte et son compte de facturation.

Désigner des administrateurs de VPC partagé

Un administrateur d'organisation peut attribuer à un ou plusieurs membres IAM les rôles Administrateur de VPC partagé et Administrateur de projet IAM.

Le rôle d'administrateur de projet IAM autorise les administrateurs de VPC partagé à partager tous les sous-réseaux existants et futurs, et pas seulement les sous-réseaux individuels. L'attribution de ce rôle crée une liaison au niveau de l'organisation ou du dossier, et non au niveau du projet. Par conséquent, les comptes principaux IAM doivent être définis au niveau de l'organisation et non simplement au sein d'un projet.

Console

Pour accorder le rôle d'Administrateur de VPC partagé au niveau de l'organisation

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de l'organisation, puis accédez à la page "IAM".

    Accéder à la page IAM

  2. Dans le menu du projet, sélectionnez votre organisation.

    Si vous sélectionnez un projet, le menu Rôles affiche des entrées incorrectes.

  3. Cliquez sur Ajouter.

  4. Saisissez les adresses e-mail des nouveaux comptes principaux.

  5. Dans le menu Rôles, sélectionnez Compute Engine >Administrateur VPC Compute partagé.

  6. Cliquez sur Ajouter un autre rôle.

  7. Dans la liste déroulante Rôles, sélectionnez Gestionnaire de ressources > Administrateur de projet IAM.

  8. Cliquez sur Enregistrer.

Pour accorder le rôle d'Administrateur de VPC partagé au niveau du dossier

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de l'organisation, puis accédez à la page "IAM".

    Accéder à la page IAM

  2. Dans le menu du projet, sélectionnez votre dossier.

    Si vous sélectionnez un projet ou une organisation, les options affichées ne sont pas correctes.

  3. Cliquez sur Ajouter.

  4. Saisissez les adresses e-mail des nouveaux comptes principaux.

  5. Sous Sélectionner un rôle, choisissez Compute Engine > Administrateur VPC Compute partagé.

  6. Cliquez sur Ajouter un autre rôle.

  7. Dans le menu Rôles, sélectionnez Gestionnaire de ressources > Administrateur de projet IAM.

  8. Cliquez sur Ajouter un autre rôle.

  9. Dans le menu Rôles, sélectionnez Gestionnaire de ressources > Lecteur de réseau Compute

  10. Cliquez sur Enregistrer.

gcloud

  1. Authentifiez-vous auprès de gcloud en tant qu'administrateur de l'organisation. Remplacez ORG_ADMIN par le nom d'un administrateur de l'organisation :

    gcloud auth login ORG_ADMIN
    
  2. Repérez l'ID de votre organisation dans le résultat renvoyé par cette commande.

    gcloud organizations list
    
  3. Pour attribuer le rôle d'administrateur de VPC partagé au niveau de l'organisation, procédez comme suit:

    1. Attribuez le rôle Administrateur de VPC partagé à un compte principal IAM existant. Remplacez ORG_ID par l'ID d'organisation identifié à l'étape précédente et EMAIL_ADDRESS par l'adresse e-mail de l'utilisateur auquel vous attribuez ce rôle.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Pour attribuer le rôle d'administrateur de VPC partagé au niveau du dossier, procédez comme suit:

    1. Déterminez l'ID de votre dossier en consultant le résultat de cette commande.

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Attribuez le rôle Administrateur de VPC partagé à un compte principal IAM existant. Remplacez ORG_ID par l'ID d'organisation identifié à l'étape précédente et EMAIL_ADDRESS par l'adresse e-mail de l'utilisateur auquel vous attribuez ce rôle.

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. Révoquez le jeton de votre compte d'administrateur de l'organisation dans l'outil de ligne de commande gcloud lorsque vous avez terminé les tâches de protection de votre compte.

    gcloud auth revoke ORG_ADMIN
    

API

  • Pour attribuer le rôle d'administrateur de VPC partagé au niveau de l'organisation, procédez comme suit :

    1. Déterminez l'ID de votre organisation.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Décrivez et enregistrez les détails de vos règles d'administration existantes.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Remplacez ORG_ID par l'ID de votre organisation.

    3. Attribuez le rôle d'administrateur de VPC partagé.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Remplacez les éléments suivants :

      • ORG_ID : ID de l'organisation qui contient l'utilisateur auquel vous accordez le rôle d'administrateur de VPC partagé.
      • EMAIL_ADDRESS : adresse e-mail de l'utilisateur.
      • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

      Pour en savoir plus, consultez la section sur la méthode organizations.setIamPolicy.

  • Pour attribuer le rôle d'administrateur de VPC partagé au niveau du dossier, formulez la requête suivante :

    1. Déterminez l'ID de votre organisation.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Recherchez l'ID de votre dossier.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Remplacez ORG_ID par l'ID de votre organisation.

    3. Décrivez et enregistrez les détails de votre stratégie de dossier existante.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Remplacez FOLDER_ID par l'ID de votre dossier.

    4. Attribuez le rôle d'administrateur de VPC partagé.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Remplacez les éléments suivants :

      • FOLDER_ID : ID de l'organisation qui contient l'utilisateur auquel vous attribuez le rôle d'administrateur de VPC partagé.
      • EMAIL_ADDRESS : adresse e-mail de l'utilisateur.
      • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

      Pour en savoir plus, consultez la section sur la méthode folders.setIamPolicy.

Configurer un VPC partagé

Toutes les tâches de cette section doivent être effectuées par un administrateur de VPC partagé.

Activer un projet hôte

Dans une organisation, les administrateurs de VPC partagé peuvent désigner des projets en tant que projets hôtes de VPC partagé, soumis à des quotas et limites, en suivant la procédure décrite ici. Les administrateurs de VPC partagé peuvent également créer et supprimer des projets s'ils disposent du rôle Créateur de projet et du rôle Suppresseur de projets (roles/resourcemanager.projectCreator et roles/resourcemanager.projectDeleter) pour votre organisation.

Lorsque vous activez un projet hôte, les ressources réseau du projet ne sont pas automatiquement partagées avec les projets de service. Vous devez associer des projets de service au projet hôte pour partager les réseaux et les sous-réseaux sélectionnés avec les projets de service.

Console

Si vous ne disposez pas encore d'administrateur VPC Compute partagé (roles/compute.xpnAdmin), alors vous ne peut pas consulter cette page dans la console Google Cloud.

  1. Dans Google Cloud Console, accédez à la page VPC partagé.

    Accéder à la page "VPC partagé"

  2. Connectez-vous en tant qu'administrateur de VPC partagé.

  3. Dans le sélecteur de projet, choisissez le projet que vous souhaitez activer en tant que projet hôte de VPC partagé.

  4. Cliquez sur Configurer un VPC partagé.

  5. Sur la page suivante, sous Activer le projet hôte, cliquez sur Enregistrer et continuer.

  6. Sous Sélectionner des sous-réseaux, effectuez l'une des opérations suivantes :

    1. Cliquez sur Partager tous les sous-réseaux (autorisations au niveau du projet) si vous devez partager tous les sous-réseaux actuels et futurs des réseaux VPC du projet hôte avec les projets de service et les administrateurs de projet de service spécifiés dans les étapes suivantes.
    2. Cliquez sur Sous-réseaux individuels (autorisations au niveau du sous-réseau) si vous devez partager de manière sélective certains sous-réseaux des réseaux VPC du projet hôte avec des projets de service et des administrateurs de projet de service. Sélectionnez ensuite les sous-réseaux à partager.
  7. Cliquez sur Continuer.
    L'écran suivant apparaît.

  8. Dans Noms des projets, spécifiez les projets de service devant être associés au projet hôte. Notez que l'association de projets de service ne définit pas d'administrateur de projet de service ; cela intervient à l'étape suivante.

  9. Dans la section Sélectionner les utilisateurs par rôle, ajoutez les administrateurs de projet de service. Le rôle IAM compute.networkUser pour les sous-réseaux partagés sera attribué à ces utilisateurs. Seuls les administrateurs de projet de service peuvent créer des ressources dans les sous-réseaux du projet hôte de VPC partagé.

  10. Cliquez sur Enregistrer.

gcloud

  1. Authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Activez le VPC partagé pour le projet dont vous devez faire un projet hôte. Remplacez HOST_PROJECT_ID par l'ID du projet.

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    
  3. Confirmez que le projet est répertorié en tant que projet hôte pour votre organisation. Remplacez ORG_ID par l'ID de votre organisation (déterminé par gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Si vous aviez uniquement besoin d'activer un projet hôte, vous pouvez vous déconnecter de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé. Sinon, ignorez cette étape et poursuivez avec les instructions permettant d'associer des projets de service.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Activez le VPC partagé pour le projet à l'aide d'identifiants disposant des autorisations associées à l'administrateur de VPC partagé.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
    

    Remplacez HOST_PROJECT_ID par l'ID du projet qui sera un projet hôte de VPC partagé.

    Pour en savoir plus, consultez la section sur la méthode projects.enableXpnHost.

  2. Confirmez que le projet est bien répertorié en tant que projet hôte.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé.

    Pour en savoir plus, consultez la section sur la méthode projects.listXpnHosts.

Terraform

Vous pouvez utiliser une ressource Terraform pour activer un projet hôte.

resource "google_compute_shared_vpc_host_project" "host" {
  project = var.project # Replace this with your host project ID in quotes
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Associer les projets de service

Un projet de service doit être associé à un projet hôte préalablement à toute utilisation du VPC partagé par les administrateurs du projet de service. Pour réaliser cette association, un administrateur de VPC partagé doit effectuer les étapes suivantes.

Un projet de service ne peut être associé qu'à un seul projet hôte, mais un projet hôte prend en charge plusieurs projets de service associés. Pour plus de détails, reportez-vous à la section consacrée aux limites propres aux VPC partagés sur la page des quotas de VPC.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Dans Google Cloud Console, accédez à la page VPC partagé.
    Accéder à la page "VPC partagé"
  3. Cliquez sur l'onglet Projets associés.
  4. Sous l'onglet Projets associés, cliquez sur le bouton Associer des projets.
  5. Dans la section Noms des projets, cochez les cases correspondant aux projets de service à associer. Notez que l'association de projets de service ne définit pas d'administrateur de projet de service ; cela intervient à l'étape suivante.
  6. Dans la section Autorisations du réseau VPC, sélectionnez les rôles dont les membres se verront attribuer le rôle compute.networkUser. Les membres IAM se voient accorder le rôle Utilisateur du réseau pour l'ensemble du projet hôte ou certains sous-réseaux du projet hôte, en fonction du mode de partage du réseau VPC. Ces membres sont désignés comme les administrateurs de projet de service au sein de leurs projets de service respectifs.
  7. Dans la section Mode de partage de réseau VPC, sélectionnez l'une des options suivantes :
    1. Cliquez sur Partager tous les sous-réseaux (autorisations au niveau du projet) pour partager tous les sous-réseaux actuels et futurs des réseaux VPC du projet hôte avec les projets de service et les administrateurs de projet de service.
    2. Cliquez sur Sous-réseaux individuels (autorisations au niveau du sous-réseau) si vous devez partager de manière sélective certains sous-réseaux des réseaux VPC du projet hôte avec des projets de service et des administrateurs de projet de service. Sélectionnez ensuite les Sous-réseaux à partager.
  8. Cliquez sur Enregistrer.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Associez un projet de service à un projet hôte préalablement activé. Remplacez SERVICE_PROJECT_ID par l'ID du projet de service et HOST_PROJECT_ID par l'ID du projet hôte.

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Confirmez que le projet de service a été correctement associé.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Vous pouvez au besoin répertorier les projets de service associés au projet hôte :

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Si vous aviez uniquement besoin d'associer un projet de service, vous pouvez vous déconnecter de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé. Sinon, vous pouvez ignorer cette étape et définir des administrateurs de projet de service pour tous les sous-réseaux ou pour certains seulement.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Associez un projet de service au projet hôte de VPC partagé.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • SERVICE_PROJECT : ID du projet de service à associer.

    Pour en savoir plus, consultez la section sur la méthode projects.enableXpnResource.

  2. Vérifiez que les projets de service sont associés au projet hôte.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.

    Pour en savoir plus, consultez la section sur la méthode projects.getXpnResources.

Terraform

Vous pouvez utiliser une ressource Terraform pour associer un projet de service.

resource "google_compute_shared_vpc_service_project" "service1" {
  host_project    = google_compute_shared_vpc_host_project.host.project
  service_project = var.service_project # Replace this with your service project ID in quotes
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Administrateurs de projet de service pour tous les sous-réseaux

Un administrateur de VPC partagé peut attribuer à un compte principal IAM d'un projet de service le rôle Administrateur de projet de service, avec accès à tous les sous-réseaux du projet hôte. Les administrateurs de projet de service de ce type disposent du rôle compute.networkUser pour l'ensemble du projet hôte. Ils ont donc accès à tous les sous-réseaux définis et futurs du projet hôte.

Un utilisateur disposant du rôle compute.networkUser sur le projet hôte peut voir tous les sous-réseaux des projets de service associés.

Console

Pour utiliser la console Google Cloud afin d'accorder à un compte principal IAM d'un projet de service le rôle d'administrateur de projet de service, avec accès à tous les sous-réseaux d'un projet hôte, consultez la section Associer des projets de service.

gcloud

Ces étapes indiquent comment définir un compte principal IAM d'un projet de service comme administrateur de projet de service, avec accès à tous les sous-réseaux d'un projet hôte. Pour réaliser ces étapes, vous devez avoir préalablement activé un projet hôte et associé le projet de service au projet hôte.

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Créez une liaison de stratégie pour faire d'un compte principal IAM du projet de service un administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte et SERVICE_PROJECT_ADMIN par l'adresse e-mail de l'utilisateur administrateur du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Vous pouvez spécifier différents types de comptes principaux en modifiant le format de l'argument --member :

    • Spécifiez un groupe Google (par adresse e-mail) comme compte principal à l'aide de group:.
    • Spécifiez un domaine Google comme compte principal à l'aide de domain:.
    • Spécifiez un compte de service à l'aide de serviceAccount:. Pour plus d'informations sur ce cas d'utilisation, reportez-vous à la section Comptes de service en tant qu'administrateurs de projet de service.
  3. Répétez l'étape précédente pour chaque administrateur de projet de service supplémentaire à définir.

  4. Lorsque vous avez terminé de définir les administrateurs de projet de service, déconnectez-vous de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Créez une liaison de stratégie pour désigner des comptes principaux IAM dans le projet de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte qui contient le réseau VPC partagé.
    • PRINCIPAL : identité associée au rôle, telle qu'un utilisateur, un groupe, un domaine ou un compte de service. Pour en savoir plus, consultez la section concernant le champ members dans la documentation de Resource Manager.
    • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

    Pour en savoir plus, consultez la section sur la méthode projects.setIamPolicy.

Administrateurs de projets de service pour certains sous-réseaux

Un administrateur de VPC partagé peut accorder à un compte principal IAM d'un projet de service le rôle Administrateur de projet de service, avec un accès uniquement à certains sous-réseaux du projet hôte. Cette option offre plus de précision dans la définition des administrateurs de projet de service en leur accordant le rôle compute.networkUser uniquement pour certains sous-réseaux du projet hôte.

Un utilisateur disposant du rôle compute.networkUser sur le projet hôte peut voir tous les sous-réseaux des projets de service associés.

Console

Pour utiliser la console Google Cloud afin d'accorder à un compte principal IAM d'un projet de service le rôle d'administrateur de projet de service, avec un accès uniquement à certains sous-réseaux d'un projet hôte, consultez la section Associer des projets de service.

gcloud

Ces étapes indiquent comment définir un compte principal IAM d'un projet de service comme administrateur de projet de service, avec accès uniquement à certains sous-réseaux d'un projet hôte. Pour pouvoir définir ce compte principal, vous devez avoir préalablement activé un projet hôte et associé le projet de service au projet hôte.

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Choisissez le sous-réseau du projet hôte auquel les administrateurs de projet de service doivent avoir accès. Obtenez ses règles IAM actuelles au format JSON. Remplacez SUBNET_NAME par le nom du sous-réseau dans le projet hôte et HOST_PROJECT_ID par l'ID du projet hôte.

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copiez le résultat JSON obtenu à l'étape précédente et enregistrez-le dans un fichier. Pour plus de clarté dans ces instructions, il est ici enregistré dans un fichier nommé subnet-policy.json.

  4. Modifiez le fichier subnet-policy.json en ajoutant les comptes principaux IAM qui deviendront administrateurs de projet de service avec un accès au sous-réseau. Remplacez chaque occurrence de SERVICE_PROJECT_ADMIN par l'adresse e-mail d'un utilisateur IAM du projet de service.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Notez que vous pouvez spécifier différents types de comptes principaux IAM (autres que des utilisateurs) dans la règle :

    • Remplacez user: par group: pour spécifier un groupe Google (par adresse e-mail) en tant que compte principal.
    • Remplacez user: par domain: pour spécifier un domaine Google en tant que compte principal.
    • Spécifiez un compte de service à l'aide de serviceAccount:. Pour plus d'informations sur ce cas d'utilisation, consultez la section Comptes de service en tant qu'administrateurs de projet de service.
  5. Mettez à jour la liaison de règle pour le sous-réseau avec le contenu du fichier subnet-policy.json.

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Lorsque vous avez terminé de définir les administrateurs de projet de service, déconnectez-vous de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de sous-réseau existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte qui contient le réseau VPC partagé.
    • SUBNET_NAME : nom du sous-réseau à partager.
    • SUBNET_REGION : région dans laquelle se trouve le sous-réseau.
  2. Mettez à jour la stratégie de sous-réseau pour autoriser les administrateurs de projet de service à accéder aux sous-réseaux du projet hôte.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Remplacez les éléments suivants :

    • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.
    • HOST_PROJECT_ID : ID du projet hôte qui contient le réseau VPC partagé.
    • PRINCIPAL : identité associée au rôle, telle qu'un utilisateur, un groupe, un domaine ou un compte de service. Pour en savoir plus, consultez la section concernant le champ members dans la documentation de Resource Manager.
    • SUBNET_NAME : nom du sous-réseau à partager.
    • SUBNET_REGION : région dans laquelle se trouve le sous-réseau.

    Pour en savoir plus, consultez la section sur la méthode subnetworks.setIamPolicy.

Comptes de service comme administrateurs de projet de service

Un administrateur de VPC partagé peut également définir des comptes de service de projets de service comme administrateurs de projet de service. Cette section explique comment promouvoir deux types de comptes de service différents comme administrateurs de projet de service :

Le rôle d'administrateur de projet de service (compute.networkUser) peut être accordé pour l'ensemble des sous-réseaux ou seulement pour certains sous-réseaux du projet hôte. Toutefois, pour simplifier les instructions, cette section illustre uniquement comment réaliser l'opération pour ces deux types de compte de service pour l'ensemble des sous-réseaux du projet hôte.

Comptes de service gérés par l'utilisateur comme administrateurs de projet de service

Ces instructions décrivent comment promouvoir un compte de service géré par l'utilisateur au rôle d'administrateur de projet de service pour l'ensemble des sous-réseaux du projet hôte de VPC partagé.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Accédez à la page Paramètres dans Google Cloud Console.
    Accéder à la page Paramètres
  3. Sélectionnez comme projet le projet de service contenant le compte de service qui doit être défini comme administrateur de projet de service.
  4. Copiez l'ID de projet du projet de service. Pour plus de clarté, cette procédure désigne l'ID du projet de service par l'espace réservé SERVICE_PROJECT_ID.
  5. Sélectionnez comme projet le projet hôte de VPC partagé.
  6. Accédez à la page "IAM" de Google Cloud Console.
    Accéder à la page "IAM"
  7. Cliquez sur Ajouter.
  8. Ajoutez SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.comau champ Principals, en remplaçant SERVICE_ACCOUNT_NAME par le nom du compte de service.
  9. Dans le menu Rôles, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
  10. Cliquez sur Ajouter.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Si vous ne connaissez pas l'ID du projet de service, vous pouvez répertorier tous les projets de votre organisation. La liste résultant de cette commande affiche l'ID de chaque projet.

    gcloud projects list
    
  3. Créez une liaison de règle pour que le compte de service devienne administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte, SERVICE_ACCOUNT_NAME par le nom du compte de service et SERVICE_PROJECT_ID par l'ID du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Créez une liaison de règle pour désigner des comptes de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte qui contient le réseau VPC partagé.
    • SERVICE_ACCOUNT_NAME : nom du compte de service.
    • SERVICE_PROJECT_ID : ID du projet de service qui contient le compte de service.
    • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

    Pour en savoir plus, consultez la section sur la méthode projects.setIamPolicy.

Compte de service des API Google comme administrateur de projet de service

Ces instructions décrivent comment définir un compte de service des API Google comme administrateur de projet de service pour l'ensemble des sous-réseaux du projet hôte de VPC partagé. Promouvoir le compte de service des API Google comme administrateur de projet de service est une nécessité pour les groupes d'instances gérés utilisés dans le cadre d'un VPC partagé, car les tâches du type création d'instance sont réalisées par ce type de compte de service. Pour plus d'informations sur cette relation, consultez la page Groupes d'instances gérés et IAM.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Accédez à la page Paramètres dans Google Cloud Console.
    Accéder à la page Paramètres
  3. Sélectionnez comme projet le projet de service contenant le compte de service qui doit être défini comme administrateur de projet de service.
  4. Copiez le Numéro de projet du projet de service. Pour plus de clarté, cette procédure désigne le numéro du projet de service par l'espace réservé SERVICE_PROJECT_NUMBER.
  5. Sélectionnez comme projet le projet hôte de VPC partagé.
  6. Accédez à la page "IAM" de Google Cloud Console.
    Accéder à la page "IAM"
  7. Cliquez sur Ajouter.
  8. Ajoutez SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.comau champ Membres.
  9. Dans le menu Rôles, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
  10. Cliquez sur Ajouter.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Déterminez le numéro de projet correspondant au projet de service. Pour plus de clarté, cette procédure désigne le numéro du projet de service par SERVICE_PROJECT_NUMBER. Remplacez SERVICE_PROJECT_ID par l'ID du projet de service.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Si vous ne connaissez pas l'ID du projet de service, vous pouvez répertorier tous les projets de votre organisation. La liste résultant de cette commande affiche l'ID de chaque projet.

      gcloud projects list
      
  3. Créez une liaison de règle pour que le compte de service devienne administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte et SERVICE_PROJECT_NUMBER par le numéro du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Répertoriez les projets pour trouver le numéro de votre projet.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Remplacez SERVICE_PROJECT_ID par l'ID du projet de service dans lequel se trouve le compte de service.

  3. Créez une liaison de règle pour désigner des comptes de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet hôte qui contient le réseau VPC partagé.
    • SERVICE_PROJECT_NUMBER : numéro du projet de service qui contient le compte de service.
    • ETAG : identifiant unique obtenu lorsque vous avez décrit la règle existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

    Pour en savoir plus, consultez la section sur la méthode projects.setIamPolicy.

Utiliser un VPC partagé

Une fois qu'un administrateur de VPC partagé a activé un projet hôte, lui a associé les projets de service requis et a défini des administrateurs de projet de service pour l'ensemble ou certains des sous-réseaux du projet hôte, les administrateurs du projet de service peuvent créer, au sein des projets de service, des instances, des modèles et des équilibreurs de charge internes en exploitant les sous-réseaux du projet hôte.

Toutes les tâches de cette section doivent être réalisées par un administrateur de projet de service.

Il est important de noter que les administrateurs de VPC partagé n'accordent que le rôle d'utilisateur de réseau de Compute (roles/compute.networkUser) à l'ensemble du projet hôte ou uniquement à certains de ses sous-réseaux. Ceux-ci doivent également disposer des autres rôles nécessaires à l'administration de leurs projets de service respectifs. Ainsi, un administrateur de projet de service peut également être propriétaire d'un projet ou, au minimum, disposer du rôle Administrateur d'instances Compute (roles/compute.instanceAdmin) pour le projet.

Répertorier les sous-réseaux disponibles

Les administrateurs de projet de service peuvent répertorier les sous-réseaux pour lesquels ils possèdent des autorisations en procédant comme suit.

Console

Dans Google Cloud Console, accédez à la page VPC partagé.

Accéder à la page "VPC partagé"

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de projet de service. Remplacez SERVICE_PROJECT_ADMIN par le nom de l'administrateur de projet de service :

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Exécutez la commande suivante en remplaçant HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé :

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    L'exemple suivant répertorie les sous-réseaux disponibles dans le projet hôte project-1 :

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Pour en savoir plus, consultez la commande list-usable dans la documentation du SDK.

API

Répertoriez les sous-réseaux disponibles dans le projet hôte. Effectuez la requête en tant qu'administrateur de projet de service.

GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

Pour en savoir plus, consultez la section sur la méthode subnetworks.listUsable.

Réserver une adresse IPv4 ou IPv6 interne statique

Les administrateurs de projet de service peuvent réserver une adresse IPv4 ou IPv6 interne au sein d'un sous-réseau d'un réseau VPC partagé. L'objet de configuration de l'adresse IP est créé dans le projet de service, alors que sa valeur provient de la plage d'adresses disponibles dans le sous-réseau partagé choisi.

Pour réserver une adresse IP interne autonome dans le projet de service, procédez comme suit :

Console

  1. Configurer un VPC partagé
  2. Dans Google Cloud Console, accédez à la page VPC partagé.

    Accéder à la page "VPC partagé"

  3. Connectez-vous en tant qu'administrateur de VPC partagé.

  4. Sélectionnez le projet de service dans l'outil de sélection de projets.

  5. Accédez à la page Adresses IP en sélectionnant Réseau VPC > Adresses IP.

  6. Cliquez sur Réserver une adresse IP statique interne.

  7. Dans le champ Nom, saisissez un nom d'adresse IP.

  8. Dans la liste Version IP, sélectionnez la version d'adresse IP requise :

    • Pour réserver une adresse IPv4 interne statique, sélectionnez IPv4.
    • Pour réserver une adresse IPv6 interne statique, sélectionnez IPv6.
  9. Cliquez sur le bouton Réseaux partagés avec moi.

  10. Dans les listes Réseau et Sous-réseau, sélectionnez un réseau VPC et un sous-réseau, respectivement.

  11. Spécifiez la manière dont vous souhaitez réserver l'adresse IP :

    • Pour réserver des adresses IPv4, pour spécifier une adresse IPv4 interne statique à réserver, dans Adresse IP statique, sélectionnezLaissez-moi choisir, puis saisissez une adresse IP personnalisée. Sinon, le système attribue automatiquement une adresse IPv4 interne statique dans le sous-réseau.
    • Pour les adresses IPv6, le système attribue automatiquement une adresse IPv6 interne statique à partir de la plage d'adresses IPv6 internes du sous-réseau.
  12. Facultatif : si vous souhaitez partager l'adresse IPv4 interne statique dans différentes interfaces, sélectionnez Partagée pour Objectif. La sélection par défaut est Non partagée.

  13. Cliquez sur Réserver.

gcloud

  1. Si vous ne l'avez pas déjà fait, authentifiez-vous auprès de Google Cloud CLI en tant qu'administrateur de projet de service. Remplacez SERVICE_PROJECT_ADMIN par le nom de l'administrateur de projet de service :

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Exécutez la commande compute addresses create.

    • Réservez des adresses IPv4 :

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV4
      
    • Réservez des adresses IPv6 :

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV6
      

    Remplacez les éléments suivants :

    • IP_ADDR_NAME : nom d'un objet d'adresse IPv4.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.

Des détails supplémentaires sur la création d'adresses IP sont disponibles dans la documentation du SDK.

API

Exécutez la méthode addresses.insert.

  • Réservez une adresse IPv4 statique interne en tant qu'administrateur de projet de service :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
    "name": "ADDRESS_NAME",
    "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
    "addressType": "INTERNAL"
    }
    

Remplacez les éléments suivants :

  • ADDRESS_NAME : nom de l'adresse IP interne réservée.
  • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
  • REGION : région où sera située l'adresse IPv4 réservée et où se situe le sous-réseau partagé.
  • SERVICE_PROJECT_ID : ID du projet de service où vous réservez l'adresse IPv4.
  • SUBNET_NAME : nom du sous-réseau partagé.

Pour en savoir plus, consultez la section sur la méthode addresses.insert.

Terraform

Vous pouvez utiliser un bloc de données Terraform pour spécifier les informations sur le sous-réseau hôte. Utilisez ensuite une ressource Terraform pour réserver une adresse IPv4 interne statique. Si vous omettez l'argument address, une adresse IPv4 disponible est sélectionnée et réservée.

Spécifiez le sous-réseau hôte :

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Réservez une adresse IPv4 du sous-réseau du projet hôte à utiliser dans le projet de service :

resource "google_compute_address" "internal" {
  project      = var.service_project
  region       = "us-central1"
  name         = "int-ip"
  address_type = "INTERNAL"
  address      = "10.0.0.8"
  subnetwork   = data.google_compute_subnetwork.subnet.self_link
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Réserver une adresse IPv4 externe statique

Une ressource d'un projet de service peut utiliser une adresse IPv4 externe statique régionale définie dans le projet de service ou le projet hôte. Par conséquent, une ressource des projets de service associés peut utiliser une adresse IPv4 externe statique régionale réservée dans le projet hôte.

Réserver une adresse IPv6 statique externe

Les administrateurs de projet de service peuvent réserver une adresse IPv6 externe statique dans un projet de service. L'objet de configuration de l'adresse IP est créé dans le projet de service, alors que sa valeur provient de la plage d'adresses disponibles dans le sous-réseau partagé choisi.

Console

Vous pouvez réserver une adresse IPv6 externe autonome dans le projet de service à l'aide de la console Google Cloud :

  1. Configurer un VPC partagé
  2. Dans Google Cloud Console, accédez à la page "VPC partagé".
    Accéder à la page VPC partagé
  3. Connectez-vous en tant qu'administrateur de VPC partagé.
  4. Sélectionnez le projet de service dans l'outil de sélection de projets.
  5. Pour accéder à la page Adresses IP, sélectionnez Réseau VPC > Adresses IP.
  6. Cliquez sur Réserver une adresse IP statique externe.
  7. Choisissez un nom pour la nouvelle adresse.
  8. Indiquez si le niveau de service réseau est Premium ou Standard. La réservation d'adresse statique IPv6 n'est acceptée qu'avec le niveau Premium.
  9. Sous Version IP, sélectionnez IPv4.
  10. Choisissez si cette adresse IP est régionale ou globale.
    • Si vous réservez une adresse IP statique pour un équilibreur de charge global, sélectionnez Global.
    • Si vous réservez une adresse IP statique pour une instance ou pour un équilibreur de charge régional, sélectionnez Régional, puis sélectionnez la région dans laquelle créer l'adresse.
  11. Sélectionnez les options suivantes :
    • Réseaux dans ce projet : choisissez cette option si vous souhaitez réserver une adresse IPv6 externe dans un sous-réseau du même réseau cloud privé virtuel (VPC) où vous réservez l'adresse IPv6.
    • Réseaux partagés avec moi : choisissez cette option si vous souhaitez réserver une adresse IPv6 externe dans un sous-réseau d'un réseau VPC partagé.
  12. En fonction de votre choix, choisissez les éléments suivants :

    • Réseau : le réseau VPC
    • Sous-réseau : sous-réseau à partir duquel attribuer l'adresse IPv6 régionale statique
    • Type de point de terminaison : choisissez Instance de VM ou Équilibreur de charge réseau.
  13. Facultatif : si vous avez choisi Instance de VM comme type de point de terminaison, sélectionnez une instance de VM à laquelle associer l'adresse IPv6.

  14. Cliquez sur Réserver.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de projet de service. Remplacez SERVICE_PROJECT_ADMIN par le nom de l'administrateur de projet de service :

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Exécutez la commande gcloud compute addresses create :

    gcloud compute addresses create IP_ADDR_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --region=REGION \
        --ip-version=IPV6 \
        --endpoint-type=[VM | NETLB]
    

    Remplacez les éléments suivants :

    • IP_ADDR_NAME : nom de l'objet d'adresse IPv6.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • SUBNET : nom du sous-réseau partagé.
    • REGION : région qui contient le sous-réseau partagé.

API

Pour réserver une adresse IPv6 interne statique en tant qu'administrateur de projet de service, utilisez la méthode addresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6",
  "ipv6EndpointType": "VM|LB",
  "networkTier": "PREMIUM",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "EXTERNAL"
}

Remplacez les éléments suivants :

  • SERVICE_PROJECT_ID : ID du projet de service où vous réservez l'adresse IPv6.
  • REGION : région où se trouvent l'adresse IPv6 réservée et le sous-réseau partagé.
  • ADDRESS_NAME : nom de l'adresse IPv6 externe statique réservée.
  • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
  • SUBNET_NAME : nom du sous-réseau partagé.

Créer une instance

Tenez compte des points suivants lorsque vous utilisez un VPC partagé pour créer une instance:

  • Le processus standard de création d'une instance implique la sélection d'une zone, d'un réseau et d'un sous-réseau. Aussi bien le sous-réseau que la zone sélectionnés doivent se trouver dans la même région. Lorsqu'un administrateur de projet de service crée une instance dans le cadre d'un sous-réseau provenant d'un réseau VPC partagé, la zone sélectionnée pour cette instance doit appartenir à la même région que le sous-réseau sélectionné.

    Lorsque vous créez une instance avec une adresse IPv4 interne statique réservée, le sous-réseau et la région sont déjà sélectionnés lorsque l'adresse IPv4 statique est créée. Un exemple gcloud de création d'une instance avec une adresse IPv4 interne statique est fourni dans cette section.

  • Les administrateurs de projet de service ne peuvent créer que des instances utilisant des sous-réseaux pour lesquels ils ont reçu une autorisation. Pour déterminer quels sous-réseaux sont disponibles, consultez Répertorier les sous-réseaux disponibles.

  • Lorsque Google Cloud reçoit une demande de création d'une instance dans un sous-réseau d'un réseau VPC partagé, il vérifie que le compte principal IAM à l'origine de cette demande est autorisé à utiliser ce sous-réseau partagé. Si la vérification échoue, l'instance n'est pas créée et Google Cloud renvoie une erreur d'autorisation. Pour obtenir de l'aide, contactez l'administrateur du VPC partagé.

  • Vous pouvez créer une instance à double pile dans un sous-réseau à double pile. Les sous-réseaux à double pile ne sont compatibles qu'avec les réseaux VPC en mode personnalisé. Le type d'accès IPv6 du sous-réseau détermine si l'adresse IPv6 attribuée à la VM est une adresse IPv6 interne ou externe.

Console

  1. Configurer un VPC partagé
  2. Dans Google Cloud Console, accédez à la page VPC partagé.

    Accéder à la page "VPC partagé"

  3. Connectez-vous en tant qu'administrateur de VPC partagé.

  4. Sélectionnez le projet de service dans l'outil de sélection de projets.

  5. Pour accéder à la page Créer une instance, sélectionnez Compute Engine > Instances de VM > Créer une instance.

  6. Renseignez un nom pour l'instance.

  7. Dans le champ Région, sélectionnez une région contenant un sous-réseau partagé.

  8. Cliquez sur Mise en réseau sous Options avancées.

  9. Sous Interfaces réseau, cliquez sur la case d'option Réseaux partagés avec moi.

  10. Dans la liste Sous-réseau partagé, sélectionnez le sous-réseau requis dans lequel vous souhaitez créer l'instance :

    • Pour les adresses IPv4, sélectionnez un sous-réseau à pile unique.
    • Pour les adresses IPv6, sélectionnez un sous-réseau à double pile avec le type d'accès IPv6 requis.
  11. Sélectionnez le type de pile d'adresses IP :

    • Pour les adresses IPv4, sélectionnez IPv4 (pile unique).
    • Pour les adresses IPv6, sélectionnez IPv4 et IPv6 (double pile).
  12. Renseignez tout autre paramètre nécessaire pour la création de l'instance.

  13. Cliquez sur Créer.

gcloud

  • Pour créer une instance avec une adresse IPv4 interne éphémère dans un sous-réseau partagé d'un réseau VPC partagé :

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.
    • ZONE : zone située dans la région spécifiée. .
  • Pour créer une instance avec une adresse IPv4 interne statique réservée dans un réseau VPC partagé :

    1. Réservez une adresse IPv4 interne statique dans le projet de service à partir de la plage d'adresses disponibles du projet hôte.
    2. Créez l'instance :

      gcloud compute instances create INSTANCE_NAME \
          --project SERVICE_PROJECT_ID \
          --private-network-ip IP_ADDR_NAME \
          --zone ZONE \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Remplacez les éléments suivants :

      • INSTANCE_NAME : nom de l'instance.
      • SERVICE_PROJECT_ID : ID du projet de service.
      • IP_ADDR_NAME : nom de l'adresse IP statique
      • ZONE : zone située dans la même région que IP_ADDR_NAME.
      • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
      • REGION : région qui contient le sous-réseau partagé.
      • SUBNET : nom du sous-réseau partagé associé à l'adresse IPv4 interne statique.
  • Pour créer une instance avec une adresse IPv4 interne éphémère et une adresse IPv6 éphémère :

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.
    • ZONE : zone située dans la région spécifiée.
  • Créez une instance avec une adresse IPv6 externe statique réservée :

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.
    • IPV6_ADDRESS : adresse IPv6 à attribuer à l'instance.
    • ZONE : zone située dans la région spécifiée.

API

  • Pour créer une instance avec une adresse IPv4 interne éphémère, spécifiez uniquement le sous-réseau :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance.
    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • MACHINE_TYPE : type de machine pour l'instance.
    • REGION : région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • SOURCE_IMAGE : image de l'instance.
    • SUBNET : nom du sous-réseau partagé.
    • ZONE : zone située dans la région spécifiée.

    Pour en savoir plus, consultez la section sur la méthode instances.insert.

  • Pour créer une instance avec une adresse IPv4 interne réservée, spécifiez le sous-réseau et le nom de l'adresse IPv4 réservée :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Remplacez les éléments suivants :

    • ADDRESS_NAME : nom de l'adresse IPv4 interne réservée.
    • INSTANCE_NAME : nom de l'instance.
    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • MACHINE_TYPE : type de machine pour l'instance.
    • REGION : région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • SOURCE_IMAGE : image de l'instance.
    • SUBNET : nom du sous-réseau partagé.
    • ZONE : zone située dans la région spécifiée.

    Pour en savoir plus, consultez la section sur la méthode instances.insert.

  • Pour créer une instance avec une adresse IPv4 interne éphémère et une adresse IPv6 éphémère, spécifiez le sous-réseau et le type de pile :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPv4_IPv6"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance.
    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • MACHINE_TYPE : type de machine pour l'instance.
    • REGION : région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • SOURCE_IMAGE : image de l'instance.
    • SUBNET : nom du sous-réseau partagé.
    • ZONE : zone située dans la région spécifiée.

    Pour en savoir plus, consultez la section sur la méthode instances.insert.

Terraform

Vous pouvez utiliser un bloc de données Terraform pour spécifier les informations sur le sous-réseau hôte. Créez ensuite une instance de VM dans un projet de service à l'aide d'une ressource Terraform.

Spécifiez le sous-réseau hôte :

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Créez une instance de VM dans un projet de service avec une adresse IPv4 éphémère du sous-réseau partagé du projet hôte :

resource "google_compute_instance" "ephemeral_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "my-vm"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Créez une instance de VM dans un projet de service avec une adresse IPv4 statique réservée du sous-réseau partagé du projet hôte :

resource "google_compute_instance" "reserved_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "reserved-ip-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
    network_ip = google_compute_address.internal.address
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Créer un modèle d'instance

Tenez compte des points suivants lorsque vous utilisez un VPC partagé pour créer un modèle d'instance:

  • Le processus de création d'un modèle d'instance implique la sélection d'un réseau et d'un sous-réseau.

    • Les modèles créés pour être utilisés dans un réseau VPC partagé et en mode personnalisé doivent spécifier aussi bien le réseau qu'un sous-réseau.

    • Les modèles créés pour être utilisés dans un réseau VPC partagé et en mode automatique peuvent éventuellement différer la sélection d'un sous-réseau. Dans ce cas, il y aura sélection automatique d'un sous-réseau dans la même région que tout groupe d'instances géré utilisant le modèle. (Les réseaux en mode automatique possèdent, par définition, un sous-réseau dans chaque région.)

  • Lorsqu'un compte principal IAM crée un modèle d'instance, Google Cloud n'effectue aucune vérification des autorisations pour déterminer si le compte principal peut utiliser le sous-réseau spécifié. Cette vérification des autorisations s'applique toujours quand un groupe d'instances géré utilisant le modèle est demandé.

  • Vous pouvez créer un modèle d'instance à double pile dans un sous-réseau à double pile. Les sous-réseaux à double pile ne sont compatibles qu'avec les réseaux VPC en mode personnalisé. Le type d'accès IPv6 du sous-réseau détermine si l'adresse IPv6 attribuée à la VM est une adresse IPv6 interne ou externe.

Console

  1. Configurer un VPC partagé
  2. Dans Google Cloud Console, accédez à la page "VPC partagé".
    Accéder à la page "VPC partagé"
  3. Connectez-vous en tant qu'administrateur de VPC partagé.
  4. Sélectionnez le projet de service dans l'outil de sélection de projets.
  5. Pour accéder à la page Créer un modèle d'instance, sélectionnez Compute Engine > Modèles d'instances > Créer des modèles d'instance.
  6. Renseignez un nom pour le modèle d'instance.
  7. Dans la section Options avancées, cliquez sur Mise en réseau.
  8. Dans la section Interfaces réseau, cliquez sur l'icône Case d'option Réseaux partagés avec moi.
  9. Dans la liste Sous-réseau partagé, sélectionnez le sous-réseau requis dans lequel vous souhaitez créer le modèle d'instance :
    • Pour les adresses IPv4, sélectionnez un sous-réseau à pile unique.
    • Pour les adresses IPv6, sélectionnez un sous-réseau à double pile avec le type d'accès IPv6 requis.
  10. Sélectionnez le type de pile d'adresses IP :
    • Pour les adresses IPv4, sélectionnez IPv4 (pile unique).
    • Pour les adresses IPv6, sélectionnez IPv4 et IPv6 (double pile).
  11. Renseignez tout autre paramètre nécessaire pour la création du modèle d'instance.
  12. Cliquez sur Créer.

gcloud

  • Pour créer un modèle d'instance IPv4 uniquement à utiliser dans un sous-réseau créé automatiquement au sein d'un réseau VPC partagé en mode automatique :

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Remplacez les éléments suivants :

    • TEMPLATE_NAME : nom du modèle
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • NETWORK : nom du réseau VPC partagé.
  • Pour créer un modèle d'instance IPv4 uniquement pour un sous-réseau créé manuellement au sein d'un réseau VPC partagé (en mode automatique ou personnalisé) :

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Remplacez les éléments suivants :

    • TEMPLATE_NAME : nom du modèle
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.
  • Pour créer un modèle d'instance à double pile utilisant un sous-réseau d'un réseau VPC partagé en mode personnalisé :

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Remplacez les éléments suivants :

    • TEMPLATE_NAME : nom du modèle
    • SERVICE_PROJECT_ID : ID du projet de service.
    • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SUBNET : nom du sous-réseau partagé.

API

  • Pour créer un modèle d'instance IPv4 uniquement qui utilise n'importe quel sous-réseau créé automatiquement d'un réseau VPC partagé en mode automatique, spécifiez le réseau VPC.

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • NETWORK : nom du réseau VPC partagé.

    Pour en savoir plus, consultez la section sur la méthode instanceTemplates.insert.

  • Pour créer un modèle d'instance IPv4 uniquement qui utilise un sous-réseau créé manuellement dans un réseau VPC partagé (en mode automatique ou personnalisé), spécifiez le sous-réseau :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • SUBNET_NAME : nom du sous-réseau partagé.

    Pour en savoir plus, consultez la section sur la méthode instanceTemplates.insert.

  • Pour créer un modèle d'instance à double pile utilisant un sous-réseau d'un réseau VPC partagé en mode personnalisé, spécifiez le sous-réseau et le type de pile :

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ]
    ...
    }
    

    Remplacez les éléments suivants :

    • HOST_PROJECT_ID : ID du projet qui contient le réseau VPC partagé.
    • REGION : région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID : ID du projet de service.
    • SUBNET_NAME : nom du sous-réseau partagé.

    Pour en savoir plus, consultez la section sur la méthode instanceTemplates.insert.

Terraform

Vous pouvez utiliser un bloc de données Terraform pour spécifier les informations sur le sous-réseau hôte. Créez ensuite un modèle d'instance de VM à l'aide d'une ressource Terraform. Les adresses IPv4 des VM proviennent du sous-réseau partagé du projet hôte.

Le sous-réseau doit exister dans la même région que celle dans laquelle les instances de VM sont créées.

Spécifiez le sous-réseau hôte :

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Créez un modèle d'instance de VM dans le projet de service :

resource "google_compute_instance_template" "default" {
  project      = var.service_project
  name         = "appserver-template"
  description  = "This template is used to create app server instances."
  machine_type = "n1-standard-1"
  disk {
    source_image = "debian-cloud/debian-9"
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Créer un groupe d'instances géré

Lorsque vous créez un groupe d'instances géré dans le cadre d'un VPC partagé, gardez à l'esprit les points suivants :

  • Pour utiliser des groupes d'instances gérés dans un VPC partagé, le compte de service des API Google doit être administrateur de projet de service car c'est ce compte qui assure l'exécution de tâches telles que la création automatique d'instances par autoscaling.

  • Le processus standard de création d'un groupe d'instances géré implique la sélection d'une zone ou d'une région, suivant le type de groupe, ainsi que d'un modèle d'instance. (Les détails du réseau et du sous-réseau sont liés au modèle d'instance.) Seuls les modèles d'instances faisant référence aux sous-réseaux de la même région que le groupe d'instances géré sont éligibles.

  • Les administrateurs de projet de service ne peuvent créer des groupes d'instances gérés que si les instances membres utilisent des sous-réseaux pour lesquels ils ont reçu une autorisation. Étant donné que les détails du réseau et du sous-réseau sont liés au modèle d'instance, les administrateurs de projet de service ne peuvent utiliser que les modèles faisant référence à des sous-réseaux qu'ils sont autorisés à utiliser.

  • Lorsque Google Cloud reçoit une demande de création d'un groupe d'instances géré, il vérifie si le compte principal IAM à l'origine de cette demande est autorisé à utiliser le sous-réseau (dans la même région que le groupe) spécifié dans le modèle d'instance. Si la vérification échoue, le groupe d'instances géré n'est pas créé et Google Cloud renvoie une erreur : Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME.

    Répertoriez les sous-réseaux disponibles pour déterminer ceux que vous pouvez utiliser et contactez l'administrateur de VPC partagé si le compte de service a besoin d'un accès supplémentaire. Pour plus d'informations, consultez la section Comptes de service en tant qu'administrateurs de projet de service.

Pour plus d'informations, consultez la page Créer des groupes d'instances gérés dans la documentation Compute Engine.

Créez un équilibreur de charge HTTPS

Il existe plusieurs façons de configurer des équilibreurs de charge d'application externes dans un réseau VPC partagé. Quel que soit le type de déploiement, tous les composants de l'équilibreur de charge doivent appartenir à la même organisation et au même réseau VPC partagé.

Pour en savoir plus sur les architectures de VPC partagé compatibles, consultez les ressources suivantes :

Créer un équilibreur de charge réseau passthrough interne

L'exemple suivant illustre les éléments à prendre en compte lors de la création d'un équilibreur de charge réseau passthrough interne dans un réseau VPC partagé. Les administrateurs de projet de service peuvent créer un équilibreur de charge réseau interne qui utilise un sous-réseau (appartenant au projet hôte) auquel ils ont accès. La règle de transfert interne de l'équilibreur de charge est définie dans le projet de service, mais sa référence de sous-réseau pointe vers un sous-réseau situé dans un réseau VPC partagé du projet hôte.

Avant de créer un équilibreur de charge réseau passthrough interne dans un environnement VPC partagé, consultez la page Architecture de VPC partagé.

Console

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page Équilibrage de charge

  2. Créez l'équilibreur de charge TCP/UDP interne avec les réglages suivants : dans la section Configurer les services frontend, sélectionnez le sous-réseau de VPC partagé souhaité dans la section Réseaux partagés par d'autres projets du menu Sous-réseau.

  3. Terminez la création de l'équilibreur de charge.

gcloud

Lorsque vous créez la règle de transfert interne, spécifiez un sous-réseau dans le projet hôte avec l'option --subnet :

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,... \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Remplacez les éléments suivants :

  • FR_NAME : nom de la règle de transfert.
  • SERVICE_PROJECT_ID : ID du projet de service.
  • REGION : région qui contient le sous-réseau partagé.
  • IP_PROTOCOL : TCP ou UDP, en fonction du protocole du service de backend de l'équilibreur de charge.
  • PORT : numéro de port ou liste des numéros de ports de l'équilibreur de charge.
  • BACKEND_SERVICE_NAME : nom du service de backend (préalablement créé lors de la procédure générale de création d'un équilibreur de charge réseau passthrough interne).
  • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
  • SUBNET : nom du sous-réseau partagé.
  • INTERNAL_IP : adresse IP interne située dans le sous-réseau partagé (si cette valeur n'est pas renseignée, une adresse disponible sera sélectionnée).

Pour accéder à d'autres options, consultez la documentation sur la commande gcloud compute forwarding-rules create.

API

Créez la règle de transfert interne et spécifiez un sous-réseau dans le projet hôte.

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

Remplacez les éléments suivants :

  • BE_NAME : nom du service de backend (préalablement créé lors de la procédure générale de création d'un équilibreur de charge réseau passthrough interne).
  • FR_NAME : nom de la règle de transfert.
  • HOST_PROJECT_ID : ID du projet hôte de VPC partagé.
  • IP_ADDRESS : adresse IP interne dans le sous-réseau partagé.
  • IP_PROTOCOL : TCP ou UDP, en fonction du protocole du service de backend de l'équilibreur de charge.
  • PORT : numéro de port ou la liste des numéros de ports de l'équilibreur de charge.
  • REGION : région qui contient le sous-réseau partagé.
  • SERVICE_PROJECT_ID : ID du projet de service.
  • SUBNET : nom du sous-réseau partagé.

Pour en savoir plus, consultez la section sur la méthode forwardingRules.insert.

Terraform

Vous pouvez utiliser un bloc de données Terraform pour spécifier le sous-réseau hôte et le réseau hôte. Créez ensuite la règle de transfert à l'aide d'une ressource Terraform.

Spécifiez le réseau hôte :

data "google_compute_network" "network" {
  name    = "my-network-123"
  project = var.project
}

Spécifiez le sous-réseau hôte :

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Dans le projet de service, créez une règle de transfert dans le réseau et le sous-réseau du projet hôte :

resource "google_compute_forwarding_rule" "default" {
  project               = var.service_project
  name                  = "l4-ilb-forwarding-rule"
  backend_service       = google_compute_region_backend_service.default.id
  region                = "europe-west1"
  ip_protocol           = "TCP"
  load_balancing_scheme = "INTERNAL"
  all_ports             = true
  allow_global_access   = true
  network               = data.google_compute_network.network.self_link
  subnetwork            = data.google_compute_subnetwork.subnet.self_link
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Étapes suivantes