Google fournit un outil de création d'images puissant qui vous permet de créer et de publier facilement une image de conteneur Docker optimisée pour les applications Java en un rien de temps, sans Docker ni Dockerfile. Google Cloud propose également une solution sans serveur pour les 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 allez découvrir à quel point il est facile de conteneuriser votre application Spring Boot Kotlin, de la publier dans Container Registry et d'exécuter l'image sur Google Cloud de manière fluide.
Cet atelier de programmation vous guide dans la configuration d'une application simple en Kotlin, qui montre comment utiliser les services et outils Google Cloud, y compris Jib, Container Registry et Cloud Run.
Prérequis
- Connaissances du langage et des outils de programmation Java
- Connaissance des éditeurs de texte Linux standards tels que Vim, Emacs et nano
Objectifs de l'atelier
- Configurez une application Spring Boot Kotlin.
- Créez une image Docker optimisée.
- Publiez l'image dans Container Registry.
- Exécutez l'application conteneurisée sur Cloud Run.
Prérequis
- Un projet Google Cloud
- Un navigateur, tel que Google Chrome
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 n'avez pas encore de compte Gmail ou G Suite, 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 la console Cloud pour pouvoir utiliser les ressources Google Cloud.
Suivre cet atelier de programmation ne devrait pas vous coûter plus d'un euro. Cependant, cela peut s'avérer plus coûteux si vous décidez d'utiliser davantage de ressources ou si vous ne les interrompez pas.
Les nouveaux utilisateurs de Google Cloud peuvent s'inscrire à un essai sans frais pour bénéficier d'un crédit de 300$valable pour un essai sans frais.
Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans Google Cloud.
Activer Cloud Shell
- Dans la console Cloud, cliquez sur Activer Cloud Shell
.
Si vous n'avez encore jamais démarré Cloud Shell, un écran intermédiaire s'affiche en dessous de la ligne de séparation pour décrire de quoi il s'agit. Si tel est le cas, cliquez sur Continuer (cet écran ne s'affiche qu'une seule fois). 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 nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances 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`
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].
- Générez une 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 que Initializr ajoutera automatiquement spring-boot-starter-web
à vos dépendances dans le pom.xml
de l'application modèle.
- Accédez au répertoire de l'application de modèle.
$ cd kotlin-jib-cloud-run
- Créez et exécutez l'application à l'aide de Maven.
$ ./mvnw -DskipTests spring-boot:run
- Une fois démarrée, l'application commence à é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 obtenir une réponse 404, car l'application ne fait encore rien d'utile. Arrêtez l'application avec
Control+C
.
- 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!
" devrait s'afficher. Arrêtez l'application avecControl+C
.
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:1.8.0:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
Vous finirez par voir le message suivant indiquant que l'application a été conteneurisée et envoyé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 que 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.
Cloud Run applique le 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 la configuration unique. Si l'option Commencer à utiliser Cloud Run s'affiche, cliquez dessus.
- Sur la page Cloud Run, cliquez sur Créer un service.
- Sur l'écran suivant, cliquez sur 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 qu'à déployer l'application en quelques clics. Sous Deployment platform (Plate-forme de déploiement), choisissez Cloud Run (fully managed) (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. N'hésitez pas à la consulter.
À la fin, le message attendu de l'application s'affichera.
Kotlin app on Cloud Run, containerized by Jib!
Et voilà ! Si vous devez déployer de nouvelles versions de l'application, vous pourrez le faire en cliquant sur Déployer la nouvelle révision sur la page.
- Pour nettoyer votre environnement, vous devez supprimer l'application déployée sur Cloud Run et l'image publiée sur Container Registry. Accédez à Cloud Run, sélectionnez l'application, puis cliquez sur Supprimer.
- De même, accédez à la page Container Registry et supprimez l'image.
Félicitations ! Vous avez réussi à conteneuriser votre application Spring Boot Kotlin et à la déployer sur Cloud Run.
À l'aide de Jib, vous avez créé une image de conteneur optimisée sans installer Docker ni écrire de fichier Dockerfile, puis vous l'avez publiée dans Container Registry. Jib optimise la création d'images. Ainsi, toute personne ne possédant pas de connaissances approfondies sur Docker peut mettre en conteneur 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 sur Kubernetes sur Google Kubernetes Engine
- Documentation Cloud Run
- Présentation de Cloud Run
- Mieux intégrer des images Docker pour Java créées avec Jib
- Créer des conteneurs plus rapidement avec Jib, un outil Google de création d'images pour les applications Java
- Jib : conteneurisez votre application Java
- Canal Gitter Jib
- Liste de diffusion des utilisateurs de Jib