arrow_back

Développement d'applications : Déployer l'application dans Kubernetes Engine – Java

Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

Développement d'applications : Déployer l'application dans Kubernetes Engine – Java

Atelier 2 heures 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.
Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

Présentation

Google Kubernetes Engine est un environnement géré grâce auquel vous pouvez déployer, gérer et faire évoluer vos applications en conteneur à l'aide de l'infrastructure Google. L'environnement Kubernetes Engine se compose de plusieurs machines (plus précisément, d'instances Google Compute Engine), regroupées pour former un cluster.

Les mécanismes de Kubernetes vous permettent d'interagir avec votre cluster. Grâce aux commandes et ressources Kubernetes, vous pouvez déployer et gérer vos applications, effectuer des tâches d'administration, définir des stratégies et surveiller l'état de vos charges de travail déployées.

Dans cet atelier, vous allez déployer l'application Quiz dans Kubernetes Engine et exploiter des ressources de Google Cloud Platform, dont Cloud Build et Container Registry, ainsi que des ressources de Kubernetes comme les déploiements, les pods et les services.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Créer des fichiers Dockerfile pour empaqueter le code de l'interface et du backend de l'application Quiz afin de la déployer
  • Générer des images Docker à l'aide de Cloud Build
  • Provisionner un cluster Kubernetes Engine en vue d'héberger l'application Quiz
  • Provisionner des pods répliqués dans Kubernetes Engine via des déploiements Kubernetes
  • Provisionner un équilibreur de charge pour l'interface de Quiz avec un service Kubernetes

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 : Préparer l'application Quiz

Dans cette section, vous allez cloner le dépôt Git qui contient l'application Quiz, configurer les variables d'environnement et exécuter l'application.

Cloner le code source dans Cloud Shell

  1. Exécutez la commande suivante dans Cloud Shell pour cloner le dépôt que vous utiliserez dans cet atelier :
git clone --depth=1 https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Créez un lien symbolique vers votre répertoire de travail :
ln -s ~/training-data-analyst/courses/developingapps/v1.3/java/kubernetesengine ~/kubernetesengine

Configurer l'application Quiz

  1. Accédez au répertoire qui contient les fichiers de travail :
cd ~/kubernetesengine/start
  1. Configurez l'application d'interface Quiz :
. prepare_environment.sh Remarque : Ce fichier de script :

  • crée une application Google App Engine ;
  • exporte les variables d'environnement GCLOUD_PROJECT et GCLOUD_BUCKET ;
  • exécute la commande mvn clean install ;
  • crée des entités dans Google Cloud Datastore ;
  • crée un sujet Google Cloud Pub/Sub ;
  • crée une instance, une base de données et une table Cloud Spanner.

Examiner le code

Vous allez ensuite examiner et mettre à jour le code de l'application Quiz dans un éditeur de code. Vous pouvez utiliser les éditeurs de script shell installés sur Cloud Shell, tels que nano ou vim, ou encore l'éditeur de code intégré de Cloud Shell. Cet atelier utilise l'éditeur de code intégré.

  1. Lancez l'éditeur de code Cloud Shell. Dans Cloud Shell, cliquez sur Ouvrir l'éditeur (icône en forme de crayon) pour lancer l'éditeur de code.

Icône Éditeur Cloud Shell

Remarque : L'éditeur de code remplace le terminal. Vous pouvez revenir au terminal par la suite à l'aide de l'option Ouvrir le terminal.
  1. Examinez le code et la structure du dossier. Dans l'éditeur de code Cloud Shell, accédez à training-data-analyst/courses/developingapps/v1.3/java/kubernetesengine/start.
Remarque : Dans le dossier "kubernetesengine", vous pouvez voir un dossier "end". Le dossier "end" contient les mêmes fichiers que le dossier "start", mais chaque fichier du dossier "end" contient le code complet requis pour suivre cet atelier.

La structure de dossiers associée à l'application Quiz reflète la façon dont celle-ci sera déployée dans Kubernetes Engine :

  • Dossier frontend : contient la sortie empaquetée de l'application Web.
  • Dossier backend : contient la sortie empaquetée de l'application de console.
  • Dockerfile dans les dossiers frontend et backend : fichiers de configuration pour Docker. Actuellement vide.
  • Fichier *.yaml : fichier de configuration de Kubernetes Engine.
  1. Dans Cloud Shell, revenez au terminal, puis exécutez la commande suivante pour copier la sortie jar de l'application d'interface dans le dossier frontend :

    cp ./target/quiz-frontend-0.0.1.jar ./frontend/
  2. Configurez l'application backend :

    mvn package -f pom-backend.xml
  3. Copiez la sortie jar de l'application backend dans le dossier backend :

    cp ./target/quiz-backend-0.0.1.jar ./backend/

Tâche 2 : Créer un cluster Kubernetes Engine

Dans cette section, vous allez créer un cluster Google Kubernetes Engine pour héberger l'application Quiz.

  1. Dans la console, accédez au menu de navigation > Kubernetes Engine > Clusters.

  2. Ensuite, cliquez sur Créer.

  3. Sélectionnez Configurer pour GKE Standard.

  4. Afin de configurer le cluster, utilisez les valeurs spécifiées pour les propriétés listées dans le tableau suivant et conservez les valeurs par défaut des propriétés non listées :

    Dans Paramètres de base du cluster :

    Propriété Valeur
    Nom quiz-cluster
    Zone us-central1-b
  5. Développez le pool par défaut default-pool.

  6. Dans Sécurité, sélectionnez Autoriser l'accès complet à l'ensemble des APIs Cloud.

  7. Cliquez sur Créer. Le provisionnement du cluster dure environ deux minutes.

Se connecter au cluster

  1. Une fois que le cluster est opérationnel, cliquez sur les trois points verticaux et sélectionnez Se connecter.

    Menu déroulant "Autres options" développé, avec l'option "Se connecter" mise en surbrillance

  2. Copiez la première commande de la fenêtre Se connecter au cluster dans le presse-papiers.

  3. Cliquez sur OK pour fermer la fenêtre "Se connecter au cluster".

Le format de la commande est le suivant : gcloud container clusters get-credentials quiz-cluster --zone us-central1-b --project <Project-ID>.

  1. Copiez la commande dans Cloud Shell et appuyez sur Entrée.

    Vous pouvez également cliquer sur Exécuter dans Cloud Shell, puis appuyer sur Entrée.

  2. Listez les pods dans le cluster :

    kubectl get pods

La réponse devrait indiquer qu'il n'y a pas de pods dans le cluster.

Cela confirme que la sécurité est configurée de sorte à autoriser l'outil de ligne de commande kubectl à effectuer des opérations sur le cluster.

Tâche 3 : Créer des images Docker à l'aide de Cloud Build

Dans cette section, vous allez créer un Dockerfile pour l'interface et le backend de l'application, puis utiliser Cloud Build pour créer des images et les stocker dans Container Registry.

Créer le Dockerfile de l'interface

  1. Dans l'éditeur de code Cloud Shell, cliquez sur Ouvrir l'éditeur, puis ouvrez frontend/Dockerfile.

  2. Copiez le contenu suivant et collez-le dans frontend/Dockerfile :

FROM gcr.io/google_appengine/jetty9 VOLUME /tmp ADD ./quiz-frontend-0.0.1.jar /app.jar CMD java -jar /app.jar
  1. Enregistrez le fichier.

À quoi sert le script ?

Ce script comprend une série de commandes Dockerfile.

  • La première commande, FROM gcr.io/google_appengine/jetty9, lance la création d'une image Docker personnalisée avec, pour point de départ, l'image Jetty 9 de Google App Engine, gcr.io/google_appengine/jetty9.

  • La deuxième commande, VOLUME /tmp, crée un volume dans le système de fichiers du conteneur, avec le chemin d'accès à /tmp.

  • La troisième commande (ADD ./quiz-frontend-0.0.1.jar /app.jar) ajoute le fichier Jar de l'interface (uiz-frontend-0.0.1.jar), lequel a été généré par le processus d'empaquetage Maven dans le cadre du processus de compilation.

  • La quatrième et dernière commande, CMD java -jar /app.jar, s'exécute lorsque le conteneur est ouvert.

Créer le Dockerfile du backend

La création du Dockerfile du backend suit le même processus que pour l'interface, sauf que le fichier jar est ajouté au backend.

  1. Dans l'éditeur de code Cloud Shell, ouvrez backend/Dockerfile.

  2. Copiez le contenu suivant et collez-le dans backend/Dockerfile :

FROM gcr.io/google_appengine/jetty9 VOLUME /tmp ADD ./quiz-backend-0.0.1.jar /app.jar CMD java -jar /app.jar
  1. Enregistrez le fichier.

Tâche 4 : Créer des images Docker à l'aide de Cloud Build

  1. Dans Cloud Shell, cliquez sur Ouvrir le terminal, puis saisissez la commande suivante pour créer l'image Docker de l'interface :

    gcloud builds submit -t gcr.io/$DEVSHELL_PROJECT_ID/quiz-frontend ./frontend/

    Les fichiers sont transférés dans Cloud Storage, puis une image Docker est créée et stockée dans Container Registry. Cette opération prend quelques secondes.

  2. Créez une image Docker backend :

    gcloud builds submit -t gcr.io/$DEVSHELL_PROJECT_ID/quiz-backend ./backend/
  3. Dans la console, cliquez sur le menu de navigation, puis sur Container Registry. Les deux dossiers suivants doivent s'afficher : quiz-frontend et quiz-backend.

  4. Cliquez sur quiz-frontend. Vous devriez voir le nom de l'image (un hachage), des tags (les plus récents) et d'autres détails.

Tâche 5 : Créer des ressources de déploiement et de service Kubernetes

Dans cette section, vous allez modifier les fichiers yaml du modèle qui contiennent les spécifications de ressources de déploiement et de service Kubernetes, puis créer ces ressources dans le cluster Kubernetes Engine.

Créer un fichier de déploiement Kubernetes

  1. Dans l'éditeur de code, ouvrez le fichier frontend-deployment.yaml. Nous avons déjà créé la base du fichier. Votre travail consiste à remplacer les espaces réservés par les valeurs propres à votre projet.

  2. Remplacez les espaces réservés dans le fichier frontend-deployment.yaml par les valeurs suivantes :

    Nom de l'espace réservé Valeur
    [PROJET_GCLOUD] ID du projet GCP (pour afficher l'ID du projet, saisissez echo $PROJET_GCLOUD dans Cloud Shell)
    [BUCKET_GCLOUD] ID du bucket Cloud Storage utilisé en tant que bucket multimédia dans votre projet. L'ID du bucket est [GCP_Project_ID]-media.
    [FRONTEND_IMAGE_IDENTIFIER] Image de l'interface identifiée au format gcr.io/[ID_Projet_GCP]/quiz-frontend

    Ne remplacez que les valeurs entourées par des crochets [].

    Le fichier YAML obtenu ressemble à ceci :

    apiVersion: apps/v1beta1 kind: Deployment metadata: name: quiz-frontend labels: app: quiz-app spec: replicas: 3 template: metadata: labels: app: quiz-app tier: frontend spec: containers: - name: quiz-frontend image: gcr.io/qwiklabs-gcp-04-3ad1f39f2114/quiz-frontend imagePullPolicy: Always ports: - name: http-server containerPort: 8080 env: - name: GCLOUD_PROJECT value: qwiklabs-gcp-04-3ad1f39f2114 - name: GCLOUD_BUCKET value: qwiklabs-gcp-04-3ad1f39f2114-media

    Le déploiement "quiz-frontend" provisionne trois instances répliquées de l'image Docker de l'interface dans des pods Kubernetes, en les répartissant sur les trois nœuds du cluster Kubernetes Engine.

  3. Enregistrez le fichier.

  4. Ouvrez le fichier backend-deployment.yaml et remplacez les espaces réservés dans le fichier backend-deployment.yaml par les valeurs suivantes :

    Nom de l'espace réservé Valeur
    [PROJET_GCLOUD] ID du projet GCP (ou utilisez echo $GCLOUD_PROJECT)
    [BUCKET_GCLOUD] ID du bucket Cloud Storage utilisé en tant que bucket multimédia dans votre projet. Il s'agit du même bucket que celui utilisé dans frontend-deployment.yaml. (l'ID de bucket est [GCP_Project_ID]-media).
    [BACKEND_IMAGE_IDENTIFIER] Image du backend identifiée au format gcr.io/[ID_PROJET_GCP]/quiz-backend

    Le déploiement de quiz-backend provisionne une instance dupliquée de l'image Docker du backend dans les pods Kubernetes, sur un des trois nœuds du cluster Kubernetes Engine.

  5. Enregistrez le fichier.

  6. Examinez le contenu du fichier frontend-service.yaml.

    Remarque : Le service expose le déploiement de l'interface à l'aide d'un équilibreur de charge. L'équilibreur de charge est configuré pour envoyer les requêtes provenant des clients vers les trois instances répliquées du pod de l'interface.

Exécuter les fichiers de déploiement et de service

  1. Dans Cloud Shell, provisionnez le déploiement de l'interface de Quiz :

    kubectl create -f ./frontend-deployment.yaml
  2. Provisionnez le déploiement du backend de Quiz :

    kubectl create -f ./backend-deployment.yaml
  3. Provisionnez le service de l'interface de Quiz :

    kubectl create -f ./frontend-service.yaml

Chaque commande provisionne des ressources dans Kubernetes Engine. Cette opération prend quelques minutes.

Tâche 6 : Tester l'application Quiz

Dans cette section, vous allez examiner les pods et le service déployés, et accéder à l'application Quiz.

Examiner les ressources déployées

  1. Dans la console, cliquez sur le menu de navigation > Kubernetes Engine > Charges de travail. Les deux éléments suivants doivent s'afficher : quiz-frontend et quiz-backend.

    Vous pouvez constater que le pod est en cours de création ou d'ores et déjà opérationnel.

  2. Cliquez sur quiz-frontend pour afficher un aperçu de quiz-frontend.

  3. Faites défiler la page jusqu'à Pods gérés.

    Vous pouvez constater que l'équilibreur de charge de quiz-frontend est en cours de création ou d'ores et déjà opérationnel. Patientez jusqu'à ce que le processus de service soit terminé. Un point de terminaison d'adresse IP doit s'afficher lorsque le service est prêt.

  4. Dans la section Services associés, sous Points de terminaison, sélectionnez l'adresse IP et ouvrez la page dans un nouvel onglet du navigateur.

  5. Effectuez un test pour vérifier que l'application fonctionne comme prévu.

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

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.

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