Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Quarkus
  3. Déployer dans Google Cloud Platform
Extrait - Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes
Extraits du livre
Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes Revenir à la page d'achat du livre

Déployer dans Google Cloud Platform

Google Cloud Functions

Google Cloud Platform ou GCP est le cloud public de Google.

Google Cloud Functions est la solution serverless de Function-as-a-Service (FaaS) de GCP.

Quarkus propose trois extensions pour écrire des fonctions GCP :

  • Quarkus Google Cloud Functions : permet l’écriture de fonctions avec l’API du SDK Google Cloud.

  • Quarkus Google Cloud Functions HTTP : permet l’écriture de fonctions avec l’une des API HTTP de Quarkus.

  • Funqy Google Cloud Functions : permet l’écriture de fonctions avec Funqy, une API agnostique du fournisseur cloud. L’utilisation de Funqy sera vue dans le chapitre Funqy : des fonctions portables.

Chaque extension permet d’utiliser toutes les fonctionnalités de Quarkus pour le développement d’une fonction Google Cloud Functions.

Le déploiement d’une fonction Google Cloud Functions nécessite la CLI gcloud.

Plus d’informations sont disponibles dans la documentation de la CLI gcloud : https://cloud.google.com/cli

Quarkus supporte l’écriture de fonctions pour les moteurs d’exécution 1st gen et 2nd gen. Nous allons utiliser le moteur 2nd gen dans ce livre.

1. Quarkus Google Cloud Functions

L’extension Quarkus Google Cloud Functions permet d’écrire des fonctions avec l’API du SDK Google Cloud. Elle peut être ajoutée à votre application via :

  • la CLI Quarkus :

quarkus extension add google-cloud-functions 
  • le plugin Maven :

mvn quarkus:add-extension \ 
    -Dextensions="google-cloud-functions" 

Ceci va ajouter la dépendance Maven suivante :

<dependency> 
  <groupId>io.quarkus</groupId> 
  <artifactId>quarkus-google-cloud-functions</artifactId> 
</dependency> 

Une fonction Google Cloud doit implémenter une des quatre interfaces fournies par le SDK :

  • com.google.cloud.functions.HttpFunction : pour créer une fonction qui sera déclenchée par un appel HTTP.

  • com.google.cloud.functions.BackgroundFunction : pour créer une fonction qui sera déclenchée par un événement du cloud (présence d’un fichier dans un bucket, d’un message dans un topic...). L’événement sera désérialisé dans...

Google App Engine

AppEngine est une plateforme d’hébergement d’applications web fournie par Google Cloud. C’est une offre de type PaaS (Platform-as-a-Service) et serverless : il n’y a pas à se soucier de la mise à disposition des serveurs ni de leur dimensionnement.

Dans cette section, nous allons déployer dans AppEngine une application Quarkus Hello World qui peut être créée via la ligne de commande suivante :

quarkus create app \ 
    fr.loicmathieu.eni.quarkus:chapitre-11-appengine 

Cette application expose un endpoint de type « Hello World » au chemin /hello.

1. Google AppEngine standard runtime

Pour déployer une application Quarkus dans AppEngine, il faut configurer le type de packaging de l’application comme un über jar, AppEngine ne prenant pas en charge le packaging en couches utilisé par défaut par Quarkus.

Pour cela, il faut ajouter la propriété de configuration suivante au fichier application.properties :

quarkus.package.type=uber-jar 

Puis il faut créer le fichier de configuration d’AppEngine app.yaml dans le répertoire src/main/appengine.

Dans ce premier exemple, nous allons configurer l’environnement d’exécution Java 17 d’AppEngine :

runtime: java17 

Pour déployer l’application dans AppEngine, on peut la construire localement...

Google Cloud Run

Cloud Run est une plateforme d’exécution de conteneur fournie par Google Cloud. C’est une offre de type CaaS (Container-as-a-Service) et serverless : il n’y a pas à se soucier de la mise à disposition des serveurs ni de leur dimensionnement.

Dans cette section, nous allons déployer dans Cloud Run une application Quarkus Hello World qui peut être créée via la ligne de commande suivante :

quarkus create app \ 
    fr.loicmathieu.eni.quarkus:chapitre-11-cloud-run 

Cloud Run va déployer une application comme un conteneur, il va donc nécessiter un fichier Dockerfile à la racine du projet.

Tout d’abord, il faut construire l’application localement via quarkus build ou mvn package, puis copier le fichier Dockerfile nécessaire à la racine du projet. Voici un exemple pour un déploiement JVM :

cp src/main/docker/Dockerfile.jvm Dockerfile 

Pour déployer une application comme une image native, il faut construire localement via quarkus build --native ou mvn package -Dnative, puis copier le fichier src/main/docker/Dockerfile.native à la racine du projet.

Ensuite, il faut construire l’image Docker. Le plus simple est d’utiliser Cloud Build pour construire l’image Docker mais il est possible d’utiliser une image disponible dans un registre Docker public à la place.

Pour...

Services GCP : Storage, PubSub...

Quarkus propose un ensemble d’extensions permettant d’accéder aux services de Google Cloud dans le pack d’extension Quarkus Google Cloud Services disponible dans le Quarkiverse.

Au jour d’écriture de ce livre, les services suivants sont supportés :

  • BigQuery

  • Bigtable

  • Firebase Admin

  • Firestore

  • Logging

  • PubSub

  • Secret Manager

  • Spanner

  • Storage

Dans les exemples de ce chapitre, nous utiliserons différents services de Google Cloud dans une application REST développée avec RESTEasy Reactive, mais il est possible de les utiliser avec n’importe quelle extension de Quarkus.

L’utilisation des services Google Cloud depuis une fonction Cloud Fonctions ou une application déployée dans Google Cloud (par exemple via AppEngine ou Cloud Run) est tout indiquée car la configuration et l’authentification s’en trouvent facilitées. En effet, lors d’un déploiement dans Google Cloud, un service Google Cloud va automatiquement utiliser le contexte d’authentification du moteur d’exécution (Cloud Run ou Cloud Functions par exemple).

La documentation de référence de ces services se trouve à l’adresse suivante : https://quarkiverse.github.io/quarkiverse-docs/quarkus-google-cloud-services/main/index.html

1. Configuration et authentification

Toutes les extensions du pack d’extension Google Cloud Services partagent une propriété de configuration commune : quarkus.google.cloud. project-id. Celle-ci permet de configurer l’identifiant du projet Google Cloud.

Si cette propriété n’est pas renseignée, le projet par défaut détecté via les identifiants d’application par défaut sera utilisé ; cela correspond à l’appel ServiceOptions.getDefaultProjectId(). En cas de déploiement dans un environnement d’exécution de Google Cloud, la valeur par défaut de la propriété quarkus.google.cloud.project-id sera donc l’identifiant du projet dans lequel l’application est déployée.

Pour authentifier une application à un service Google Cloud, il faut soit utiliser des identifiants Google Cloud, soit déployer cette application dans Google Cloud. Dans ce dernier cas, elle va utiliser les identifiants...