Ce tutoriel explique comment déployer l'exemple d'application Bookshelf pour Python à l'aide de Cloud Deployment Manager.
Deployment Manager vous permet de créer les ressources nécessaires Google Cloud pour un déploiement en une seule étape, par le biais d'un processus déclaratif et reproductible. Avec Deployment Manager, vous pouvez mettre à jour les déploiements et suivre les modifications dans le temps. Vous pouvez créer des modèles avec Jinja ou Python et les paramétrer pour que des déploiements semblables puissent partager le même modèle.
Objectifs
- Cloner et configurer l'exemple d'application Bookshelf
- Créer des configurations et des modèles Deployment Manager
- Créer des déploiements Deployment Manager
- Déployer l'exemple d'application Bookshelf à l'aide de Deployment Manager
Coûts
Dans ce tutoriel, vous utilisez les composants facturables de suivants Google Cloud:
Obtenez une estimation des coûts en fonction de votre utilisation prévue,
utilisez le simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Installez Python,
pipetvirtualenvsur votre système. Pour obtenir des instructions, consultez la page Configurer un environnement de développement Python pour Google Cloud.
Créer un bucket Cloud Storage
Les instructions suivantes expliquent comment créer un bucket Cloud Storage. Les buckets sont les conteneurs de base dans lesquels sont stockées vos données dans Cloud Storage.
Dans votre fenêtre de terminal, créez un bucket Cloud Storage, où YOUR_BUCKET_NAME représente le nom de votre bucket :
gcloud storage buckets create gs://YOUR_BUCKET_NAME
Pour afficher les images importées dans l'application Bookshelf, définissez la stratégie de Identity and Access Management du bucket afin d'accorder le rôle
legacyObjectReaderàallUsers:gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET_NAME --member=allUsers --role=roles/storage.legacyObjectReader
Cloner l'exemple d'application
L'exemple d'application est disponible sur GitHub à l'adresse GoogleCloudPlatform/getting-started-python.
Clonez le dépôt :
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b stepsAccédez au répertoire de l'exemple :
cd getting-started-python/7-gce
Configurer l'application
Ouvrez
config.pypour y apporter des modifications.Définissez
PROJECT_IDsur la valeur de votre ID de projet.Définissez la valeur
CLOUD_STORAGE_BUCKETsur le nom de votre bucket Cloud Storage.
Enregistrez et fermez le fichier
config.py.
Exécuter l'application sur votre ordinateur local
Créez un environnement Python isolé et installez des dépendances :
Linux/macOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txtWindows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txtExécutez l'application :
python main.pyDans votre navigateur, saisissez l'adresse suivante :
Pour arrêter le serveur Web local, appuyez sur les touches Ctrl+C. Si vous souhaitez quitter l'environnement virtuel, saisissez deactivate.
Déployer l'exemple d'application
Transférer votre code vers un dépôt
Vous pouvez transférer votre code sur une instance Compute Engine en cours d'exécution de plusieurs façons. Une solution consiste à utiliser l'outil Cloud Source Repositories. Chaque projet comprend un dépôt Git mis à la disposition des instances Compute Engine. Vos instances récupèrent ensuite la dernière version du code de votre application lors du démarrage. L'utilisation d'un dépôt Git est pratique, car la mise à jour de votre application ne nécessite pas de configurer de nouvelles images ni de nouvelles instances. Il vous suffit de redémarrer une instance existante ou d'en créer une nouvelle.
Lors de votre première utilisation de Git, utilisez
git config --globalpour configurer votre identité.Dans la Google Cloud console, créez un dépôt :
Transférez ensuite le code de votre application vers le dépôt de votre projet, où
[YOUR_PROJECT_ID]correspond à l'ID du projet et[YOUR_REPO]au nom du dépôt :git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
Créer le déploiement
Une fois la configuration validée et le code transféré dans l'outil Cloud Source Repositories, vous pouvez créer le déploiement avec Deployment Manager :
Accédez au répertoire
deployment_manager:cd getting-started-python/7-gce/gce/deployment_managerCréez le déploiement :
gcloud deployment-manager deployments create my-deployment --config config.yamlAffichez la liste de tous les déploiements :
gcloud deployment-manager deployments listObtenez une description du déploiement et des ressources qu'il a créées :
gcloud deployment-manager deployments describe my-deployment
Afficher l'application
Une fois la règle de transfert créée, la propagation de la configuration et le routage du trafic vers vos instances peuvent prendre plusieurs minutes.
Pour en vérifier l'avancement, procédez comme suit :
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --globalLorsqu'au moins une instance indique
HEALTHY, obtenez l'adresse IP de transfert pour l'équilibreur de charge :gcloud compute forwarding-rules list --globalL'adresse IP contenant vos règles de transfert se situe dans la colonne
IP_ADDRESS.Dans votre navigateur, saisissez l'adresse IP présente dans la liste.
Votre application s'exécute désormais sur Google Cloud.
Comprendre le code
Configurer le déploiement
Vous pouvez accéder à la configuration du déploiement dans config.yaml :
Le fichier de configuration importe le fichier de modèle en tant que ressource et l'utilise pour définir une ressource nommée bookshelf. Le modèle prend plusieurs propriétés en tant que paramètres. Pour en savoir plus sur la création de fichiers de configuration Deployment Manager, consultez la page Créer une configuration.
Configurer le schéma du modèle de déploiement
Examinez le fichier de schéma bookshelf.jinja.schema, qui définit et documente les paramètres que le déploiement est censé fournir dans le fichier de configuration correspondant. Pour en savoir plus sur les schémas de configuration, consultez la page
Utiliser des schémas.
Configurer le modèle de déploiement
Le modèle définit plusieurs ressources nécessaires pour créer un groupe d'instances géré avec équilibrage de charge et autoscaling. Pour obtenir une description complète des ressources créées, consultez les commentaires dans le modèle ainsi que le tutoriel Bookshelf sur Compute Engine.
Deployment Manager permet de spécifier les ressources de manière déclarative. Toutefois, son API définit une grande partie de la configuration d'une ressource donnée. Par exemple, la plupart des options de configuration de la ressource de modèle d'instance se trouvent dans la définition de cette ressource qui figure dans la documentation de référence de l' API Compute Engine.
Le modèle est écrit à l'aide du langage de conception de modèles Jinja. Lorsque vous écrivez des modèles Deployment Manager, vous pouvez utiliser Jinja ou Python. Jinja a l'avantage d'être plus déclaratif. Il peut donc se révéler plus lisible et plus facile à comprendre que Python. Pour certains déploiements complexes, l'expressivité totale de Python peut faciliter la tâche. Dans le cas présent, Jinja est suffisant pour créer les ressources nécessaires.
Dans un modèle, certaines variables d'environnement sont définies automatiquement. Vous pouvez y accéder à l'aide du dictionnaire env. Dans ce cas, le nom du déploiement est référencé en tant que nom à réutiliser lors de l'attribution de noms aux ressources créées. Pour en savoir plus sur les variables d'environnement disponibles, consultez la page Utiliser des variables d'environnement dans la documentation Deployment Manager :
Le modèle utilise le même script de démarrage que celui utilisé dans le tutoriel Compute Engine. Le contenu du script est inséré dans le modèle, et la directive Jinja sur le retrait met le contenu en retrait correctement :
Dans un modèle Jinja Deployment Manager, vous pouvez également faire référence à des ressources créées ailleurs dans le modèle. Dans l'exemple suivant, le service de backend utilise la référence du groupe d'instances géré pour obtenir le groupe d'instances vers lequel il doit pointer :
Les propriétés spécifiées dans config.yaml peuvent être utilisées dans le modèle :
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.
Supprimer le déploiement
Pour supprimer votre déploiement, entrez la commande suivante. Elle supprime l'équilibreur de charge et toutes les instances Compute Engine associées au déploiement :
gcloud deployment-manager deployments delete my-deployment
Étape suivante
Apprenez-en plus sur la définition des modèles Deployment Manager.
Découvrez comment exécuter l'exemple d'application Bookshelf pour Python sur Google Kubernetes Engine.
Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.
Découvrez d'autres Google Cloud services.