Utiliser des réseaux VPC partagés

Cette page s'applique à Apigee, mais pas à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Ce document explique comment configurer un hôte VPC (Virtual Private Cloud) partagé et y associer des projets de service cibles de backend et Apigee séparés. Les réseaux VPC partagés vous permettent de mettre en œuvre une infrastructure réseau gérée de manière centralisée avec Google Cloud. Vous pouvez utiliser un seul réseau VPC dans un projet hôte pour connecter les ressources de plusieurs projets de service.

Avantages du VPC partagé

L'environnement d'exécution Apigee (s'exécutant dans un VPC géré par Google) est appairé au VPC vous appartenant. Dans cette topologie, le point de terminaison d'exécution Apigee peut communiquer avec votre réseau VPC, comme illustré dans le schéma suivant :

VPC partagé avec des backends internes dans le VPC d'un autre projet

Consultez également la page Présentation de l'architecture Apigee.

Dans de nombreux scénarios, la topologie décrite ci-dessus est trop simple, car le réseau VPC fait partie d'un seul projet Google Cloud. De nombreuses organisations souhaitent appliquer les bonnes pratiques en matière de hiérarchies de ressources et séparer leur infrastructure en plusieurs projets. Imaginons une topologie de réseau dans laquelle le projet locataire Apigee est appairé à un réseau VPC comme auparavant, mais dans lequel les backends internes sont situés dans le VPC d'un autre projet, comme le montre ce schéma :

VPC partagé avec des backends internes dans le VPC d'un autre projet

Si vous associez votre VPC Apigee au VPC de backend, comme illustré dans le schéma, vous pouvez accéder au backend depuis votre réseau VPC Apigee, et inversement, car l'appairage de réseaux est symétrique. Le projet locataire Apigee ne peut toutefois communiquer qu'avec le VPC Apigee, car l'appairage n'est pas transitif, comme décrit dans la documentation sur l'appairage de VPC. Pour que cela fonctionne, vous pouvez déployer des proxys supplémentaires dans votre VPC Apigee pour transférer le trafic via le lien d'appairage vers le VPC de backend. Cependant, cette approche ajoute des coûts de maintenance et des coûts opérationnels supplémentaires.

Le VPC partagé offre une solution au problème décrit ci-dessus. Le VPC partagé vous permet d'établir la connectivité entre l'environnement d'exécution Apigee et les backends situés dans d'autres projets Google Cloud de la même organisation sans composants réseau supplémentaires.

Configurer un VPC partagé avec Apigee

Cette section explique comment associer un projet de service VPC Apigee à un hôte VPC partagé. Les sous-réseaux définis dans le projet hôte sont partagés avec les projets de service. Dans une section ultérieure, nous expliquons comment créer un deuxième sous-réseau pour les services de backend déployés dans un deuxième projet de service VPC. Le schéma suivant illustre l'architecture obtenue :

Présentation de l'architecture de VPC partagé

Apigee fournit un script de provisionnement pour simplifier la création de la topologie requise. Suivez les étapes de cette section pour télécharger et utiliser le script de provisionnement afin de configurer Apigee avec un VPC partagé.

Prérequis

  1. Examinez les concepts abordés sur la page Présentation du VPC partagé. Il est important de comprendre les concepts de projet hôte et de projet de service.
  2. Créez un projet Google Cloud que vous pouvez configurer pour le VPC partagé. Ce projet est le projet hôte. Consultez la page Créer et gérer des projets.
  3. Suivez les étapes figurant sur la page Provisionner un VPC partagé pour provisionner le projet pour le VPC partagé. Pour activer le projet hôte pour un VPC partagé, vous devez être un administrateur de l'organisation ou disposer des rôles IAM (Identity and Access Management) administratifs appropriés.
  4. Créez un second projet Google Cloud. Ce projet est un projet de service. Vous l'associerez plus tard au projet hôte.

Télécharger le script

Apigee fournit un script de provisionnement pour simplifier la création de la topologie requise. Vous devez extraire le script de GitHub:

  1. Clonez le projet GitHub contenant le script :
    git clone https://github.com/apigee/devrel.git
  2. Accédez au répertoire suivant du projet :
    cd devrel/tools/apigee-x-trial-provision
  3. Définissez les variables d'environnement suivantes :
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Où :

    • HOST_PROJECT_ID est l'ID du projet hôte de VPC partagé que vous avez créé comme l'une des conditions préalables.
    • SERVICE_PROJECT_ID est l'ID du projet de service Google Cloud que vous avez créé comme l'une des conditions préalables.

Configurer le projet hôte

  1. Définissez les variables d'environnement suivantes :
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Où :

    • YOUR_SHARED_VPC correspond au nom du réseau VPC partagé.
    • YOUR_SHARED_SUBNET correspond au nom de votre sous-réseau VPC partagé.
    • CIDR_BLOCK correspond au bloc CIDR du VPC Apigee. Exemple : 10.111.0.0/23.
  3. Pour configurer l'appairage de VPC et le pare-feu Apigee, exécutez le script avec les options suivantes :
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    Le script configure le projet hôte. Le résultat devrait ressembler à ce qui suit, où NETWORK et SUBNET représentent les chemins d'accès complets du projet hôte :

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. Exportez les variables qui ont été renvoyées dans la sortie.

Configurer le projet de service

Au cours de cette étape, vous allez configurer le projet de service. Une fois le script terminé, il crée et déploie un exemple de proxy d'API dans votre environnement Apigee, qui vous permet de tester le provisionnement.

  1. Exécutez le script apigee-x-trial-provision.sh une seconde fois pour provisionner le projet de service avec les paramètres réseau partagés :
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    Le script crée un exemple de proxy dans votre environnement Apigee et affiche une commande curl dans STDOUT que vous pouvez appeler pour tester le provisionnement.

  2. Appeler le proxy d'API de test Exemple :
    curl -v https://10-111-111-111.nip.io/hello-world

Configurer un autre projet de service pour les services de backend

Il est recommandé de séparer votre infrastructure Google Cloud en plusieurs projets. Voir Choisir une hiérarchie de ressources pour votre zone de destination Google Cloud. Cette section explique comment déployer un service de backend dans un projet de service distinct et l'associer à l'hôte VPC partagé. Apigee peut utiliser le service de backend en tant que cible de proxy d'API, car le projet de service Apigee et le projet de service de backend sont tous deux associés à l'hôte VPC partagé.

Prérequis

Pour effectuer ces étapes, nous partons du principe que votre VPC partagé est déjà configuré et partagé avec le projet de service de backend, comme décrit dans la section Configurer le VPC partagé.

Configurer le projet de service

Dans cette section, vous allez tester un service de backend dans un autre sous-réseau VPC partagé, créer un deuxième sous-réseau dans le projet hôte et utiliser son adresse IP privée RFC1918 comme URL cible pour vos proxys d'API Apigee.

  1. À partir du projet de service de backend, exécutez la commande suivante pour afficher tous les sous-réseaux partagés disponibles :
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    Exemple de résultat :

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
    
  2. Créez les variables d'environnement suivantes :
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    Où :

    • PROJECT_ID est le nom du projet de service que vous avez créé pour les services de backend.
    • SUBNET est l'une des sorties du sous-réseau de la commande précédente.
  3. Pour créer un service de backend httpbin dans le projet à des fins de test, utilisez la commande suivante :
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. Créez et déployez un proxy d'API Apigee en suivant les étapes décrites sur la page Créer un proxy d'API.
  5. Obtenez l'adresse IP interne de la machine virtuelle (VM) sur laquelle le service cible est exécuté. Vous utiliserez cette adresse IP à l'étape suivante pour appeler le proxy d'API de test :
    gcloud compute instances list --filter=name=httpbin
  6. Pour tester la configuration, appelez le proxy. Utilisez l'adresse IP interne de la VM que vous avez obtenue à l'étape précédente. Nous considérons dans l'exemple suivant que vous avez nommé le chemin de base du proxy /myproxy. Exemple :
    curl -v https://INTERNAL_IP/myproxy

    Cet appel d'API renvoie Hello, Guest!.