Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Cet article montre comment :
az acr build
en utilisant des images conteneur Open Liberty ou WebSphere Liberty.L’Opérateur Open Liberty simplifie le déploiement et la gestion des applications s’exécutant sur des clusters Kubernetes. Avec l’opérateur Open Liberty ou WebSphere Liberty, vous pouvez également effectuer des opérations plus avancées, telles que la collecte des traces et des vidages.
Cet article utilise l’offre Place de marché Azure pour Open Liberty ou WebSphere Liberty pour accélérer votre parcours vers AKS. L’offre approvisionne automatiquement certaines ressources Azure, notamment :
Si vous préférez des instructions pas à pas manuelles pour exécuter Liberty sur AKS, consultez Déployer manuellement une application Java avec Open Liberty ou WebSphere Liberty sur un cluster Azure Kubernetes Service (AKS).
Cet article vous aide à accéder rapidement au déploiement. Avant d’aller en production, nous vous conseillons d’explorer la documentation IBM sur l’optimisation de 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 WebSphere sur des solutions Azure, répondez à cette courte enquête sur la migration WebSphere et incluez vos coordonnées. L’équipe de gestionnaires de programmes, d’architectes et d’ingénieurs vous contactera rapidement pour établir une collaboration.
az login
. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître d’autres options de connexion, consultez Se connecter à Azure avec Azure CLI.az version
pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade
. Cet article nécessite au moins la version 2.61.0 d’Azure CLI.Owner
ou aux rôles Contributor
et User Access Administrator
dans l’abonnement. Vous pouvez le vérifier en suivant les étapes décrites dans Lister les attributions de rôles pour un utilisateur ou un groupe.Les étapes suivantes vous guident pour créer un runtime Liberty sur AKS. Une fois ces étapes terminées, vous disposez d’une instance Container Registry et d’un cluster AKS pour déployer votre application conteneurisée.
Accédez au portail Azure. Dans la zone de recherche en haut de la page, entrez WebSphere Liberty/Open Liberty sur Kubernetes. Lorsque les suggestions s’affichent, sélectionnez celle qui correspond à la section Place de marché.
Si vous préférez, vous pouvez accéder directement à l’offre.
Sélectionnez Créer.
Dans le volet Informations de base :
ejb0913-java-liberty-project-rg
). Enregistrez à part le nom du groupe de ressources pour une utilisation ultérieure dans cet article.Cliquez sur Suivant. Dans le volet AKS, vous pouvez éventuellement sélectionner un cluster AKS existant et une instance Container Registry au lieu que le déploiement en créer des nouveaux. Cette sélection vous permet d’utiliser le modèle sidecar, comme indiqué dans le Centre des architectures Azure. Vous pouvez également ajuster les paramètres de la taille et du nombre des machines virtuelles dans le pool de nœuds AKS.
Pour les besoins de cet article, conservez simplement toutes les valeurs par défaut de ce volet.
Cliquez sur Suivant. Dans le volet Équilibrage de charge, en regard de Se connecter à Azure Application Gateway ?, sélectionnez Oui. Dans cette section; vous pouvez personnaliser les options de déploiement suivantes :
Pour Réseau virtuel et Sous-réseau, vous pouvez éventuellement personnaliser le réseau virtuel et le sous-réseau dans lesquels le déploiement place les ressources. Vous n’avez pas besoin de modifier les valeurs par défaut des valeurs restantes.
Pour Certificat TLS/SSL, vous pouvez fournir le certificat TLS/SSL à partir d’Azure Application Gateway. Laissez leurs valeurs par défaut pour générer un certificat auto-signé.
Ne passez pas en production avec un certificat auto-signé. Pour plus d’informations sur les certificats auto-signés, consultez Créer un certificat public auto-signé pour authentifier votre application.
Vous pouvez sélectionner Activer l’affinité basée sur les cookies, également appelées sessions permanentes. Cet article utilise des sessions persistantes. Veillez donc à sélectionner cette option.
Cliquez sur Suivant. Dans le volet Opérateur et application , cet article utilise toutes les valeurs par défaut. Toutefois, vous pouvez personnaliser les options de déploiement suivantes :
Sélectionnez Vérifier + créer pour valider vos options sélectionnées. Dans le volet Vérifier + créer, lorsque l’option Créer devient disponible après la validation, sélectionnez-la.
Le déploiement peut prendre jusqu’à 20 minutes. En attendant la fin du déploiement, vous pouvez suivre les étapes de la section Créer une instance de Azure SQL Database. Une fois la section terminée, revenez ici pour continuer.
Si vous avez quitté le volet Déploiement en cours, procédez comme suit pour y revenir. Si vous êtes toujours sur le volet qui indique Votre déploiement est terminé, accédez au groupe de ressources nouvellement créé et passez à la troisième étape.
Dans l’angle de n’importe quelle page du portail, sélectionnez le bouton du menu, puis Groupes de ressources.
Dans la zone avec le texte Filtrer pour n’importe quel champ, entrez les premiers caractères du groupe de ressources que vous avez créé précédemment. Si vous avez suivi la convention recommandée, entrez vos initiales, puis sélectionnez le groupe de ressources approprié.
Dans la liste des ressources du groupe de ressources, sélectionnez la ressource avec la valeur TypeRegistre de conteneurs.
Dans le volet de navigation gauche, sous Paramètres, sélectionnez Clés d’accès.
Enregistrez à part les valeurs pour Nom du registre et Serveur de connexion. Vous pouvez utiliser l’icône de copie en regard de chaque champ pour copier la valeur dans le presse-papiers système.
Notes
Cet article utilise la commande az acr build
pour générer et envoyer (push) l’image Docker au registre de conteneurs, sans utiliser les éléments username
et password
du registre de conteneurs. Il est toujours possible d’utiliser un nom d’utilisateur et un mot de passe avec docker login
et docker push
. 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.
Revenez au groupe de ressources dans lequel vous avez déployé les ressources.
Dans la section Paramètres, sélectionnez Déploiements.
Sélectionnez le déploiement qui se trouve tout en bas de la liste. La valeur Nom du déploiement correspondra à l’ID de l’éditeur de l’offre. Il contient la chaîne ibm
.
Dans le volet de navigation, sélectionnez Sorties.
En utilisant la même technique de copie que pour les valeurs précédentes, enregistrez à côté les valeurs des sorties suivantes :
cmdToConnectToCluster
appDeploymentTemplateYaml
si le déploiement n’inclut pas d’application. Autrement dit, vous avez sélectionné Aucun pour Déployer une application ? lorsque vous avez déployé l’offre de la place de marché. Dans cet article, Non a été sélectionné. Cependant, si vous avez sélectionné Oui, enregistrez à part la valeur de appDeploymentYaml
, qui inclut le déploiement de l’application.
Collez la valeur de appDeploymentTemplateYaml
ou de appDeploymentYaml
dans un shell Bash, puis exécutez la commande.
La sortie de cette commande est le YAML de déploiement de l’application. Recherchez le secret TLS d’entrée avec le mot clé secretName
, par exemple - secretName: secret785e2c
. Notez quelque part la valeur secretName
.
Exécutez les commandes suivantes pour définir les variables d’environnement que vous avez capturées dans les étapes précédentes. Ces variables d’environnement sont utilisées plus loin dans cet article.
export RESOURCE_GROUP_NAME=<your-resource-group-name>
export REGISTRY_NAME=<your-registry-nam-of-container-registry>
export LOGIN_SERVER=<your-login-server-of-container-registry>
export INGRESS_TLS_SECRET=<your-ingress-tls-secret-name>
Dans cette section, vous créez une base de données unique Azure SQL Database à utiliser avec votre application.
Définissez d’abord 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
Exécutez la commande suivante dans votre terminal pour créer une base de données unique dans Azure SQL Database et définir l’utilisateur actuellement connecté en tant qu’administrateur Microsoft Entra. Pour plus d’informations, consultez Démarrage rapide : 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, ajoutez l’adresse IP locale aux règles de pare-feu du serveur Azure SQL Database pour permettre à votre machine locale de se connecter à la base de données pour des tests locaux ultérieurs.
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
Notes
Cet article désactive l’authentification SQL pour illustrer les meilleures pratiques de sécurité. Microsoft Entra ID est utilisé pour authentifier la connexion au serveur. Si vous devez activer l’authentification SQL, consultez az sql server create
.
Dans cette section, vous créez une connexion de service entre le cluster AKS et la base de données Azure SQL en utilisant ID de charge de travail Microsoft Entra avec le connecteur de services. Cette connexion permet au cluster AKS d’accéder à la base de données Azure SQL sans utiliser l’authentification SQL.
Tout d’abord, accordez des autorisations à l’application Fournisseur de ressources du connecteur de services Azure sur la passerelle applicative déployée auparavant. Cette étape est nécessaire pour créer une connexion de service entre le cluster AKS et la base de données Azure SQL.
Exécutez ensuite les commandes suivantes pour créer une connexion entre le cluster AKS et la base de données SQL en utilisant ID de charge de travail Microsoft Entra avec le connecteur de services. Pour plus d’informations, consultez Créer une connexion de service dans AKS avec le connecteur de services (préversion).
# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
# Install the Service Connector passwordless extension
az extension add --name serviceconnector-passwordless
# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--query id \
--output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
--resource-group $RESOURCE_GROUP_NAME \
--name $SQL_SERVER_NAME \
--query id \
--output tsv)
# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME}
# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name ${USER_ASSIGNED_IDENTITY_NAME} \
--query id \
--output tsv)
# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
--connection akssqlconn \
--client-type java \
--source-id $AKS_CLUSTER_RESOURCE_ID \
--target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
--workload-identity $UAMI_RESOURCE_ID
Notes
Nous vous recommandons d’utiliser ID de charge de travail Microsoft Entra pour sécuriser l’accès à votre base de données Azure SQL sans utiliser l’authentification SQL. Si vous devez utiliser l’authentification SQL, ignorez les étapes précédentes de cette section, et utilisez le nom d’utilisateur et le mot de passe pour vous connecter à la base de données Azure SQL.
Pour vous authentifier auprès de la base de données Azure SQL, vous devez obtenir le compte de service et le secret créés par le connecteur de services. Suivez les instructions de la section Mettre à jour votre conteneur du Tutoriel : Connecter une application AKS à Azure SQL Database. Utilisez l’option Créer directement un déploiement en utilisant l’exemple d’extrait de code YAML fourni, puis procédez comme suit :
Dans les sections mises en évidence de l’exemple YAML de déploiement Kubernetes, copiez les valeurs serviceAccountName
et secretRef.name
, comme illustré dans l’exemple suivant :
serviceAccountName: <service-account-name>
containers:
- name: raw-linux
envFrom:
- secretRef:
name: <secret-name>
Utilisez les commandes suivantes pour définir des variables d’environnement. Remplacez <service-account-name>
et <secret-name>
par les valeurs que vous avez copiées à l’étape précédente.
export SERVICE_ACCOUNT_NAME=<service-account-name>
export SECRET_NAME=<secret-name>
Ces valeurs sont utilisées dans la section suivante pour déployer l’application Liberty sur le cluster AKS.
Notes
Le secret créé par le connecteur de services contient la AZURE_SQL_CONNECTIONSTRING
, qui est une chaîne de connexion sans mot de passe à la base de données Azure SQL. Pour plus d’informations, consultez l’exemple de valeur dans la section Authentification d’identité managée affectée par l’utilisateur de Intégrer Azure SQL Database au connecteur de services.
Maintenant que vous avez configuré la base de données et le cluster AKS, vous pouvez procéder à la préparation d’AKS pour héberger votre application Open Liberty.
Suivez les étapes de cette section pour déployer l’exemple d’application sur le runtime Liberty. Ces étapes utilisent Maven.
Clonez l’exemple de code de cet article. L’exemple se trouve sur GitHub.
Il existe quelques exemples dans le référentiel. Cet article utilise java-app. Exécutez les commandes suivantes pour obtenir cet exemple :
git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20241107
Si vous voyez un message sur l’état « HEAD détaché », vous pouvez l’ignorer en toute sécurité. Le message signifie simplement que vous avez extrait une balise.
Voici la structure de fichiers de l’application, avec des fichiers et des répertoires importants :
java-app
├─ src/main/
│ ├─ aks/
│ │ ├─ openlibertyapplication-agic-passwordless-db.yaml
│ ├─ docker/
│ │ ├─ Dockerfile
│ │ ├─ Dockerfile-wlp
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ 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 aks, le fichier openlibertyapplication-agic-passwordless-db.yaml est utilisé pour déployer l’image de l’application avec une connexion AGIC et sans mot de passe à la base de données Azure SQL. Cet article suppose que vous utilisez ce fichier.
Dans le répertoire docker, il y a deux fichiers pour créer l’image de l’application avec Open Liberty ou 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. Il définit une variable azure.sql.connectionstring
qui est utilisée pour se connecter à la base de données Azure SQL.
Le fichier pom.xml est le fichier POM (Project Object Model) Maven qui contient les informations de configuration du projet. Le fichier pom-azure-identity.xml déclare une dépendance de azure-identity
. Ce fichier est utilisé pour s’authentifier auprès de services Azure en utilisant Microsoft Entra ID.
Notes
Cet exemple utilise la bibliothèque azure-identity
pour s’authentifier auprès d’Azure SQL Database en utilisant l’authentification Microsoft Entra. Si vous devez utiliser l’authentification SQL dans votre application Liberty, consultez Connexions de base de données relationnelle avec JDBC.
Maintenant que vous avez rassemblé les propriétés nécessaires, générez l’application. Le fichier POM du projet lit de nombreuses variables de l’environnement. Dans le cadre de la génération Maven, ces variables sont utilisées pour remplir des valeurs dans les fichiers YAML situés dans src/main/aks. Vous pouvez faire pareil pour votre application en dehors de Maven si vous préférez.
cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
export INGRESS_TLS_SECRET=${INGRESS_TLS_SECRET}
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
Exécutez et testez le projet localement avant de le déployer sur Azure. Pour que ce soit plus pratique, cet article utilise liberty-maven-plugin
. Pour en savoir plus sur liberty-maven-plugin
, consultez l’article Open Liberty Création d’une application web avec Maven.
Notes
Si vous avez sélectionné un déploiement de base de données « serverless », vérifiez que votre base de données SQL n’est pas en mode pause. Une façon de le faire est de se connecter à l’éditeur de requêtes de base de données, comme décrit dans la section Prise en main rapide : Utiliser l’éditeur de requêtes du portail Azure (aperçu) 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 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:run
Vérifiez que l’application fonctionne comme prévu. Vous devez normalement voir un message similaire à [INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 18.235 seconds.
dans la sortie de la commande. Rendez-vous à l’adresse http://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. Appuyez sur Y si vous êtes invité à arrêter la tâche de traitement par lots.
Quand vous avez terminé, supprimez la règle de pare-feu qui permet à votre adresse IP locale d’accéder à la base de données Azure SQL en utilisant la commande suivante :
az sql server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--server $SQL_SERVER_NAME \
--name AllowLocalIP
Vous pouvez maintenant exécuter la commande az acr build
pour construire l’image, comme illustré dans l’exemple suivant :
cd $BASE_DIR/java-app/target
az acr build \
--registry ${REGISTRY_NAME} \
--image javaee-cafe:v1 \
.
La commande az acr build
charge les artefacts spécifiés dans le fichier Dockerfile dans l’instance Container Registry, génère l’image et la stocke dans l’instance Container Registry.
Procédez comme suit pour déployer l’application Liberty sur le cluster AKS :
Connectez-vous au cluster AKS.
Collez la valeur de cmdToConnectToCluster
dans un interpréteur de commandes et exécutez la commande.
Appliquez le fichier de déploiement en exécutant la commande suivante :
cd $BASE_DIR/java-app/target
# Apply deployment file
kubectl apply -f openlibertyapplication-agic-passwordless-db.yaml
Attendez que tous les pods soient redémarrés correctement à l’aide de la commande suivante :
kubectl get pods --watch
Une sortie similaire à l’exemple suivant indique que tous les pods sont en cours d’exécution :
NAME READY STATUS RESTARTS AGE
javaee-cafe-cluster-agic-67cdc95bc-2j2gr 1/1 Running 0 29s
javaee-cafe-cluster-agic-67cdc95bc-fgtt8 1/1 Running 0 29s
javaee-cafe-cluster-agic-67cdc95bc-h47qm 1/1 Running 0 29s
Quand les pods sont en cours d’exécution, vous pouvez tester l’application en utilisant l’adresse IP publique de l’instance Application Gateway.
Exécutez la commande suivante pour obtenir et afficher l’adresse IP publique de l’instance Application Gateway, exposée par la ressource d’entrée créée par AGIC :
export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
echo $APP_URL
Copiez l’URL et ouvrez-la dans votre navigateur pour afficher la page d’accueil de l’application. Si la page web ne s’affiche pas correctement ou renvoie une erreur 502 Bad Gateway
, l’application démarre toujours en arrière-plan. Patientez quelques minutes et réessayez.
Pour éviter des frais Azure, vous devez nettoyer les ressources non nécessaires. Quand vous n’avez plus besoin du cluster, utilisez la commande az group delete
pour supprimer le groupe de ressources, le service conteneur, le registre de conteneurs, la base de données et toutes les ressources associées :
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Pour plus d’informations, consultez les références suivantes :
Pour plus d’informations sur le déploiement de la famille IBM WebSphere sur Azure, consultez Quelles sont les solutions pour exécuter la famille de produits WebSphere sur Azure ?.
Commentaires sur Azure Kubernetes Service
Azure Kubernetes Service est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Déployer une application Quarkus sur Azure Container Apps - Training
Créez une application Quarkus, connectez-la à une base de données PostgreSQL, puis déployez-la sur Azure Container Apps.
Certification
Microsoft Certified : Azure Database Administrator Associate - Certifications
Administrer une infrastructure de base de données SQL Server pour les bases de données relationnelles cloud, locales et hybrides à l’aide des offres de bases de données relationnelles Microsoft PaaS.