arrow_back

Créer une application conteneurisée avec des buildpacks

Accédez à plus de 700 ateliers et cours

Créer une application conteneurisée avec des buildpacks

Atelier 1 heure universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Les buildpacks sont une autre manière de créer des images de conteneurs et offrent une alternative pour transformer votre code source en image de conteneur. Les buildpacks sont distribués et exécutés dans des images appelées "compilateurs". Chaque compilateur peut comporter un ou plusieurs buildpacks. Un compilateur transforme votre code source en image de conteneur. Les buildpacks effectuent le travail de création et d'empaquetage de l'image de conteneur que vous pouvez déployer sur Cloud Run ou exécuter localement avec Docker.

Vous pouvez créer vos propres buildpacks ou utiliser ceux proposés par différents fournisseurs. Les buildpacks Google Cloud permettent aux développeurs de créer et de déployer des applications conteneurisées sans avoir à installer Docker localement ni à créer de fichier Dockerfile. Les buildpacks sont également inclus dans Cloud Run pour qu'un workflow de déploiement basé sur la source soit possible.

Objectifs

Au cours de cet atelier, vous allez :

  • créer une application avec pack, un outil de ligne de commande utilisé avec des compilateurs pour créer des images de conteneurs à partir du code source ;
  • utiliser le compilateur de buildpacks Google Cloud pour créer une image de conteneur ;
  • exécuter et tester le conteneur localement avec Docker ;
  • créer et redéployer le conteneur dans Cloud Run.

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Configurer votre environnement et votre projet

Dans cette tâche, vous allez définir des variables d'environnement et configurer votre environnement Cloud Shell.

Configurer votre environnement Cloud Shell

  1. Pour définir les variables d'environnement pour l'ID de votre projet et la région, exécutez les commandes suivantes dans Cloud Shell :

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|us-central1}}}
  2. Définissez la région de calcul dans Cloud Shell :

    gcloud config set compute/region $REGION

Activer les API Google

  • Pour utiliser Cloud Run et l'API Google Translate plus tard dans cet atelier, activez les API correspondantes pour votre projet :

    gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

Cliquez sur Vérifier ma progression pour valider l'objectif. API Google activées

Tâche 2 : Créer et exécuter une application avec Docker

Dans cette tâche, vous allez créer un exemple d'application à l'aide de l'outil de ligne de commande pack et du compilateur de buildpacks Google Cloud.

Développer l'application

  1. Créez un répertoire app et modifiez-le comme suit :

    mkdir app && cd app
  2. Copiez l'exemple d'application python pour cet atelier depuis Cloud Storage, et extrayez le contenu de l'archive :

    gcloud storage cp gs://cloud-training/CBL513/sample-apps/sample-py-app.zip . && unzip sample-py-app
  3. Affichez les fichiers et le code source de l'exemple d'application :

    ls sample-py-app cat sample-py-app/main.py Le buildpack Python ne génère pas de point d'entrée de conteneur par défaut pour l'application. Nous utilisons donc un Procfile pour configurer la commande de démarrage de l'application.

    L'application est écrite en Python et renvoie un exemple de message de bienvenue en réponse à une requête qui lui est adressée.

Créer le conteneur

  1. Accédez au répertoire de l'exemple d'application :

    cd sample-py-app
  2. Pour créer le conteneur, exécutez pack :

    pack build --builder=gcr.io/buildpacks/builder sample-py-app

    Le résultat partiel ressemble à ce qui suit :

    ... ... [exporter] Setting default process type 'web' [exporter] Saving sample-py-app... [exporter] *** Images (9f9f9a48fd46): [exporter] sample-py-app [exporter] Adding cache layer 'google.python.pip:pip' [exporter] Adding cache layer 'google.python.pip:pipcache' Successfully built image sample-py-app Remarque  : Avec pack, vous n'avez pas eu besoin d'écrire et de fournir un fichier Dockerfile pour créer l'image de conteneur.
  3. Pour afficher les images téléchargées et créées sur votre hôte Cloud Shell, exécutez la commande suivante :

    docker images REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/buildpacks/builder latest 514fb6f1bbfe 29 hours ago 804MB gcr.io/buildpacks/gcp/run v1 22db1b5e48e3 29 hours ago 177MB buildpacksio/lifecycle 0.16.0 67e021546a3f 43 years ago 30.5MB sample-py-app latest 9f9f9a48fd46 43 years ago 571MB
  4. Exécutez le conteneur localement dans Docker en transmettant la variable d'environnement PORT à l'application et en liant le port 8080 de l'hôte au port du conteneur :

    docker run -it -e PORT=8080 -p 8080:8080 -d sample-py-app Le code de l'application écoute le port fourni dans la variable d'environnement, ici le port 8080.
  5. Testez l'application conteneurisée à l'aide de la commande curl :

    curl http://localhost:8080/

    Le message suivant doit s'afficher en réponse :

    Welcome to this sample app, built with Buildpacks.

Tâche 3 : Créer et exécuter une application sur Cloud Run

En général, l'étape suivante de votre cycle de développement et de déploiement consiste à transférer l'image de conteneur que vous avez créée lors de la tâche précédente vers Artifact Registry, puis à déployer l'image dans un environnement basé sur des conteneurs tel que Google Kubernetes Engine ou Cloud Run.

Dans cette tâche, vous allez modifier le code de l'exemple d'application, puis créer et déployer l'application conteneurisée directement à partir de la source avec Cloud Run.

Modifier le code de l'application

Vous modifiez le code de l'exemple d'application pour utiliser l'API Google Translation, qui traduit un extrait de texte de l'anglais vers l'espagnol.

  1. Modifiez le fichier main.py avec l'éditeur de votre choix, par exemple vi ou nano. Vous pouvez également cliquer sur Ouvrir l'éditeur dans le menu Cloud Shell pour modifier le fichier.

  2. Remplacez l'intégralité du contenu du fichier main.py par le code ci-dessous :

    from flask import Flask, request import google.auth from google.cloud import translate app = Flask(__name__) _, PROJECT_ID = google.auth.default() TRANSLATE = translate.TranslationServiceClient() PARENT = 'projects/{}'.format(PROJECT_ID) SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish') @app.route('/', methods=['GET', 'POST']) def index(): # reset all variables text = translated = None if request.method == 'POST': text = request.get_json().get('text').strip() if text: data = { 'contents': [text], 'parent': PARENT, 'target_language_code': TARGET[0], } # handle older call for backwards-compatibility try: rsp = TRANSLATE.translate_text(request=data) except TypeError: rsp = TRANSLATE.translate_text(**data) translated = rsp.translations[0].translated_text # create context context = { 'trtext': translated } return context if __name__ == "__main__": # Dev only: run "python main.py" and open http://localhost:8080 import os app.run(host="localhost", port=int(os.environ.get('PORT', 8080)), debug=True) Le code de l'application utilise l'API Google Translate pour traduire un extrait de texte transmis dans une requête JSON de l'anglais vers l'espagnol.

Créer et déployer le conteneur

  1. Pour créer et déployer le conteneur sur Cloud Run, exécutez la commande suivante :

    gcloud run deploy sample-py-app --source . --region=${REGION} --allow-unauthenticated L'option allow-unauthenticated permet d'accéder au service sans authentification.
  2. Lorsque vous y êtes invité, saisissez Y pour accepter le dépôt par défaut créé dans Artifact Registry pour stocker l'image de conteneur.

  3. Une fois la commande exécutée, un service Cloud Run nommé sample-py-app est créé.

    Le résultat de la commande ressemble à ce qui suit :

    Building using Buildpacks and deploying container to Cloud Run service [sample-py-app] in project [qwiklabs-gcp-00-0d56d42aca1a] region [asia-east1] OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/8bea2ded-4745-41f9-a82d-128e409daa20?project=34240880885]. OK Creating Revision... OK Routing traffic... OK Setting IAM Policy... Done. Service [sample-py-app] revision [sample-py-app-00001-nec] has been deployed and is serving 100 percent of traffic. Service URL: https://sample-py-app-ulvp7xw3bq-de.a.run.app

Tester le service Cloud Run

  1. Définissez une variable d'environnement pour le service Cloud Run créé à l'étape précédente :

    SERVICE_URL=$(gcloud run services describe sample-py-app --region=${REGION} --format="value(status.url)"); echo $SERVICE_URL
  2. Pour tester le service, exécutez la commande curl suivante :

    curl $SERVICE_URL -H 'Content-Type: application/json' -d '{"text" : "Welcome to this sample app, built with Google Cloud buildpacks."}'

    Le service renvoie le texte traduit :

    {"trtext":"Bienvenido a esta aplicaci\u00f3n de muestra, creada con paquetes de compilaci\u00f3n de Google Cloud."}

Cliquez sur Vérifier ma progression pour valider l'objectif. Déployer une application sur Cloud Run

Félicitations !

Dans cet atelier, vous avez créé une application à l'aide de la commande pack et du compilateur de buildpacks Google Cloud pour créer une image de conteneur pour un exemple d'application Python. Vous avez d'abord exécuté et testé le conteneur localement avec Docker, avant de le recréer et de le déployer sur Cloud Run.

Étapes suivantes et informations supplémentaires

Pour en savoir plus, consultez la documentation :

Découvrez les buildpacks Google Cloud pour différentes plates-formes de conteneurs comme GKE, Anthos et Container-Optimized OS :

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.