Accédez à plus de 700 ateliers et cours

Déployer une application conteneurisée sur Cloud Run

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

Cloud Run est une plate-forme de calcul entièrement gérée qui vous permet d'exécuter des conteneurs sans état pouvant être appelés via des requêtes HTTP. Vous pouvez déployer du code écrit dans n'importe quel langage de programmation sur Cloud Run si vous pouvez créer une image de conteneur à partir de celui-ci. Si vous développez votre application en Go, Node.js, Python, Java, .NET Core ou Ruby, vous pouvez choisir l'option de déploiement basé sur la source qui crée le conteneur pour vous.

Cloud Run est sans serveur et exécute vos conteneurs sur l'infrastructure évolutive de Google. La plate-forme étant basée sur Knative, vous pouvez exécuter vos conteneurs soit de façon entièrement gérée avec Cloud Run, soit dans votre cluster Google Kubernetes Engine avec Cloud Run sur GKE.

Cloud Run fonctionne bien avec d'autres services sur Google Cloud. Vous pouvez ainsi créer des applications complètes sans passer trop de temps à exploiter, configurer et faire évoluer votre service Cloud Run.

Objectifs

Au cours de cet atelier, vous allez :

  • utiliser Cloud Build pour créer une image de conteneur Docker pour votre application ;
  • déployez l'image de conteneur dans Cloud Run ;
  • exécuter et tester l'application conteneurisée.

Processus de compilation et de déploiement

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 projet et votre environnement

Dans cette tâche, vous allez définir des variables d'environnement pour votre environnement Cloud Shell et activer les API Google nécessaires pour cet atelier.

  1. Connectez-vous à la console Google Cloud avec vos identifiants d'atelier et ouvrez la fenêtre du terminal Cloud Shell.

  2. 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|Region}}}
  3. Pour activer les API nécessaires, exécutez la commande suivante :

    gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com

Cliquez sur Vérifier ma progression pour valider l'objectif. Activer les API nécessaires

Tâche 2 : Tester l'application en local

Dans cette tâche, vous allez copier un exemple d'application Node.js. Ensuite, vous allez la compiler et l'exécuter localement dans votre environnement Cloud Shell.

Copier l'application

  1. Créez un répertoire app et définissez-le comme répertoire de travail actuel :

    mkdir app && cd app
  2. Pour copier l'application depuis Cloud Storage et extraire ses fichiers, exécutez la commande suivante :

    gsutil cp gs://cloud-training/CBL515/sample-apps/sample-node-app.zip . && unzip sample-node-app

Installer les dépendances de l'application

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

    cd sample-node-app
  2. Pour afficher le code source de l'application, consultez le contenu du fichier server.js dans le répertoire de premier niveau :

    cat server.js Il s'agit du point d'entrée principal de l'application. Cet exemple d'application est un service de retail de base qui fournit une API renvoyant des données produit lorsque des requêtes sont envoyées à l'application via HTTP.
  3. Pour installer les modules de dépendance de l'application en local, exécutez la commande suivante :

    npm install

Tester l'application

  1. Pour exécuter l'application en local, exécutez la commande suivante :

    npm start

    Vous devriez obtenir le résultat suivant :

    > sample-node-app@1.0.0 start > node server.js Sample-node-app listening on port 8080!
  2. Pour ouvrir une deuxième fenêtre de terminal Cloud Shell, cliquez sur Ajouter dans la barre de navigation Cloud Shell.

  3. Testez l'exemple d'API en envoyant quelques requêtes HTTP à l'application :

    curl http://localhost:8080/service/products | jq Nous utilisons l'outil de ligne de commande jq pour analyser et mettre en forme la réponse JSON de l'application.

    L'application doit répondre en affichant une liste de produits :

    [ { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }, { "id": "L9ECAV7KIM", "name": "Terrarium", "description": "This terrarium will look great in your white painted living room.", "picture": "static/img/products/terrarium.jpg", "cost": 36.45, "categories": [ "gardening" ] }, { "id": "2ZYFJ3GM2N", "name": "Film Camera", "description": "This camera looks like it's a film camera, but it's actually digital.", "picture": "static/img/products/film-camera.jpg", "cost": 2245, "categories": [ "photography", "vintage" ] }, { "id": "LS4PSXUNUM", "name": "Metal Camping Mug", "description": "You probably don't go camping that often but this is better than plastic cups.", "picture": "static/img/products/camp-mug.jpg", "cost": 24.33, "categories": [ "cookware" ] }, { "id": "9SIQT8TOJO", "name": "City Bike", "description": "This single-gear bike probably cannot climb the hills of San Francisco.", "picture": "static/img/products/city-bike.jpg", "cost": 789.5, "categories": [ "cycling" ] }, { "id": "6E92ZMYYFZ", "name": "Air Plant", "description": "Have you ever wondered whether air plants need water? Buy one and figure out.", "picture": "static/img/products/air-plant.jpg", "cost": 12.3, "categories": [ "gardening" ] } ]
  4. Envoyez une deuxième requête API pour extraire un produit spécifique à l'aide de son ID :

    curl http://localhost:8080/service/products/1YMWWN1N4O | jq

    L'application doit répondre en fournissant des informations sur le produit en question :

    { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }
  5. Pour quitter l'application, appuyez sur Ctrl+C dans la première fenêtre de terminal Cloud Shell.

Tâche 3 : Conteneuriser l'application avec Cloud Build

Cloud Build est un service qui exécute vos compilations sur Google Cloud. Avec Cloud Build, vous pouvez créer, tester et déployer votre application en continu à l'aide d'un pipeline d'intégration et de livraison continues (CI/CD).

Pour fournir des instructions à Cloud Build, vous créez un fichier de configuration de compilation qui contient un ensemble de tâches. Ces instructions peuvent configurer des compilations pour extraire des dépendances, exécuter des tests unitaires et d'intégration, effectuer des analyses statiques et créer des artefacts à l'aide d'outils de compilation tels que Docker, Gradle, Maven et autres.

Dans cette tâche, vous allez utiliser Cloud Build pour créer un conteneur Docker pour votre application et transférer l'image de conteneur obtenue vers un dépôt dans Artifact Registry.

Créer le dépôt

  1. Dans la barre de titre de la console Google Cloud, accédez au champ Recherche. Ensuite, saisissez Artifact Registry et cliquez sur Recherche, puis sur Artifact Registry.

  2. Cliquez sur l'icône (Épingler Épingler) à côté d'Artifact Registry.

  3. Cliquez sur Créer un dépôt.

  4. Sur la page Créer un dépôt, fournissez les informations suivantes et conservez les valeurs par défaut pour les autres paramètres :

    Nom

    my-repo

    Format

    Docker

    Type d'emplacement

    Région

    Région

  5. Cliquez sur Créer, puis attendez que le dépôt soit créé.

Authentifier Docker pour utiliser le dépôt

Avant de pouvoir transférer des images vers le dépôt, vous devez configurer Docker pour authentifier les requêtes envoyées au dépôt dans Artifact Registry.

  1. Pour configurer l'authentification auprès des dépôts Docker dans la région , exécutez la commande suivante dans Cloud Shell :

    gcloud auth configure-docker ${REGION}-docker.pkg.dev
  2. Lorsque vous y êtes invité, saisissez Y.

Créer le fichier de configuration de compilation

Pour fournir des instructions à Cloud Build, vous créez un fichier de configuration de compilation qui contient un ensemble de tâches. Ces instructions peuvent configurer des compilations pour extraire des dépendances, exécuter des tests unitaires et d'intégration, effectuer des analyses statiques et créer des artefacts à l'aide de compilateurs tels que Docker, Gradle, Maven et autres.

  1. Définissez une variable d'environnement pour le nom du dépôt :

    REPO=${REGION}-docker.pkg.dev/${PROJECT_ID}/my-repo
  2. Créez le fichier de configuration de compilation :

    cat > cloudbuild.yaml <<EOF steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${REPO}/sample-node-app-image', '.' ] images: - '${REPO}/sample-node-app-image' EOF
  3. Affichez le fichier cloudbuild.yaml :

    cat cloudbuild.yaml L'étape de compilation crée une image de conteneur à l'aide du compilateur Docker à partir du code source et du Dockerfile situés dans le répertoire actuel. L'image créée est ensuite transférée au dépôt dans Artifact Registry.

Créer le conteneur

  1. Pour créer le conteneur avec Cloud Build, exécutez la commande suivante :

    gcloud builds submit --region=$REGION --config=cloudbuild.yaml

    Le résultat (partiel) de la commande ressemble à ceci :

    ... ... b3389e626b47: Pushed 38610c0cfc18: Pushed latest: digest: sha256:b6007afa5e8fb05d8ac617ddf5fee8d58cc6ba8901038c97f8e360520c5fdbf4 size: 3051 DONE ---------------------------------------------------------------------------------------------------------------------------------------- ID: f803a828-dc50-41cb-bc94-71dfb8c83648 CREATE_TIME: 2023-02-28T18:28:41+00:00 DURATION: 1M23S SOURCE: gs://qwiklabs-gcp-02-26de4317fac8_cloudbuild/source/1677608919.352478-c157fa4ae8544b3dbba23b5f29145286.tgz IMAGES: asia-east1-docker.pkg.dev/qwiklabs-gcp-02-26de4317fac8/my-repo/sample-node-app-image (+1 more) STATUS: SUCCESS

    Cloud Build importe d'abord le code source de votre application et d'autres fichiers du répertoire spécifié dans Cloud Storage. Il crée ensuite l'image de conteneur qui contient votre application à partir des instructions spécifiées dans la configuration de compilation et le Dockerfile, ajoute un tag à l'image avec le nom spécifié, puis transfère l'image vers le dépôt dans Artifact Registry.

Afficher l'historique de compilation

  1. Dans la barre de titre de la console Google Cloud, accédez au champ Recherche. Ensuite, saisissez Cloud Build et cliquez sur Recherche, puis sur Cloud Build.

  2. Pour Région, sélectionnez .

  3. Cliquez sur l'ID correspondant à la compilation en haut de la liste.

    Toutes les informations sur la compilation sont visibles, y compris le journal de compilation.

Afficher l'image de conteneur dans Artifact Registry

  1. Une fois la commande de compilation terminée, dans la console Google Cloud, accédez au menu de navigation (menu de navigation), puis cliquez sur Artifact Registry > Dépôts.

  2. Cliquez sur le dépôt my-repo pour afficher l'image de conteneur sample-node-app-image.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une image de conteneur avec Cloud Build.

Tâche 4 : Déployer le conteneur dans Cloud Run

Maintenant que l'image de conteneur est créée, vous pouvez la déployer dans Cloud Run. Deux approches sont possibles pour le déploiement dans Cloud Run :

  • Cloud Run géré : un modèle de service entièrement géré dans lequel l'ensemble du cycle de vie des conteneurs est géré par Cloud Run. Vous utiliserez cette approche dans cet atelier.

  • Cloud Run sur Anthos : Cloud Run avec une couche de contrôle supplémentaire qui vous permet d'utiliser vos propres clusters et pods provenant de GKE.

Dans cette tâche, vous allez déployer votre image de conteneur sur le service Cloud Run entièrement géré sur Google Cloud.

  1. Pour déployer l'image de conteneur, exécutez la commande suivante dans Cloud Shell :

    gcloud run deploy sample-node-app --image ${REPO}/sample-node-app-image --region $REGION --allow-unauthenticated L'option allow-unauthenticated permet d'accéder au service sans authentification.
  2. Une fois la commande exécutée, dans le menu de navigation (menu de navigation) de la console Google Cloud, cliquez sur Cloud Run.

  3. Pour afficher les détails du service Cloud Run, cliquez sur le nom du service sample-node-app.

Cliquez sur Vérifier ma progression pour valider l'objectif. Déployez l'image de conteneur dans Cloud Run.

Tâche 5 : Tester l'application sur Cloud Run

  1. Pour vérifier que le service est en cours d'exécution et qu'il est disponible pour accepter les requêtes, exécutez la commande suivante dans Cloud Shell :

    gcloud run services list

    Le résultat de la commande ressemble à ceci :

    ✔ SERVICE: sample-node-app REGION: asia-east1 URL: https://sample-node-app-dduno3adrq-uc.a.run.app LAST DEPLOYED BY: student-04-329a97f025fd@qwiklabs.net LAST DEPLOYED AT: 2023-02-28T22:21:04.803928Z
  2. Dans le résultat de la commande, copiez la valeur de l'URL et collez-la dans la commande curl en ajoutant service/products à la fin de l'URL, comme indiqué. Transférez le résultat vers la commande jq, puis appuyez sur Entrée :

    curl https://sample-node-app-dduno3adrq-uc.a.run.app/service/products | jq

    Le résultat devrait ressembler à celui obtenu avec l'application lorsque vous l'avez exécutée en local dans une tâche précédente.

Cliquez sur Vérifier ma progression pour valider l'objectif. Tester l'application déployée sur Cloud Run.

Félicitations !

Au cours de cet atelier, vous avez :

  • utilisé Cloud Build pour créer une image de conteneur Docker pour votre application, puis vous avez déployé cette image sur Cloud Run ;
  • testé l'application en local et sur Cloud Run pour vérifier qu'elle fonctionne comme prévu.

Étapes suivantes et informations supplémentaires

Pour en savoir plus, consultez la documentation sur :

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.