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.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
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.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
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.
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.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
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 :
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 :
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
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 :
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
Créez un répertoire app et modifiez-le comme suit :
mkdir app && cd app
Copiez l'exemple d'application python pour cet atelier depuis Cloud Storage, et extrayez le contenu de l'archive :
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
Accédez au répertoire de l'exemple d'application :
...
...
[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.
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
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.
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.
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.
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
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.
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.
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
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
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.
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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
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.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
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.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
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.
Dans cet atelier, vous allez créer une application conteneurisée avec l'outil de ligne de commande pack et le compilateur de buildpacks Google Cloud.
Durée :
0 min de configuration
·
Accessible pendant 60 min
·
Terminé après 60 min