1. Avant de commencer
Google fournit un outil puissant de création d'images avec lequel vous pouvez facilement créer et publier une image de conteneur Docker optimisée pour les applications Java en un rien de temps sans Docker ni Dockerfile. Google Cloud apporte également des solutions sans serveur aux conteneurs avec Cloud Run, une plate-forme de calcul gérée qui effectue un scaling automatique de vos conteneurs sans état. Dans cet atelier de programmation, vous verrez à quel point il est facile de conteneuriser votre application Kotlin Spring Boot, de la publier dans Container Registry et d'exécuter l'image sur Google Cloud en toute simplicité.
Cet atelier de programmation vous explique comment configurer une application simple en Kotlin, ce qui illustre l'utilisation des services et outils Google Cloud, y compris Jib, Container Registry et Cloud Run.
Prérequis
- Connaissance des outils et du langage de programmation Java
- Connaissance des éditeurs de texte Linux standards tels que Vim, Emacs et nano
Objectifs de l'atelier
- Configurez une application Kotlin Spring Boot.
- Créer une image Docker optimisée
- Publiez l'image dans Container Registry.
- Exécuter l'application conteneurisée sur Cloud Run
Prérequis
- Un projet Google Cloud
- Un navigateur, tel que Google Chrome
2. Configuration
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID
tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, vous allez utiliser Cloud Shell dans cet atelier de programmation, un environnement de ligne de commande exécuté dans Google Cloud.
Activer Cloud Shell
- Dans Cloud Console, cliquez sur Activer Cloud Shell .
Si vous n'avez jamais démarré Cloud Shell auparavant, un écran intermédiaire (en dessous de la ligne de flottaison) vous explique de quoi il s'agit. Dans ce cas, cliquez sur Continuer (elle ne s'affichera plus). Voici à quoi il ressemble :
Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.
Cette machine virtuelle contient tous les outils de développement dont vous avez besoin. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier dans un simple navigateur ou sur votre Chromebook.
Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est défini avec votre ID de projet.
- Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
Résultat de la commande
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet:
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si vous obtenez un résultat différent, exécutez cette commande :
gcloud config set project <PROJECT_ID>
Résultat de la commande
Updated property [core/project].
3. Initialiser une application Spring Boot
- Générer une nouvelle application Spring Boot avec Spring Initializr
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
Notez qu'Initializr ajoute automatiquement spring-boot-starter-web
à vos dépendances dans le pom.xml
du modèle d'application.
- Accédez au répertoire du modèle d'application.
$ cd kotlin-jib-cloud-run
- Créez et exécutez l'application à l'aide de Maven.
$ ./mvnw -DskipTests spring-boot:run
- Une fois lancée, l'application commencera à écouter sur le port 8080. Cliquez sur Aperçu sur le Web dans la barre d'outils Cloud Shell, puis sélectionnez Prévisualiser sur le port 8080 pour accéder à l'application.
- Vous devriez recevoir une réponse 404, car l'application n'a encore rien d'utile. Arrêtez l'application avec
Control+C
.
4. Ajouter un contrôleur Web
- Créez la classe
Controller
suivante dans le package de démonstration:
$ vi src/main/kotlin/com/example/demo/Controller.kt or $ nano src/main/kotlin/com/example/demo/Controller.kt
src/main/kotlin/com/example/demo/Controller.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class Controller {
@GetMapping("/")
fun saySomething(): String {
return "Kotlin app on Cloud Run, containerized by Jib!"
}
}
- Recompilez et exécutez l'application.
$ ./mvnw spring-boot:run
- Vérifiez à nouveau l'application à l'aide de l'aperçu sur le Web . Cette fois, le message "
Kotlin app on Cloud Run, containerized by Jib!
" doit s'afficher. Arrêtez l'application avecControl+C
.
5. Conteneuriser votre application et la publier dans Container Registry
Avec Jib, vous pouvez conteneuriser votre application de manière optimisée sans Docker et la publier dans n'importe quel registre de conteneurs.
- Avant de continuer, vous devez activer l'API Container Registry. Cette opération ne doit être effectuée qu'une seule fois par projet pour rendre l'API accessible.
$ gcloud services enable containerregistry.googleapis.com
- Exécutez Jib pour créer une image Docker et la publier dans Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
Le message suivant s'affiche ensuite, indiquant que l'application est conteneurisée et transférée vers Container Registry.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
Si une erreur s'affiche, vérifiez que $GOOGLE_CLOUD_PROJECT
est correctement défini sur l'ID de votre projet Google Cloud (PROJECT_ID
).
- Avant de continuer, vérifiez si l'image a bien été publiée. Revenez à la console Cloud, cliquez sur le menu de navigation, puis sélectionnez Container Registry.
Vous verrez que votre image a bien été publiée.
6. Exécuter l'application conteneurisée sur Cloud Run
Cloud Run intègre des solutions sans serveur aux conteneurs, en effectuant un scaling automatique de vos conteneurs sans état.
- Cliquez à nouveau sur le menu de navigation, puis sélectionnez Cloud Run.
Si vous accédez à Cloud Run pour la première fois, la boîte de dialogue suivante s'affiche pour une configuration unique. Cliquez sur Start Using Cloud Run (Commencer à utiliser Cloud Run) si le service s'affiche.
- Sur la page Cloud Run, cliquez sur Créer un service.
- Sur l'écran suivant, cliquez sur Select (Sélectionner) sous Source. La source est l'image que vous souhaitez exécuter sur Cloud Run.
- La boîte de dialogue affiche l'image que vous avez créée précédemment. Sélectionnez l'image, puis cliquez sur Continuer.
- Il ne vous reste plus que quelques clics à déployer l'application. Sous Plate-forme de déploiement, sélectionnez Cloud Run (entièrement géré) pour que le service soit entièrement géré sur Google Cloud. Choisissez une région adaptée à votre emplacement, sélectionnez Autoriser les appels non authentifiés, puis cliquez sur Créer. Et voilà !
Une fois l'image entièrement déployée, la page Cloud Run affiche une URL permettant d'accéder à l'application. En savoir plus
À la fin, le message que vous attendez de l'application s'affiche.
Kotlin app on Cloud Run, containerized by Jib!
Et voilà ! À l'avenir, si vous devez déployer de nouvelles versions de votre application, vous pourrez le faire en cliquant sur Déployer la nouvelle révision sur la page.
7. Effectuer un nettoyage
- Pour nettoyer votre environnement, vous devez supprimer l'application déployée sur Cloud Run et l'image publiée dans Container Registry. Accédez à Cloud Run, sélectionnez l'application, puis cliquez sur Delete (Supprimer).
- De même, accédez à la page Container Registry et supprimez l'image.
8. Félicitations
Félicitations ! Vous avez conteneurisé votre application Kotlin Spring Boot et l'avez déployée dans Cloud Run.
À l'aide de Jib, vous avez créé une image de conteneur optimisée sans avoir installé Docker ou écrit un Dockerfile, puis vous l'avez publié dans Container Registry. Jib optimise la construction d'images afin que toute personne ne disposant pas de connaissances approfondies sur Docker puisse conteneuriser des applications Java rapidement et efficacement. Ensuite, en quelques clics, vous avez déployé l'application sur Cloud Run pour commencer à la diffuser en un rien de temps.
En savoir plus
- Déployer une application Java dans Kubernetes sur Google Kubernetes Engine
- Documentation Cloud Run
- Présentation de Cloud Run
- Présentation de Jib : mieux créer des images Docker Java
- Créez des conteneurs plus rapidement avec Jib, un outil de création d'images Google pour les applications Java
- Jib : conteneurisez votre application Java
- Chaîne Jib Gitter
- Liste de diffusion des utilisateurs de Jib