Dans l'environnement flexible App Engine, il est possible de spécifier un réseau sur lequel déployer les instances de votre service. Cette page explique comment configurer votre projet pour utiliser l'environnement flexible App Engine sur un réseau VPC partagé.
Pour en savoir plus sur la configuration d'un réseau VPC partagé, consultez la page Provisionner un VPC partagé.
Configurer l'environnement flexible App Engine avec un VPC partagé
Le déploiement d'instances de l'environnement flexible App Engine sur un réseau VPC partagé se déroule en trois étapes :
Octroi des autorisations appropriées aux comptes de service dans le projet de service VPC partagé
Configuration des services App Engine pour qu'ils utilisent le réseau VPC partagé
Si vous utilisez Google Cloud CLI, installez la dernière version en exécutant la commande suivante avant de suivre ce guide :
gcloud components update
Autoriser le trafic sur le réseau VPC partagé
Un administrateur de VPC partagé doit créer une règle de pare-feu dans le projet hôte VPC partagé afin d'autoriser le trafic vers l'environnement flexible App Engine sur le réseau VPC partagé. La règle de pare-feu permet la diffusion et la vérification de l'état du trafic vers les instances de l'environnement flexible.
La règle de pare-feu doit présenter les propriétés suivantes :
- Réseau : nom du réseau VPC partagé
- Sens du trafic : entrée
- Action en cas de correspondance : autoriser
- Cibles : tags cibles spécifiés
- Tags cibles :
aef-instance
- Filtre source : plages d'adresses IP
- Plages d'adresses IP sources :
35.191.0.0/16
,130.211.0.0/22
- Protocoles et ports : protocoles et ports spécifiés
- TCP : 8443, 10402
Un administrateur de VPC partagé peut créer la règle de pare-feu à l'aide de Google Cloud Console ou de Google Cloud CLI :
Console
Pour créer la règle de pare-feu à l'aide de la console Google Cloud, procédez comme suit :
Accédez à la page de création de règles de pare-feu.
Dans les champs Nom et Description, indiquez un nom et une description pour la règle de pare-feu.
Renseignez les propriétés nécessaires, comme indiqué ci-dessus.
Cliquez sur Créer.
gcloud
Pour créer la règle de pare-feu à l'aide de Google Cloud CLI, exécutez la commande suivante :
gcloud compute firewall-rules create NETWORK_NAME-flex-firewall \ --project HOST_PROJECT_ID \ --network NETWORK_NAME \ --allow tcp:10402,tcp:8443 \ --target-tags aef-instance \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --description 'Allows traffic to App Engine flexible environment'
où :
NETWORK_NAME
est le nom du réseau VPC partagé.HOST_PROJECT_ID
est l'ID de projet Google Cloud du projet hôte de VPC partagé.
Configurer des autorisations
Un administrateur de VPC partagé doit attribuer le rôle d'utilisateur de réseau de Compute aux deux comptes de service suivants afin de permettre à un projet de service de déployer des instances dans l'environnement flexible App Engine vers réseau :
- Agent de service des API Google (
PROJECT_NUM@cloudservices.gserviceaccount.com
) - Agent de service de l'environnement flexible App Engine (
service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
)
Console
Pour configurer des autorisations à l'aide de la console Google Cloud, procédez comme suit :
Accédez à la page des paramètres IAM du projet de service et notez le numéro du projet.
Accédez à la page IAM du projet hôte.
Cliquez sur Ajouter.
Dans le champ Nouveaux membres, saisissez les adresses e-mail suivantes, séparées par une virgule. Remplacez
PROJECT_NUM
par le numéro de projet obtenu à l'étape 1.PROJECT_NUM@cloudservices.gserviceaccount.com
service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
Dans la liste déroulante Sélectionner un rôle, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
Cliquez sur Enregistrer.
gcloud
Obtenez le numéro du projet de service sur lequel l'application App Engine est déployée. Exécutez la commande suivante en remplaçant
SERVICE_PROJECT_ID
par l'ID du projet de service :export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
Accordez à l'agent de service des API Google du projet de service le rôle
compute.networkUser
dans le projet hôte :gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:$SERVICE_PROJECT_NUM@cloudservices.gserviceaccount.com \ --role=roles/compute.networkUser
où
HOST_PROJECT_ID
correspond à l'ID de projet Google Cloud du projet hôte de VPC partagé.Accordez à l'agent de service de l'environnement flexible App Engine du projet de service le rôle
compute.networkUser
dans le projet hôte :gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-$SERVICE_PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com \ --role=roles/compute.networkUser
Configurer et déployer un service
Une fois la règle de pare-feu et les autorisations appropriées configurées, vous pouvez déployer un nouveau service ou un service de l'environnement flexible App Engine existant sur le réseau VPC partagé.
Dans le fichier
app.yaml
, utilisez le champ de paramètres réseauname
pour spécifier le nom complet du réseau VPC partagé :network: name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
Où :
HOST_PROJECT_ID
est l'ID de projet Google Cloud du projet hôte de VPC partagé.NETWORK_NAME
est le nom du réseau VPC partagé.
Pour configurer le service afin qu'il fasse partie d'un sous-réseau nommé
SUBNETWORK_NAME
, définissez également le champsubnetwork_name
:network: name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME subnetwork_name: SUBNETWORK_NAME
Déployez le service :
gcloud app deploy
Vérifier la configuration
Pour vérifier que votre service de l'environnement flexible App Engine est en cours d'exécution sur le réseau VPC partagé, affichez la configuration de votre version sur la page des versions d'App Engine dans la console Google Cloud :
Accédez à la page "Versions" d'App Engine.
Dans la colonne Configuration située à droite, cliquez sur Afficher à côté de la version souhaitée.
Vérifiez que le nom du réseau dans la configuration correspond bien au nom du réseau VPC partagé.