Développer avec Cloud Code

1. Objectifs

Au cours de cet atelier, vous allez apprendre à réaliser les opérations suivantes :

  • Découvrir les plug-ins Cloud Code
  • Déployer sur un cluster Kubernetes
  • Diffuser en continu les journaux Kubernetes
  • Utiliser l'actualisation à chaud des modifications
  • Déboguer des applications Kubernetes en direct

2. Préparer votre espace de travail

Cloner l'application

Pour cloner le dépôt et l'ouvrir dans votre environnement de développement :

  1. Ouvrez l'éditeur Cloud Shell en accédant à l'URL suivante :

https://ide.cloud.google.com

  1. Dans la fenêtre de terminal, clonez le code source de l'application à l'aide de la commande suivante :

git clone https://github.com/viglesiasce/sample-app.git -b golden-path

  1. Accédez au répertoire et définissez l'espace de travail de l'IDE sur la racine du dépôt :

cd sample-app && cloudshell workspace .

Démarrer Minikube

Dans cette section, vous allez créer, tester, déployer et accéder à votre application à l'aide d'une version locale de Kubernetes appelée Minikube.

  1. Dans le terminal, démarrez Minikube en exécutant la commande suivante :

minikube start

Minikube configure un cluster Kubernetes local dans Cloud Shell. Cette configuration prendra quelques minutes. Pendant le démarrage, prenez le temps de passer en revue les différentes interfaces fournies par Cloud Code à l'étape suivante.

3. Découvrir le plug-in Cloud Code

Cloud Code fournit une prise en charge de l'IDE pour l'ensemble du cycle de développement des applications Kubernetes et Cloud Run, depuis la création d'une application à partir d'un modèle existant jusqu'à la surveillance des ressources de votre application déployée. Vous utiliserez différentes commandes et vues fournies par Cloud Code. Dans cette étape, vous vous familiariserez avec les interfaces de base.

Examiner les vues de l'explorateur à partir de la barre des tâches

Plusieurs panneaux d'interface utilisateur sont accessibles depuis la barre des tâches. Pour vous familiariser rapidement avec les différentes vues, cliquez sur les icônes de chaque vue.

API Explorer:

  • Cliquez sur l'icône Cloud Code - API Cloud Cloud Code  dans la barre des tâches. Pour en savoir plus sur l'utilisation de cette vue, consultez la documentation.

ded1723c524edd72.png

Explorateur Secret Manager :

  • Cliquez sur la vue Secret Manager  dans la barre des tâches. Pour en savoir plus sur l'utilisation de cette vue, consultez la documentation.

89f88159bcf79fa9.png

Explorateur Cloud Run :

  • Accédez à l'explorateur Cloud Run à l'aide de l'icône Cloud Run dans la barre des tâches située à gauche . Pour en savoir plus sur l'utilisation de cette vue, consultez la documentation.

a1d583fd06413011.png

Explorateur Kubernetes :

  • Accédez à l'explorateur Kubernetes à l'aide de l'icône dans la barre des tâches située à gauche . Pour en savoir plus sur l'utilisation de cette vue, consultez la documentation.

b2b8ab3975c5b0c9.png

Examiner les commandes de la barre d'état

Vous pouvez accéder rapidement aux commandes fréquemment utilisées via l'indicateur de la barre d'état.

  • Recherchez l'indicateur de l'extension Cloud Code dans la barre d'état d61e85cf23a32a40.png , puis cliquez dessus.
  • Consultez les différentes commandes disponibles pour exécuter et déboguer sur Cloud Run et Kubernetes.
  • Cliquez sur "Open Welcome Page" (Ouvrir la page de bienvenue) pour obtenir plus d'informations et des exemples d'activités.

Examiner les commandes de la palette de commandes

Des commandes supplémentaires sont disponibles dans la palette de commandes. Consultez la liste des commandes auxquelles vous pouvez accéder.

  • Ouvrez la palette de commandes (appuyez sur Ctrl/Cmd+Maj+P), puis saisissez Cloud Code pour filtrer les commandes disponibles.
  • Utilisez les touches fléchées pour parcourir la liste des commandes.

4. Déployer sur un cluster Kubernetes

Dans cette section, vous allez créer, tester, déployer et accéder à votre application.

Les étapes ci-dessous lancent une compilation du code source, puis exécutent les tests. L'exécution de la compilation et des tests prendra quelques minutes. Ces tests incluent des tests unitaires et une étape de validation qui vérifie les règles définies pour l'environnement de déploiement. Cette étape de validation est déjà configurée et vous permet de recevoir des avertissements en cas de problèmes de déploiement, même lorsque vous travaillez encore dans votre environnement de développement.

  1. Dans le volet situé au bas de l'éditeur Cloud Shell, sélectionnez Cloud Code  d61e85cf23a32a40.png.
  2. Dans le panneau qui s'affiche en haut, sélectionnez "Run on Kubernetes" (Exécuter sur Kubernetes). Si vous y êtes invité, sélectionnez "Yes" (Oui) pour utiliser le contexte Kubernetes de Minikube.
  3. Sélectionnez l'onglet "Output" (Résultat) dans le volet inférieur 4866761cb9c691e2.png pour afficher la progression et les notifications.
  4. Sélectionnez "Kubernetes: Run/Debug - Detailed" (Kubernetes : exécuter/déboguer - détaillé) dans la liste déroulante du canal à droite c5e31091d464dbcf.png pour afficher des informations supplémentaires et les journaux diffusés en direct à partir des conteneurs.

Une fois la compilation et les tests terminés, l'onglet "Output" (Résultat) affiche : Resource deployment/sample-app-dev status completed successfully (Déploiement de ressources/état de l'application exemple-dev terminé) et deux URL sont listées.

  1. Dans le terminal Cloud Code, pointez sur la première URL du résultat (http://localhost:8080), puis, dans l'info-bulle qui s'affiche, sélectionnez "Open Web Preview" (Ouvrir l'aperçu sur le Web).

La version locale de l'application s'ouvre dans votre navigateur. Cette version de l'application s'exécute dans le cluster Kubernetes de Minikube.

  1. Dans votre navigateur, actualisez la page. Le nombre à côté de "Counter" (Compteur) augmente, ce qui indique que l'application répond à votre actualisation.

Dans votre navigateur, laissez cette page ouverte afin de pouvoir afficher l'application lorsque vous apportez des modifications dans votre environnement local.

5. Utiliser l'actualisation à chaud des modifications

Dans cette section, vous allez modifier l'application et en afficher la version modifiée en l'exécutant dans le cluster Kubernetes local. Dans l'onglet "Output" (Résultat) du canal "Kubernetes: Run/Debug" (Kubernetes : exécuter/déboguer), en plus des URL de l'application, le résultat indique également Watching for changes. (Surveillance des modifications). Cela signifie que le mode de surveillance est activé. Lorsque Cloud Code est en mode de surveillance, il détecte toutes les modifications enregistrées dans votre dépôt, puis recrée et redéploie automatiquement l'application avec les dernières modifications.

  1. Dans l'éditeur Cloud Shell, accédez au fichier main.go.
  2. Dans ce fichier main.go, à la ligne 23, remplacez la couleur "green" (vert) par "blue" (bleu).
  3. Enregistrez le fichier.

Cloud Code détecte que la modification apportée à l'application est enregistrée et la redéploie automatiquement. L'onglet "Output" (Résultat) affiche "Update initiated" (Mise à jour lancée). L'exécution de ce redéploiement prendra quelques minutes.

Cette recréation automatique est semblable à l'actualisation à chaud du code, qui est une fonctionnalité disponible pour certains types d'applications et frameworks.

  1. Une fois la compilation terminée, accédez à votre navigateur où l'application est ouverte et actualisez la page.

Lorsque vous actualisez la page, la couleur en haut du tableau passe du bleu au vert.

Cette configuration vous offre cette actualisation automatique pour n'importe quelle architecture, avec n'importe quel composant. Lorsque vous utilisez Cloud Code et Minikube, tous les composants exécutés dans Kubernetes disposent de cette fonctionnalité d'actualisation de code à chaud.

6. Déboguer des applications Kubernetes en direct

Vous avez exécuté l'application, apporté une modification et affiché l'application en cours d'exécution. Dans cette section, vous allez déboguer l'application pour vous assurer qu'elle est prête à être validée dans le dépôt principal.

Pour cet exemple de débogage, nous nous concentrerons sur la section du code pour le compteur de pages.

  1. Dans l'éditeur Cloud Shell, ouvrez le fichier main.go.
  2. Définissez un point d'arrêt dans l'application en cliquant à gauche du numéro de ligne 82 (if err != nil {).
  3. Dans le volet bleu situé au bas de l'éditeur Cloud Shell, sélectionnez Cloud Code d61e85cf23a32a40.png .
  4. Dans le panneau qui s'affiche en haut, sélectionnez "Debug on Kubernetes" (Déboguer sur Kubernetes).

Cloud Code exécute et associe des débogueurs afin que vous puissiez accéder à l'état en mémoire de l'application, et pas seulement à son comportement visible par l'utilisateur.

  1. À la fin du processus de déploiement, une invite s'affiche en haut de la fenêtre et vous demande de confirmer le répertoire du conteneur dans lequel l'application est déployée. f96e9a814edb44f4.png

Vérifiez que la valeur est définie sur /go/src/app, puis appuyez sur Entrée pour l'accepter.

  1. Attendez que le débogueur termine le déploiement. Vous saurez qu'il est terminé lorsque la barre d'état devient orange et que le résultat indique "Attached debugger to container "sample-app-dev-..." successfully." (Débogueur associé au conteneur "sample-app-dev-..." avec succès).
  2. Dans le terminal Cloud Code, pointez sur la première URL du résultat (http://localhost:8081), puis, dans l'info-bulle qui s'affiche, sélectionnez "Open Web Preview" (Ouvrir l'aperçu sur le Web). La page ne se chargera pas complètement, ce qui est normal.
  3. Revenez à l'IDE où le débogueur s'affiche désormais. Le code s'affiche dans l'onglet, et vous verrez la pile d'appels, ainsi que les variables disponibles dans cette partie du code. Vous pouvez développer "Variables - Local" (Variables - Local) pour afficher la valeur actuelle de la variable de compteur.
  4. Pour autoriser le chargement de la page, sélectionnez l'icône « Continuer » dans la fenêtre de débogage 8f395391c4828528.png.
  5. Lorsque vous avez terminé le débogage, cliquez sur le bouton "Stop" (Arrêter) pour mettre fin à chacun des threads en cours d'exécution. 81d142a9e1a2c01b.png