Déployer une application Java avec Open Liberty/WebSphere Liberty sur un cluster Azure Red Hat OpenShift

Ce guide vous montre comment exécuter votre application Java, Java EE, Jakarta EE ou MicroProfile sur le runtime Open Liberty/WebSphere Liberty. Le guide vous montre ensuite comment déployer l’application conteneurisée sur un cluster Azure Red Hat OpenShift 4 à l’aide de l’opérateur Open Liberty. Cet article vous guide tout au long de la préparation d’une application Liberty, la création de l’image Docker de l’application et l’exécution de l’application conteneurisée sur un cluster Azure Red Hat OpenShift 4. Pour plus d’informations sur Open Liberty, consultez la page de projet Open Liberty. Pour plus d’informations sur WebSphere Liberty, consultez la page de produit WebSphere Liberty.

Cet article est un guide manuel pas à pas pour exécuter Open/WebSphere Liberty sur un cluster Azure Red Hat OpenShift 4. Pour une solution plus automatisée qui accélère votre parcours vers un cluster Azure Red Hat OpenShift 4, consultez Déployer IBM WebSphere Liberty et Open Liberty sur Azure Red Hat OpenShift.

Cet article vous aide à accéder rapidement au déploiement. Avant de passer en production, vous devez explorer Tuning Liberty.

Important

Bien qu’Azure Red Hat OpenShift soit conjointement conçu, exploité et pris en charge par Red Hat et Microsoft pour fournir une expérience de support intégrée, le logiciel que vous exécutez sur Azure Red Hat OpenShift, y compris celui décrit dans cet article, est soumis à ses propres conditions de support et de licence. Pour plus d’informations sur la prise en charge d’Azure Red Hat OpenShift, consultez le cycle de vie de support d’Azure Red Hat OpenShift 4. Pour plus d’informations sur la prise en charge du logiciel décrit dans cet article, consultez les pages principales de ce logiciel, comme indiqué dans l’article.

Prérequis

Remarque

Azure Red Hat OpenShift requiert a minimum de 40 cœurs pour créer et exécuter un cluster OpenShift. Le quota de ressources Azure par défaut pour un nouvel abonnement Azure ne répond pas à cette exigence. Pour demander une augmentation de votre limite de ressources, consultez Quota standard : augmenter les limites par série de machines virtuelles. Notez que l’abonnement d’essai gratuit n’est pas éligible à une augmentation de quota. Passez à un abonnement Paiement à l’utilisation avant de demander une augmentation de quota.

Suivez les conditions préalables suivantes pour utiliser ce guide.

  1. Préparez un ordinateur local avec un système d’exploitation de type UNIX installé (par exemple, Ubuntu, macOS).

  2. Installez une implémentation Java SE, version 17 ou ultérieure (par exemple, Eclipse Open J9).

  3. Installez Maven 3.5.0 ou une version ultérieure.

  4. Installez Docker pour votre système d’exploitation.

  5. Installez Azure CLI 2.0.75 ou une version ultérieure.

  6. Vérifiez et installez envsubst s’il n’est pas préinstallé dans votre système d’exploitation.

  7. Clonez le code de cet exemple sur votre système local. L’exemple se trouve sur GitHub.

  8. Suivez les instructions de la section Créer un cluster Azure Red Hat OpenShift 4.

    Bien que l’étape « Récupération d’un secret d’extraction Red Hat » soit étiquetée comme étant facultative, elle est requise pour cet article. Le secret d’extraction permet à votre cluster Azure Red Hat OpenShift de trouver l’opérateur Open Liberty.

    Si vous envisagez d’exécuter des applications gourmandes en mémoire sur le cluster, spécifiez la taille de machine virtuelle appropriée pour les nœuds Worker à l’aide du paramètre --worker-vm-size. Par exemple, Standard_E4s_v3 est la taille de machine virtuelle minimale pour installer l’opérateur Elasticsearch sur un cluster. Pour plus d’informations, consultez l’article suivant :

  9. Connectez-vous au cluster en suivant les étapes décrites dans Se connecter à un cluster Azure Red Hat OpenShift 4.

    • Veillez à suivre les étapes décrites dans « Installer l’interface CLI OpenShift », car nous utilisons la oc commande plus loin dans cet article.
    • Notez l’URL de la console du cluster. Il doit ressembler à https://console-openshift-console.apps.<random>.<region>.aroapp.io/.
    • Notez les informations d’identification de kubeadmin.
    • Veillez à suivre les étapes décrites dans « Se connecter à l’aide de l’interface de ligne de commande OpenShift » avec les informations d’identification kubeadmin.

Installer l’opérateur Open Liberty OpenShift

Après avoir créé le cluster et vous y être connecté, installez l’opérateur Open Liberty. La page de démarrage principale de l’opérateur Open Liberty se trouve sur GitHub.

  1. Connectez-vous à la console web OpenShift à partir de votre navigateur en utilisant les informations d’identification de kubeadmin.

  2. Accédez à Opérateurs>OperatorHub et recherchez Open Liberty.

  3. Sélectionnez Ouvrir Liberty dans les résultats de la recherche.

  4. Sélectionnez Installer.

  5. Dans la page Install Operator, case activée v1.2 for Update channel, All namespaces on the cluster (default) for Installation mode, and Automatic for Update approval :

    Capture d’écran de la création d’un abonnement opérateur pour Open Liberty Operator.

  6. Sélectionnez Installer et attendez une minute ou deux que l’installation soit terminée.

  7. Notez que l’opérateur Open Liberty est correctement installé et prêt à être utilisé. Si ce n’est pas le cas, diagnostiquez et résolvez le problème avant de continuer.

    Opérateurs installés montrant qu’Open Liberty est installé.

Créer un espace de noms OpenShift pour l’application Java

Procédez comme suit pour créer un espace de noms OpenShift à utiliser avec votre application :

  1. Assurez-vous que vous êtes connecté à la console web OpenShift à partir de votre navigateur en utilisant les informations d’identification kubeadmin.

  2. Accédez à Administration>Espaces de noms>Créer un espace de noms.

  3. Renseignez open-liberty-demo pour le nom et sélectionnez Créer, comme indiqué ci-dessous.

    Capture d’écran de la création d’un espace de noms.

Créer une base de données Azure pour MySQL

Procédez comme suit pour configurer une Azure Database pour MySQL à utiliser avec votre application. Si votre application ne requiert pas de base de données, vous pouvez ignorer cette section.

  1. Créez un serveur flexible Azure Database pour MySQL en suivant les étapes de démarrage rapide : Utilisez le Portail Azure pour créer un Azure Database pour MySQL - Serveur flexible. Revenez à ce document après avoir créé la base de données.

    Remarque

    À l’étape De base, notez les valeurs nom du serveur.mysql.database.azure.com, Administration nom d’utilisateur et mot de passe.

  2. Une fois votre base de données créée, ouvrez votre mise en réseau de base de données>.

    1. Sous Accès public, vérifiez que l’autorisation d’accès public à cette ressource via Internet à l’aide d’une adresse IP publique est sélectionnée.
    2. Sélectionnez Autoriser l’accès public à partir de n’importe quel service Azure dans Azure sur ce serveur.
    3. Vérifiez que votre adresse IPv4 cliente se trouve dans la liste verte des règles de pare-feu.

    Capture d’écran de la configuration de la mise en réseau de base de données mysql.

  3. Ouvrez votre base de données> Connecter> Sélectionnez Connecter à partir de votre application>JDBC. Notez le numéro de port suivant l’adresse du serveur de base de données. Par exemple, 3306 est le numéro de port dans l’exemple suivant.

    String url="jdbc:mysql://<Server name>.mysql.database.azure.com:3306/{your_database}?useSSL=true";myDbConn=DriverManager.getConnection(url, "<Server admin username>", "{your_password}");
    
  4. Ouvrez vos bases de données de base de> données>, sélectionnez Ajouter. Renseignez une valeur pour Name et sélectionnez Enregistrer pour créer une base de données. Cette base de données a le type Schéma en tant qu’utilisateur et est utilisée pour l’application ultérieurement.

    Remarque

    Notez le nom de la base de données que vous avez créée.

Préparer l’application Liberty

Nous utilisons une application Java EE 8 comme exemple dans ce guide. Open Liberty est un serveur compatible avec le profil complet Java EE 8, de sorte qu’il peut facilement exécuter l’application. Open Liberty est également compatible avec le profil complet Jakarta EE 8.

Exécuter l’application sur Open Liberty

Pour exécuter l’application sur Open Liberty, vous devez créer un fichier config de serveur Open Liberty pour que le plug-in Liberty Maven puisse empaqueter l’application pour le déploiement. Le plug-in Liberty Maven n’est pas nécessaire pour déployer l’application sur OpenShift. Toutefois, nous l’utilisons dans cet exemple avec le mode développeur (dev) d’Open Liberty. Le mode développeur vous permet d’exécuter facilement l’application localement. Pour en savoir plus sur le liberty-maven-plugin, consultez Building a web application with Maven.

Suivez les étapes de cette section pour préparer l’exemple d’application en vue d’une utilisation ultérieure dans cet article. Ces étapes utilisent Maven et le liberty-maven-plugin.

Extraire l’application

Clonez l’exemple de code de ce guide. L’exemple se trouve sur GitHub.

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
git checkout 20231026

Si un message vous signale que vous allez passer à l’état « detached HEAD », vous pouvez ignorer ce message sans risque. Il signifie simplement que vous avez extrait une étiquette.

Il existe quelques exemples dans le référentiel. Nous utilisons open-liberty-on-aro/3-integration/connect-db/mysql. Voici la structure des fichiers de l’application :

open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml

Les répertoires java, resources et webapp contiennent le code source de l’exemple d’application. Le code déclare et utilise une source de données nommée jdbc/JavaEECafeDB.

Dans le répertoire aro, nous avons placé deux fichiers de déploiement. db-secret.xml est utilisé pour créer des secrets avec les informations d’identification de connexion de la base de données. Le fichier openlibertyapplication.yaml est utilisé pour déployer l’image de l’application.

Dans le répertoire racine, nous avons placé deux fichiers Dockerfiles. Dockerfile et Dockerfile-wlp sont utilisés pour le débogage local et pour générer l’image pour un déploiement Azure Red Hat OpenShift, en travaillant respectivement avec Open Liberty et WebSphere Liberty.

Dans le répertoire liberty/config, le fichier server.xml est utilisé pour configurer la connexion de base de données pour le cluster Open Liberty et WebSphere Liberty.

Génération du projet

Maintenant que vous avez rassemblé les propriétés nécessaires, vous pouvez générer l’application. La fichier POM du projet lit de nombreuses propriétés de l’environnement.

cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=<Server name>.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=<Database name>
export DB_USER=<Server admin username>
export DB_PASSWORD=<Server admin password>
export NAMESPACE=open-liberty-demo

mvn clean install

Tester votre application localement

Utilisez la commande liberty:devc pour exécuter et tester le projet localement avant de vous attaquer à la complexité d’Azure. Pour plus d’informations sur liberty:devc, consultez la documentation du plug-in Liberty.

  1. Démarrez votre environnement Docker local si vous ne l’avez pas encore fait. Les instructions relatives à cette opération varient selon le système d’exploitation hôte.

  2. Démarrez l’application en mode liberty:devc.

    cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql
    
    # If you are running with Open Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile
    
    # If you are running with WebSphere Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
    
  3. Vérifiez que l’application fonctionne comme prévu. Vous devriez voir un message similaire à [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. dans la sortie de la commande en cas de réussite. Rendez-vous à l’adresse https://localhost:9443/ dans votre navigateur et vérifiez que l’application est accessible et que toutes les fonctions fonctionnent.

  4. Appuyez sur Ctrl+C pour arrêter liberty:devc le mode.

Préparer l’image de l’application

Pour déployer et exécuter votre application Liberty sur un cluster Azure Red Hat OpenShift 4, conteneurisez votre application en tant qu’image Docker à l’aide d’images conteneur Open Liberty ou d’images conteneur WebSphere Liberty.

Procédez comme suit pour générer l’image de l’application :

Générer l’application et effectuer un push dans le flux d’image

Étant donné que vous avez déjà exécuté l’application dans le conteneur Liberty Docker, vous allez générer l’image à distance sur le cluster en exécutant les commandes suivantes.

  1. Vérifiez que vous êtes déjà connecté à l’interface de ligne de commande OpenShift à l’aide des informations d’identification kubeadmin.

  2. Identifiez le répertoire source et Dockerfile.

    cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql
    
    # Fetch maven artifactId as image name, maven build version as image version
    export IMAGE_NAME=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec)
    export IMAGE_VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
    
    # If you are building with Open Liberty base image, the existing Dockerfile is ready for you
    
    # If you are building with WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-wlp Dockerfile
    
  3. Modifier le projet en « open-liberty-demo »

    oc project open-liberty-demo
    
  4. Créez un flux d’image.

    oc create imagestream ${IMAGE_NAME}
    
  5. Créez une configuration de build qui spécifie la balise de flux d’images de la sortie de build.

    oc new-build --name ${IMAGE_NAME}-config --binary --strategy docker --to ${IMAGE_NAME}:${IMAGE_VERSION}
    
  6. Démarrez la build pour charger le contenu local, le conteneur et la sortie dans la balise de flux d’image spécifiée avant.

    oc start-build ${IMAGE_NAME}-config --from-dir . --follow
    

Déployer une application sur le cluster Azure Red Hat OpenShift 4

Vous pouvez maintenant déployer l’exemple d’application Liberty sur le cluster Azure Red Hat OpenShift 4 que vous avez créé précédemment dans la section Prérequis.

Déployer l’application à partir de la console Web

Étant donné que nous utilisons l’opérateur Open Liberty pour gérer les applications Liberty, nous devons créer une instance de sa définition de ressource personnalisée, de type OpenLibertyApplication. L’opérateur s’occupe de tous les aspects de la gestion des ressources OpenShift requises pour le déploiement.

  1. Connectez-vous à la console web OpenShift à partir de votre navigateur en utilisant les informations d’identification de kubeadmin.

  2. Développez Accueil, sélectionnez Projets>open-liberty-demo.

  3. Accédez à Opérateurs>Opérateurs installés.

  4. Au milieu de la page, sélectionnez Open Liberty.

  5. Dans les API fournies, sélectionnez OpenLibertyApplication. La navigation dans les éléments de l’interface utilisateur reflète la hiérarchie réelle de confinement des technologies utilisées.

    Diagramme de l’endiguement Java d’Azure Red Hat OpenShift.

  6. Sélectionnez Créer OpenLibertyApplication.

  7. Sélectionnez l’affichage YAML pour Configurer via.

  8. Remplacez le yaml généré par le vôtre, qui se trouve dans <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  9. Sélectionnez Créer. Vous êtes retourné à la liste d’OpenLibertyApplications.

  10. Accédez à Workloads (Charges de travail)>Secrets.

  11. Sélectionnez Create (Créer)> From YAML (À partir de YAML).

  12. Remplacez le yaml généré par le vôtre, qui se trouve dans <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  13. Sélectionnez Créer. Vous êtes retourné à la page détails du secret.

  14. Accédez aux opérateurs installés>opérateurs>Open Liberty>OpenLibertyApplication.

  15. Sélectionnez javaee-cafe-mysql.

  16. Au milieu de la page, sélectionnez Ressources.

  17. Dans le tableau, sélectionnez le lien pour javaee-cafe-mysql avec le typeRoute (Itinéraire).

  18. Sur la page qui s’ouvre, sélectionnez le lien sous Emplacement.

Vous voyez la page d’accueil de l’application ouverte dans le navigateur.

Supprimer l’application à partir de la console Web

Lorsque vous en avez fini avec l’application, procédez comme suit pour supprimer l’application d’Open Shift.

  1. Dans le volet de navigation gauche, développez l’entrée pour Opérateurs.
  2. Sélectionnez Opérateurs installés.
  3. Sélectionnez Ouvrir la liberté.
  4. Au milieu de la page, sélectionnez OpenLibertyApplication.
  5. Pour javaee-café-mysql, sélectionnez les points de suspension verticaux (trois points verticaux), puis sélectionnez Supprimer OpenLibertyApplication.
  6. Sélectionnez Supprimer pour supprimer l’application.

Procédez comme suit pour supprimer le secret d’Open Shift.

  1. Accédez à Workloads (Charges de travail)>Secrets.
  2. Sélectionnez db-secret-mysql.
  3. Sélectionnez Actions>Supprimer le secret.
  4. Sélectionnez Supprimer pour supprimer le secret.

Nettoyer les ressources

Supprimez le cluster Azure Red Hat OpenShift en suivant les étapes décrites dans le tutoriel : Supprimer un cluster Azure Red Hat OpenShift 4

Étapes suivantes

Dans ce guide, vous avez appris à :

  • Préparer l’application Liberty
  • Générer l’image de l’application
  • Exécuter l’application conteneurisée sur un cluster Azure Red Hat OpenShift 4 à l’aide de l’interface utilisateur graphique et de l’interface cli

Vous pouvez en savoir plus sur les références utilisées dans ce guide :