Créer un VPC partagé avec Deployment Manager (tutoriel)

Ce tutoriel va vous guider tout au long du processus de configuration du VPC partagé à l'aide de Deployment Manager, qui permet d'appliquer des règles de sécurité réseau strictes dans l'ensemble de votre organisation pour accéder aux ressources GCP.

Présentation

Dans les grandes organisations, il peut être nécessaire d'associer différents services ou différentes applications à différents projets pour séparer la budgétisation, le contrôle d'accès, etc. La fonctionnalité de VPC partagé permet aux administrateurs de la ressource Organisation d'autoriser plusieurs projets à utiliser un même réseau VPC partagé et les ressources réseau correspondantes.

Grâce au VPC partagé, en tant qu'administrateur de l'organisation, vous pouvez autoriser les administrateurs réseau et sécurité de votre organisation à gérer un réseau VPC d'espaces IP RFC 1918 (et des fonctionnalités associées telles que les VPN ou les règles de pare-feu) que les projets associés peuvent utiliser. Les administrateurs des projets associés peuvent créer des instances de machine virtuelle (VM) dans l'espace réseau VPC partagé. Vous pouvez utiliser et appliquer des stratégies cohérentes dans une organisation.

Le VPC partagé étant souvent utilisé dans de grandes organisations ou dans des organisations avec des règles de sécurité strictes, il est important de pouvoir reproduire facilement une configuration de VPC partagé. Pour ce faire, vous pouvez utiliser Deployment Manager, un outil IAC (Infrastructure as Code).

À propos de l'exécution du tutoriel

Dans ce tutoriel, nous partons du principe que vous connaissez les ressources "Organisation" dans Google Cloud Platform (GCP) et que vous êtes l'administrateur d'une ressource "Organisation". Une bonne connaissance des VPC partagés et de Deployment Manager vous aidera à suivre ce tutoriel. Tout au long de ce tutoriel, le terme déploiement désigne un déploiement à partir de Deployment Manager.

Pour des raisons de simplicité, ce tutoriel utilise un seul utilisateur IAM, c'est-à-dire votre identité existante en tant qu'administrateur de la ressource "Organisation". (Si vous ne disposez pas déjà d'une ressource "Organisation", vous pouvez trouver des instructions dans la section Avant de commencer pour en créer une.) Dans une entreprise, trois personnes différentes sont généralement impliquées dans la configuration du scénario illustré par ce tutoriel : un administrateur de la ressource "Organisation", un administrateur réseau (qui gère le VPC partagé) et un utilisateur du VPC partagé.

Architecture de déploiement

Le diagramme suivant montre l'architecture de cette solution :

Architecture du VPC partagé

Dans ce tutoriel, vous créez trois des projets à partir de ce diagramme :

  • Le projet de base de Deployment Manager est géré par un administrateur de ressources de l'organisation (dans ce tutoriel, nous supposons qu'il s'agit de vous). Il permet de créer d'autres projets ainsi que la configuration du VPC partagé.
  • Le projet hôte est géré par les administrateurs réseau et héberge le VPC partagé. Toute la configuration du réseau est effectuée dans ce projet.
  • Le projet de service est géré par les utilisateurs du VPC partagé. Dans ce projet, des ressources peuvent être créées dans le VPC partagé à partir du projet hôte.

Objectifs

  • Créer et configurer le projet de base Deployment Manager
  • Créer les projets hôte et de service avec Deployment Manager
  • Configurer la fonctionnalité VPC partagé
  • Configurer le VPC et certains sous-réseaux dans le projet hôte
  • Valider l'accès du VPC dans le projet de service

Coûts

Ce tutoriel utilise des composants facturables de GCP, y compris :

  • Compute Engine

Utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.

Avant de commencer

Ce tutoriel est défini dans le contexte d'une organisation GCP. Si vous ne disposez pas d'une telle organisation, créez-en une. Pour plus d'informations, consultez la section Créer et gérer des organisations.

Plus loin dans ce tutoriel, vous créerez deux projets GCP avec un déploiement (c'est-à-dire un déploiement Deployment Manager). Vous créerez ce déploiement dans un projet dédié avec une configuration spécifique. Les étapes suivantes vous guident tout au long de la mise en place initiale de ce projet et de sa configuration.

Créer un projet de base pour Deployment Manager

  1. Ouvrez Cloud Shell.

    Ouvrir Cloud Shell

  2. Si vous ne disposez pas encore d'un compte de facturation, créez-en un. Pour plus d'informations, consultez la page Créer un compte de facturation.

  3. Créez un projet dans la ressource "Organisation" et configurez un compte de facturation pour celui-ci. Vous devez choisir un identifiant unique pour ce projet. Par exemple, vous pouvez utiliser un nom tel que [YOUR_NAME]-[DATE]-dm-home.

    gcloud

    1. Affichez la liste des organisations et notez l'ID de l'organisation :

      gcloud organizations list
    2. Définissez les variables d'environnement pour les valeurs que vous utilisez de manière répétée dans ce tutoriel. Remplacez [ORG_ID] par la valeur que vous avez copiée à l'étape précédente et remplacez [DM_HOME_PROJECT_ID] par l'ID du projet de base.

      export ORG_ID=[ORG_ID]
      export DM_HOME_PROJECT=[DM_HOME_PROJECT_ID]
    3. Créez le projet :

      gcloud projects create $DM_HOME_PROJECT \
          --organization=$ORG_ID
    4. Obtenez une liste des ID de compte de facturation pour le projet et notez l'ID de compte de facturation approprié :

      gcloud beta billing accounts list
    5. Si vous avez accès à plusieurs comptes de facturation, examinez vos stratégies internes pour chacun d'entre eux et choisissez celle qui convient.

    6. Définissez une variable d'environnement sur l'ID de compte de facturation obtenu lors de l'étape précédente. Remplacez [BILLING_ACCOUNT_ID] par l'ID de compte de facturation obtenu lors de l'étape précédente.

      export BILLING_ACCOUNT_ID=[BILLING_ACCOUNT_ID]
    7. Activez la facturation pour le nouveau projet :

      gcloud beta billing projects link $DM_HOME_PROJECT \
          --billing-account=$BILLING_ACCOUNT_ID

    Console

    1. Dans la console GCP, ouvrez la page Gérer les ressources.

      [Accéder à la page de gestion des ressources](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    2. Dans la liste déroulante Organisation dans l'angle supérieur gauche, sélectionnez votre organisation.

    3. Cliquez sur Créer un projet, puis entrez l'ID que vous avez choisi comme nom de projet.

    4. Si vous avez accès à plusieurs comptes de facturation, sélectionnez celui que vous souhaitez utiliser pour ce tutoriel (examinez vos stratégies internes pour chacun d'eux) dans la section Compte de facturation.

    5. Dans la section Organisation, vérifiez que l'organisation est sélectionnée.

    6. Cliquez sur Créer.

  4. Activez les API nécessaires pour le reste du tutoriel.

    gcloud

    gcloud services enable cloudbilling.googleapis.com \
        deploymentmanager.googleapis.com \
        cloudresourcemanager.googleapis.com \
        iam.googleapis.com \
        servicemanagement.googleapis.com \
        --project $DM_HOME_PROJECT

    Console

    1. Assurez-vous d'avoir sélectionné le nouveau projet dans la console GCP. Si nécessaire, basculez vers le nouveau projet dans la page Gérer les ressources.

      [Accéder à la page de gestion des ressources](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    2. Accédez à la page Bibliothèque d'API.

      [Accéder à la page de la bibliothèque d'API](https://console.cloud.google.com/apis/library){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    3. Activez les API suivantes :

      • API Google Cloud Billing
      • API IAM (Google Identity and Access Management)
      • API Google Service Management
      • API Google Cloud Deployment Manager V2
      • API Google Cloud Resource Manager

Configurer les stratégies de la ressource "Organisation"

Le VPC partagé est une fonctionnalité au niveau de l'organisation. Par conséquent, certaines stratégies au niveau de l'organisation doivent être configurées. Le compte de service utilisé par Deployment Manager doit posséder des rôles spécifiques au niveau de l'organisation.

gcloud


  1. Définissez les variables d'environnement pour le numéro du projet et le nom du compte de service. Les commandes suivantes lisent les valeurs du projet, puis les utilisent pour définir les variables d'environnement.

    export PROJECT_NUMBER=$(gcloud projects describe $DM_HOME_PROJECT \
        --format="value(projectNumber)")
    export DM_SA=${PROJECT_NUMBER}@cloudservices.gserviceaccount.com
  2. Ajoutez des stratégies IAM :

    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/resourcemanager.projectCreator \
        --member="serviceAccount:${DM_SA}"
    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/billing.user \
        --member="serviceAccount:${DM_SA}"
    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/compute.xpnAdmin \
        --member="serviceAccount:${DM_SA}"

Console


  1. Dans le projet, accédez à IAM et administration > Paramètres.

  2. Notez le numéro du projet.

  3. Accédez à IAM et administration > IAM.

  4. Basculez vers votre organisation dans le menu principal de sélection de projet.

  5. Cliquez sur Ajouter en haut de la fenêtre.

  6. Ajoutez les rôles suivants au compte de service Deployment Manager. Le nom de ce compte de service est [PROJECT_NUMBER]@cloudservices.gserviceaccount.com, où [PROJECT_NUMBER] correspond à la valeur que vous avez notée précédemment.

    • Resource Manager > Créateur de projet
    • Facturation > Utilisateur de compte de facturation
    • Compute Engine > Administrateur VPC Compute partagé

Créer des projets et configurer le VPC partagé

Vous êtes maintenant prêt à créer les projets hôte et de service avec Deployment Manager. Si vous avez utilisé la console GCP, vous devez désormais basculer vers Cloud Shell.

  1. Si votre session a expiré ou si vous l'avez fermée, ouvrez une nouvelle session Cloud Shell.

    Ouvrir Cloud Shell

  2. Dans Cloud Shell, clonez le dépôt Git suivant :

    git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git
  3. Accédez à l'exemple project_creation dans le dépôt que vous avez cloné :

    cd $HOME/deploymentmanager-samples/examples/v2/project_creation
  4. Ouvrez le fichier config_shared_vpc.yaml :

    nano config_shared_vpc.yaml
  5. Définissez les valeurs répertoriées dans le tableau suivant.

    Paramètre Description
    HOST_PROJECT Nom unique pour le projet hôte. Le projet hôte correspond à l'emplacement où le VPC sera créé et géré. Notez que vous devez également modifier cette valeur dans la dernière ligne du fichier (deux remplacements au total).

    Exemple :

    [YOUR_NAME]-[DATE]-host
    SERVICE_PROJECT Nom unique pour le projet de service. Le projet de service correspond à l'emplacement dans lequel le VPC du projet hôte sera utilisé.

    Exemple :

    [YOUR_NAME]-[DATE]-svc
    ORG_ID ID de l'organisation. Vous avez obtenu cette valeur dans les étapes précédentes. Si ce n'est pas le cas, vous pouvez l'obtenir en exécutant la commande suivante :
    
    gcloud organizations list

    Utilisez des guillemets autour de l'ID de l'organisation pour qu'il ne soit pas considéré comme une valeur numérique dans le fichier YAML.

    BILLING_ACCOUNT_ID ID du compte de facturation. Vous avez obtenu cette valeur dans les étapes précédentes. Si ce n'est pas le cas, vous pouvez l'obtenir en exécutant la commande suivante :
    
    gcloud beta billing accounts list
    EMAIL Votre adresse e-mail. Notez que vous devez définir votre adresse e-mail à cinq endroits au total.
  6. Enregistrez le fichier et quittez nano avec la séquence de touches suivante :

    ^O <Enter> ^X

  7. Si vous avez utilisé la console GCP pour créer le projet de base Deployment Manager, définissez une variable d'environnement sur l'ID du projet de base :

    export DM_HOME_PROJECT=[DM_HOME_PROJECT]
  8. Créez un aperçu du déploiement :

    gcloud deployment-manager deployments \
        create shared-vpc-projects \
        --config config_shared_vpc.yaml --preview \
        --project $DM_HOME_PROJECT

    La création d'un aperçu du déploiement Deployment Manager vous permet d'afficher quelles ressources sont créées, mises à jour ou supprimées.

  9. Appliquez l'aperçu du déploiement :

    gcloud deployment-manager deployments \
        update shared-vpc-projects \
        --project $DM_HOME_PROJECT
  10. Affichez le déploiement dans la console GCP. Si nécessaire, sélectionnez le projet de base Deployment Manager dans le menu principal de sélection de projet.

    ACCÉDER À DEPLOYMENT MANAGER

Après quelques minutes, le déploiement est terminé et les deux projets sont créés. Bien que le projet de service soit déjà lié au projet hôte, vous n'avez pas encore créé le VPC partagé.

Résoudre les problèmes

En cas de problème lors de la création de l'aperçu, vous pouvez supprimer le déploiement (aucune ressource n'a encore été créée) et relancer le processus.

Toutefois, si l'aperçu a été créé mais que le déploiement a échoué, vous ne pourrez peut-être pas recréer ce déploiement. Les projets ne peuvent pas être supprimés et recréés immédiatement ; ils sont marqués pour suppression pendant une période de sécurité de 30 jours. Si vous devez recréer le déploiement, modifiez les valeurs des paramètres HOST_PROJECT et SERVICE_PROJECT dans le fichier config_shared_vpc.yaml avant de réessayer.

Créer le VPC

Vous allez maintenant utiliser un autre modèle de Deployment Manager pour créer le VPC dans le projet hôte. Cette opération est généralement effectuée par un administrateur réseau. La configuration du VPC partagé ayant déjà été définie, le VPC est immédiatement disponible pour une utilisation dans le projet de service.

Déployer la configuration réseau

  1. Définissez les variables d'environnement sur les noms de projet hôte et de projet de service définis dans le fichier config_shared_vpc.yaml :

    export HOST_PROJECT=[HOST_PROJECT]
    export SERVICE_PROJECT=[SERVICE_PROJECT]
  2. Accédez à l'exemple network dans le dépôt Git :

    cd $HOME/deploymentmanager-samples/community/network/

    Dans le fichier config.yaml, une ressource de type network.py dotée de trois sous-réseaux avec leurs propres CIDR s'affiche. Vous pouvez essayer de modifier ou de dupliquer cette ressource selon vos besoins.

  3. Créez un aperçu du déploiement. Ce déploiement est créé dans le projet hôte.

    gcloud deployment-manager deployments create host-network \
        --config config.yaml --preview \
        --project $HOST_PROJECT
  4. Appliquez l'aperçu du déploiement.

    gcloud deployment-manager deployments update host-network \
        --project $HOST_PROJECT

Validation

Vous pouvez maintenant valider l'accès au réseau du projet hôte à partir du projet de service. Vous pouvez accéder à ce réseau, car vous disposez du rôle roles/compute.networkUser dans le projet hôte. Dans le cadre d'un déploiement de production, vous devez attribuer ce rôle à tous les utilisateurs qui utilisent un VPC partagé.

  1. Créez une instance de test dans le projet de service en utilisant un sous-réseau du projet hôte.

    gcloud

    gcloud compute instances create instance-test \
        --zone us-east1-b \
        --subnet \
        "projects/$HOST_PROJECT/regions/us-east1/subnetworks/host-network-us-east1" \
        --project $SERVICE_PROJECT

    Console


    1. Sélectionnez le projet de service.

      [ACCÉDER À LA PAGE DE GESTION DES RESSOURCES](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }
    2. Accédez à la page "Instances de VM".

      [ACCÉDER À LA PAGE "INSTANCES DE VM"](https://console.cloud.google.com/compute/instances){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }
    3. Cliquez sur Créer.
    4. Dans la section Nom, saisissez "instance-test".
    5. Assurez-vous que l'option "us-east1-b" est sélectionnée dans la section Zone.
    6. Cliquez sur Gestion, sécurité, disques, réseau et location unique.
    7. Cliquez sur l'onglet Networking (Réseau).
    8. Cliquez sur l'interface réseau existante.
    9. Choisissez l'option Réseaux partagés avec moi.
    10. ![Section "Réseaux partagés avec moi" sur la page "Créer une instance"](/solutions/images/shared-vpc-with-deployment-manager-networks-shared-with-me.png){: class="screenshot" width="50%"}
    11. Cliquez sur OK au bas de la section Interface réseau.
    12. Cliquez sur Créer.

    Patientez quelques minutes pour que l'instance démarre. Une fois que l'instance est prête, elle est répertoriée sur la page "Instances de VM" avec une icône d'état verte.

  2. Vérifiez que l'instance utilise le VPC partagé.

    gcloud

    gcloud compute instances describe instance-test \
        --zone us-east1-b --project $SERVICE_PROJECT \
        --format="value(networkInterfaces[0].network)"

    Le résultat de cette commande correspond au lien vers le VPC utilisé par l'instance que vous avez créée. À partir de ce lien, vous pouvez voir que le VPC provient du projet hôte, même si l'instance a été créée dans le projet de service (résultat de l'utilisation de l'indicateur --project dans la commande).

    Console


    1. Sélectionnez votre instance dans la liste d'instances.
    2. Vérifiez qu'elle utilise le réseau du projet hôte.

      ![Liste des interfaces réseau affichant "host-network-us-east1"](/solutions/images/shared-vpc-with-deployment-manager-verify-network.png){: class="screenshot"}

Nettoyer

Une fois que vous avez terminé ce tutoriel, vous pouvez procéder au nettoyage des ressources que vous avez créées sur GCP afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.

  1. Dans Cloud Shell, supprimez l'instance de test :

    gcloud compute instances delete instance-test \
        --project $SERVICE_PROJECT \
        --zone us-east1-b
  2. Si vous avez configuré la protection de suppression de projet, supprimez-la :

    gcloud beta resource-manager org-policies disable-enforce \
        --organization $ORG_ID compute.restrictXpnProjectLienRemoval
  3. Supprimez le déploiement host-network :

    gcloud deployment-manager deployments delete host-network \
        --project $HOST_PROJECT
  4. Supprimez le déploiement shared-vpc-projects :

    gcloud deployment-manager deployments \
        delete shared-vpc-projects \
        --project $DM_HOME_PROJECT
  5. Supprimez le projet de base :

    gcloud projects delete $DM_HOME_PROJECT

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…