Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment exécuter Open Liberty sur Azure Container Apps. Vous effectuez les activités suivantes dans cet article :
- Exécutez votre application Java, Java Enterprise Edition (EE), Jakarta EE ou MicroProfile sur le runtime Open Liberty.
- Construire l’image Docker de l’application en utilisant les images de conteneur Liberty.
- Déployer l’application conteneurisée sur Azure Container Apps.
Pour plus d’informations concernant Open Liberty, consultez la page de projet Open Liberty. Cet article vous aide à accéder rapidement au déploiement. Avant de passer en production, vous devez explorer Tuning Liberty.
Si vous souhaitez fournir des commentaires ou travailler étroitement sur vos scénarios de migration avec l’équipe d’ingénierie qui développe Java sur les solutions Azure, renseignez cette courte enquête sur la migration Azure et incluez vos coordonnées. L’équipe de gestionnaires de programmes, d’architectes et d’ingénieurs vous contactera rapidement pour lancer une collaboration étroite.
Prérequis
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Préparez une machine locale avec un système d’exploitation Windows ou de type Unix installé - par exemple, Ubuntu, macOS, ou Windows Subsystem for Linux.
-
Installez l’interface de ligne de commande Azure (Azure CLI) version 2.62.0 ou une version supérieure pour exécuter les commandes Azure CLI.
- Si vous y êtes invité, installez l’extension Azure CLI à la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
- Exécutez
az versionpour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutezaz upgrade.
- Installez une implémentation Java Standard Edition (SE) version 17, par exemple la version de Microsoft d’OpenJDK.
- Installez Maven 3.9.8 ou une version ultérieure.
- Vérifiez que Git est installé.
Connexion à Azure
Connectez-vous à votre abonnement Azure à l’aide de la commande az login et suivez les instructions à l’écran.
az login
Remarque
Vous pouvez exécuter la plupart des commandes Azure CLI dans PowerShell de la même manière que dans Bash. La différence n’existe que lors de l’utilisation de variables. Dans les sections suivantes, la différence est abordée dans différents onglets si nécessaire.
Si plusieurs locataires Azure sont associés à vos informations d’identification Azure, vous devez spécifier le locataire auquel vous souhaitez vous connecter. Vous pouvez spécifier le locataire à l’aide de l’option --tenant , par exemple, az login --tenant contoso.onmicrosoft.com.
Si vous avez plusieurs abonnements au sein d’un seul locataire, vérifiez que vous êtes connecté avec celui que vous envisagez d’utiliser à l’aide de az account set --subscription <subscription-id>.
Créer un groupe de ressources
Un groupe de ressources Azure est un groupe logique dans lequel des ressources Azure sont déployées et gérées.
Créez un groupe de ressources appelé java-liberty-project à l’aide de la commande az group create à l’emplacement eastus2. Ce groupe de ressources sera utilisé plus tard pour créer l’instance Azure Container Registry (ACR) et l’instance Azure Container Apps.
export RESOURCE_GROUP_NAME=java-liberty-project
export LOCATION=eastus2
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Créer une instance ACR
Utilisez la commande az acr create pour créer l’instance ACR. L’exemple suivant crée une instance ACR nommée youruniqueacrname. Assurez-vous que youruniqueacrname est unique dans Azure.
Remarque
Cet article utilise le mécanisme d’authentification sans mot de passe recommandé pour Container Registry. Il est toujours possible d’utiliser un nom d’utilisateur et un mot de passe avec docker login après avoir utilisé az acr credential show pour obtenir le nom d’utilisateur et le mot de passe. L’utilisation d’un nom d’utilisateur et d’un mot de passe est moins sécurisée que l’authentification sans mot de passe.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic
Après un court instant, vous devriez voir une sortie JSON contenant les lignes suivantes :
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Ensuite, utilisez la commande suivante pour récupérer le serveur de connexion pour l’instance Container Registry. Vous aurez besoin de cette valeur lors du déploiement de l’image de l’application dans Azure Container Apps plus tard.
export ACR_LOGIN_SERVER=$(az acr show \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
Créer un environnement
Un environnement dans Azure Container Apps crée une limite sécurisée autour d’un groupe d’applications de conteneur. Les applications de conteneur déployées dans le même environnement sont déployées dans le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics. Utilisez la commande az containerapp env create pour créer un environnement. L’exemple suivant crée un environnement nommé youracaenvname :
export ACA_ENV=youracaenvname
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Si on vous demande d’installer une extension, répondez Y.
Après un court instant, vous devriez voir une sortie JSON contenant les lignes suivantes :
"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",
Créer une base de données unique dans Azure SQL Database
Dans cette section, vous allez créer une base de données unique dans Azure SQL Database, à utiliser avec votre application.
Tout d’abord, utilisez les commandes suivantes pour définir les variables d’environnement liées à la base de données. Remplacez <your-unique-sql-server-name> par un nom unique pour votre serveur Azure SQL Database.
export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb
Ensuite, utilisez les commandes suivantes pour créer une base de données unique dans Azure SQL Database et définir l’utilisateur actuellement connecté comme administrateur Microsoft Entra. Pour plus d’informations, consultez la section Prise en main : Créer une base de données unique - Azure SQL Database.
export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)
az sql server create \
--name $SQL_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $ENTRA_ADMIN_NAME \
--external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name $DB_NAME \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Ensuite, utilisez les commandes suivantes pour ajouter l’adresse IP locale aux règles de pare-feu du serveur Azure SQL Database pour permettre à votre ordinateur local de se connecter à la base de données pour les tests locaux ultérieurement.
export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS
Remarque
Vous créez un serveur Azure SQL avec l’authentification SQL désactivée pour des raisons de sécurité. Seul Microsoft Entra ID est utilisé pour s’authentifier au serveur. Si vous devez activer l’authentification SQL, consultez az sql server create.
Configurer et générer l’image de l’application
Pour déployer et exécuter votre application Liberty sur Azure Container Apps, conteneurisez-la en tant qu’image Docker à l’aide d’images conteneur Open Liberty.
Suivez les étapes de cette section pour déployer l’exemple d’application sur le runtime Liberty. Ces étapes utilisent Maven.
Découvrez l’application
Utilisez les commandes suivantes pour préparer le code d’exemple pour ce guide. L’exemple se trouve sur GitHub.
git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
export BASE_DIR=$PWD
git checkout 20250327
Si vous voyez un message sur l’état detached HEAD, vous pouvez l'ignorer en toute sécurité. Cela signifie simplement que vous avez consulté une étiquette.
Cet article utilise l'application Java . Voici la structure de fichiers des fichiers importants de l’application :
java-app
├─ src/main/
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ pom.xml
├─ pom-azure-identity.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 racine java-app , un fichier Dockerfile permet de créer l’image de l’application avec Open Liberty.
Dans le répertoire liberty/config , le fichier server.xml est utilisé pour configurer la connexion de base de données pour Open Liberty. Elle définit une variable azure.sql.connectionstring utilisée pour se connecter à Azure SQL Database.
Le fichier pom.xml est le fichier modèle d’objet projet Maven (POM) contenant les informations de configuration du projet. Le fichier pom-azure-identity.xml déclare la dépendance azure-identity, utilisée pour s’authentifier auprès des services Azure à l’aide de l’ID Microsoft Entra.
Remarque
Cet exemple utilise la bibliothèque azure-identity pour s’authentifier à Azure SQL Database à l’aide de l’authentification Microsoft Entra, qui est recommandée pour des raisons de sécurité. Si vous devez utiliser l’authentification SQL dans votre application Liberty, consultez la section Connexions aux bases de données relationnelles avec JDBC.
Compiler le projet
Utilisez les commandes suivantes pour générer l’application :
cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Si la construction est réussie, vous devriez voir un résultat similaire à ce qui suit à la fin de votre construction.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------
Dans le cas contraire, dépannez et résolvez le problème avant de poursuivre.
Tester votre projet localement
Vous pouvez maintenant utiliser les étapes suivantes pour exécuter et tester le projet localement avant de le déployer sur Azure. Pour plus de commodité, utilisez le liberty-maven-plugin. Pour en savoir plus sur le liberty-maven-plugin, consultez Building a web application with Maven. Pour votre application, vous pouvez faire pareil en utilisant un autre mécanisme, comme votre IDE local.
Remarque
Si vous avez sélectionné un déploiement de base de données « serverless », vérifiez que votre base de données SQL n’a pas entré en mode pause. Une façon d’effectuer la vérification consiste à se connecter à l’éditeur de requête de base de données comme décrit dans Démarrage rapide : Utiliser l’éditeur de requête du portail Azure (préversion) pour interroger Azure SQL Database.
Démarrez l’application à l’aide de
liberty:run.cd $BASE_DIR/java-app # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by the configuration variable azure.sql.connectionstring in server.xml. export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault" mvn liberty:runVérifiez que l’application fonctionne comme prévu. En cas de succès, vous devriez voir un message similaire à
[INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds.dans la sortie de la commande. Rendez-vous à l’adressehttp://localhost:9080/dans votre navigateur et vérifiez que l’application est accessible et que toutes les fonctions fonctionnent.Appuyez sur Ctrl+C pour arrêter. Sélectionnez Y si on vous demande d'arrêter la tâche par lots.
Une fois terminé, supprimez la règle de pare-feu qui autorise votre adresse IP locale à accéder à Azure SQL Database en utilisant la commande suivante :
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Générez l’image pour le déploiement Azure Container Apps.
Vous pouvez maintenant exécuter la commande az acr build pour générer l’image, comme illustré dans l’exemple suivant :
cd $BASE_DIR/java-app
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
La commande az acr build télécharge les artefacts spécifiés dans le fichier Dockerfile vers l’instance Container Registry, génère l’image et la stocke dans l’instance Container Registry.
Déployer l’application sur Azure Container Apps
Utilisez les commandes suivantes pour créer une instance Azure Container Apps afin d’exécuter l’application après avoir tiré l’image de l’ACR. Cet exemple crée une instance Azure Container Apps nommée youracainstancename:
export ACA_NAME=youracainstancename
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
--environment $ACA_ENV \
--registry-server $ACR_LOGIN_SERVER \
--registry-identity system \
--target-port 9080 \
--ingress 'external' \
--min-replicas 1
Une sortie réussie est un objet JSON incluant la propriété "type": "Microsoft.App/containerApps".
Connectez ensuite le serveur Azure SQL Database à l’application conteneurisée à l’aide de Service Connector en respectant les étapes suivantes :
- Ouvrez le portail Azure dans votre navigateur et accédez à l’instance Azure Container Apps que vous avez créée à l’étape précédente.
- Dans le volet de navigation, sélectionnez Paramètres>Service Connector (préversion).
- Sélectionnez Créer. Vous devez voir la fenêtre contextuelle Créer une connexion.
- Dans le volet De base , pour le type de service, sélectionnez SQL Database. Pour le type de client, sélectionnez Java. Laissez d’autres champs à leurs valeurs par défaut, puis sélectionnez Suivant : Authentification.
- Dans le volet Authentification, pour le type d’authentification, sélectionnez Identité managée affectée par le système, puis Sélectionnez Suivant : Mise en réseau.
- Dans le volet Mise en réseau , sélectionnez Suivant : Vérifier + créer.
- Dans le volet Vérifier + créer , attendez que la validation réussisse, puis sélectionnez Créer sur Cloud Shell. Cloud Shell s’ouvre, puis exécute les commandes pour créer la connexion. Attendez que les commandes se terminent, puis fermez Cloud Shell.
Remarque
Le Service Connector crée un secret dans l’application conteneurisée contenant la valeur pour AZURE_SQL_CONNECTIONSTRING, qui est une chaîne de connexion sans mot de passe à Azure SQL Database. Pour plus d'informations, consultez l'exemple de valeur de la section Identité gérée attribuée à l'utilisateur de la rubrique Intégrer Azure SQL Database avec Service Connector.
Test de l’application
Utilisez la commande suivante pour obtenir une URL entièrement qualifiée pour accéder à l’application :
echo https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Pour accéder à l’application et le tester, ouvrez un navigateur web vers l’URL. La capture d’écran suivante montre l’application en cours d’exécution :
Nettoyer les ressources
Pour éviter des frais Azure, vous devez nettoyer les ressources non nécessaires. Lorsque le cluster n’est plus nécessaire, utilisez la commande az group delete pour supprimer le groupe de ressources, le registre de conteneurs, les applications conteneur, le serveur de base de données et toutes les ressources associées.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Étapes suivantes
Vous pouvez en apprendre davantage à partir des références utilisées dans ce guide :
- Azure Container Apps
- Intégrer Azure SQL Database avec Service Connector
- Connectez-vous en utilisant l’authentification Microsoft Entra
- Open Liberty
- Configuration du Serveur Open Liberty
- Maven Liberty Plugin
- Images du conteneur Liberty ouvert
Pour explorer les options d’exécution des produits WebSphere sur Azure, veuillez consulter la section Quelles sont les solutions pour exécuter la famille de produits WebSphere sur Azure ?