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 Google Cloud nécessaires 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 document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Installez Python,
pip
etvirtualenv
sur 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 :
gsutil mb gs://YOUR_BUCKET_NAME
Pour afficher les images importées dans l'application Bookshelf, définissez la liste de contrôle d'accès (LCA) par défaut du bucket sur
public-read
:gsutil defacl set public-read gs://YOUR_BUCKET_NAME
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 steps
Accédez au répertoire de l'exemple :
cd getting-started-python/7-gce
Configurer l'application
Ouvrez
config.py
pour y apporter des modifications.Définissez
PROJECT_ID
sur la valeur de votre ID de projet.Définissez la valeur
CLOUD_STORAGE_BUCKET
sur 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.txt
Windows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txt
Exécutez l'application :
python main.py
Dans 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 --global
pour configurer votre identité.Dans 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_manager
Créez le déploiement :
gcloud deployment-manager deployments create my-deployment --config config.yaml
Affichez la liste de tous les déploiements :
gcloud deployment-manager deployments list
Obtenez 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 --global
Lorsqu'au moins une instance indique
HEALTHY
, obtenez l'adresse IP de transfert pour l'équilibreur de charge :gcloud compute forwarding-rules list --global
L'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 :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
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
Étapes suivantes
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 comment exécuter l'exemple d'application Bookshelf pour Python dans l'environnement flexible App Engine.
Découvrez des architectures de référence, des schémas, des tutoriels et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.
Découvrez d'autres services Google Cloud.