Déployer une application Java avec WebLogic Server sur un cluster Azure Kubernetes Service (AKS)
Cet article montre comment :
- Exécutez votre application Java sur Oracle WebLogic Server (WLS).
- Mettez en place un cluster WebLogic Server sur AKS en utilisant une offre de la Place de marché Azure.
- Générez une image Docker d’application qui inclut des modèles WDT (WebLogic Deploy Tooling).
- Déployez l’application conteneurisée sur le cluster WebLogic Server sur AKS avec une connexion à Microsoft Azure SQL.
Cet article utilise l’offre WebLogic Server de la Place de marché Azure afin d’accélérer votre parcours vers AKS. L'offre approvisionne automatiquement plusieurs ressources Azure, notamment les ressources suivantes :
- une instance Azure Container Registry
- Un cluster AKS
- une instance du contrôleur d'entrée Azure Application Gateway (AGIC)
- L’opérateur WebLogic Kubernetes
- une image conteneur comprenant le runtime WebLogic
- Un cluster WebLogic Server sans application
Ensuite, l’article présente la création d’une image pour mettre à jour le cluster WebLogic Server. L’image fournit l’application et des modèles WDT.
Si vous préférez une approche moins automatisée pour déployer WebLogic sur AKS, consultez l’aide pas à pas incluse dans la documentation officielle d’Oracle pour Azure Kubernetes Service.
Si vous souhaitez fournir des commentaires ou travailler vos scénarios de migration aux côtés de l’équipe d’ingénierie qui développe WebLogic sur des solutions AKS, répondez à cette courte enquête sur la migration WebLogic et indiquez 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
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
- Vérifiez que l’identité Azure que vous utilisez pour vous connecter et compléter cet article a le rôle Propriétaire dans l’abonnement actuel ou les rôles Contributeur et Administrateur de l’accès utilisateur dans l’abonnement actuel. Pour obtenir une vue d’ensemble des rôles Azure, consultez Qu’est-ce que le contrôle d’accès en fonction du rôle Azure (RBAC Azure) ? Pour plus d’informations sur les rôles spécifiques requis par WLS sur AKS, consultez Rôles intégrés Azure.
- Disposez des informations d’identification d’un compte d’authentification unique (SSO) Oracle. Pour en créer un, consultez la rubrique Créer votre compte Oracle.
- Acceptez les termes du contrat de licence de WebLogic Server.
- Accédez à Oracle Container Registry et connectez-vous.
- Si vous disposez d’un droit d’assistance, sélectionnez Intergiciel, puis recherchez et sélectionnez weblogic_cpu.
- Si vous disposez d’un droit d’utilisation support, sélectionnez Intergiciel, puis recherchez et sélectionnez weblogic_cpu.
- Acceptent le contrat de licence.
Remarque
Obtenez un droit d’utilisation support auprès d’Oracle avant de passer en production. Si vous ne le faites pas, vous risquez d’exploiter des images non sécurisées qui ne sont pas corrigées pour les failles de sécurité critiques. Pour plus d’informations sur les mises à jour de correctifs critiques d’Oracle, consultez Mises à jour de correctifs critiques, alertes et bulletins de sécurité d’Oracle.
- Préparez une machine locale avec un système d’exploitation de type Unix installé, par exemple Ubuntu, Azure Linux, macOS, Sous-système Windows pour Linux.
- Azure CLI. Utilisez
az --version
pour tester si az fonctionne. Ce document a été testé avec la version 2.55.1. - kubectl. Utilisez
kubectl version
pour tester si kubectl fonctionne. Ce document a été testé avec la version v1.21.2. - Un kit de développement Java (JDK). L’article vous dirige vers l’installation de la build Microsoft d’OpenJDK 11. Assurez-vous que la variable d'environnement
JAVA_HOME
est correctement définie dans les interpréteurs de commandes dans lesquels vous exécutez les commandes. - Maven 3.5.0 ou une version plus récente.
- Assurez-vous que l'utilitaire zip/unzip est installé. Utilisez
zip/unzip -v
pour vérifier sizip/unzip
fonctionne.
- Azure CLI. Utilisez
Créer une base de données Azure SQL
Cette section crée une base de données Azure SQL à l’aide de l’authentification Microsoft Entra, avec la connexion d’identité managée activée.
Créer un groupe de ressources
Créez un groupe de ressources avec la commande az group create. Étant donné que les groupes de ressources doivent être uniques au sein d’un abonnement, choisissez un nom unique. Un moyen simple d’avoir des noms uniques consiste à utiliser une combinaison de vos initiales, de la date d’aujourd’hui et de certains identificateurs. Par exemple : abc1228rg
. Cet exemple crée un groupe de ressources nommé abc1228rg
à l’emplacementeastus
:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
Créer un serveur de base de données et une base de données
Créez un serveur avec la commande az sql server create. Cet exemple crée un serveur nommé myazuresql20130213
avec l’utilisateur administrateur azureuser
et le mot de passe administrateur. Remplacez <your-password>
par votre mot de passe. Pour plus d’informations, consultez Démarrage rapide : Créer une base de données unique - Azure SQL Database.
Remarque
Même si vous utilisez un nom d’utilisateur et un mot de passe ici, ces informations d’identification ne sont pas exposées en dehors de la base de données. La connexion entre la couche application et la base de données est sécurisée avec des identités managées.
export AZURESQL_SERVER_NAME="myazuresql20130213"
export AZURESQL_ADMIN_USER="azureuser"
export AZURESQL_ADMIN_PASSWORD="<your-password>"
export DATABASE_NAME="mysingledatabase20230213"
az sql server create \
--resource-group $RESOURCE_GROUP_NAME \
--name $AZURESQL_SERVER_NAME \
--location westus \
--admin-user $AZURESQL_ADMIN_USER \
--admin-password $AZURESQL_ADMIN_PASSWORD
Créez une base de données à l’aide de la commande az sql db create au niveau de calcul serverless.
az sql db create \
--resource-group $RESOURCE_GROUP_NAME \
--server $AZURESQL_SERVER_NAME \
--name $DATABASE_NAME \
--sample-name AdventureWorksLT \
--edition GeneralPurpose \
--compute-model Serverless \
--family Gen5 \
--capacity 2
Configurer un administrateur Microsoft Entra
Pour des informations sur la façon dont Azure SQL Server interagit avec les identités managées, consultez Se connecter en utilisant l’authentification Microsoft Entra.
Procédez comme suit pour configurer un compte d’administrateur Microsoft Entra sur Azure SQL Server à partir du portail Microsoft Azure :
- Dans le portail Azure, ouvrez l’instance de serveur Azure SQL
myazuresql20130213
. - Sélectionnez Paramètres, puis sélectionnez Microsoft Entra ID. Sur la page Microsoft Entra ID, sélectionnez Définir admin.
- Sur la page Ajouter admin, recherchez un utilisateur, sélectionnez l’utilisateur ou le groupe à définir comme administrateur, puis sélectionnez Sélectionner.
- En haut de la page Microsoft Entra ID, sélectionnez Enregistrer. Pour les utilisateurs et groupes Microsoft Entra, l’ID d’objet s’affiche à côté du nom d’administrateur.
- La procédure de changement de l’administrateur peut prendre plusieurs minutes. Ensuite, le nouvel administrateur apparaît dans la boîte Microsoft Entra ID.
Créer une identité managée attribuée par l’utilisateur
Ensuite, dans Azure CLI, créez une identité dans votre abonnement en utilisant la commande az identity create. Vous utilisez cette identité managée pour vous connecter à votre base de données.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Créer un utilisateur de base de données pour votre identité managée
Maintenant, connectez-vous en tant qu’utilisateur administrateur Microsoft Entra à votre base de données Azure SQL depuis le portail Azure et créez un utilisateur pour votre identité managée.
Tout d’abord, créez une règle de pare-feu pour accéder au serveur Azure SQL depuis le portail, comme indiqué dans les étapes suivantes :
- Dans le portail Azure, ouvrez l’instance de serveur Azure SQL
myazuresql20130213
. - Sélectionnez Sécurité, puis sélectionnez Réseau.
- Sous Règles de pare-feu, sélectionnez Ajouter votre adresse IP client IPv4.
- Sous Exceptions, sélectionnez Autoriser les services et ressources Azure à accéder à ce serveur.
- Cliquez sur Enregistrer.
Une fois la règle de pare-feu créée, vous pouvez accéder au serveur Azure SQL depuis le portail. Utilisez les étapes suivantes pour créer un utilisateur de base de données :
Sélectionnez Paramètres, puis sélectionnez Bases de données SQL. Sélectionnez
mysingledatabase20230213
.Sélectionnez Éditeur de requêtes. Sur la page Bienvenue dans l’éditeur de requêtes SQL Database, sous Authentification Active Directory, vous trouverez un message du type
Logged in as user@contoso.com
.Sélectionnez Continuer en tant que user@contoso.com, où
user
est le nom de votre compte admin AD.Après vous être connecté, dans l’éditeur Requête 1, exécutez les commandes suivantes pour créer un utilisateur de base de données pour l’identité managée
myManagedIdentity
.CREATE USER "myManagedIdentity" FROM EXTERNAL PROVIDER ALTER ROLE db_datareader ADD MEMBER "myManagedIdentity"; ALTER ROLE db_datawriter ADD MEMBER "myManagedIdentity"; ALTER ROLE db_ddladmin ADD MEMBER "myManagedIdentity"; GO
Dans l’éditeur Requête 1, sélectionnez Exécuter pour exécuter les commandes SQL.
Si les commandes s’exécutent correctement, vous pouvez trouver un message indiquant
Query succeeded: Affected rows: 0
.
Utilisez la commande suivante pour obtenir la chaîne de connexion que vous utiliserez dans la section suivante :
export CONNECTION_STRING="jdbc:sqlserver://${AZURESQL_SERVER_NAME}.database.windows.net:1433;database=${DATABASE_NAME};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
echo ${CONNECTION_STRING}
Créer un schéma pour l’application modèle
Sélectionnez Nouvelle requête, puis, dans l’éditeur de requête, exécutez la requête suivante :
CREATE TABLE COFFEE (ID NUMERIC(19) NOT NULL, NAME VARCHAR(255) NULL, PRICE FLOAT(32) NULL, PRIMARY KEY (ID));
CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT NUMERIC(28) NULL, PRIMARY KEY (SEQ_NAME));
INSERT INTO SEQUENCE VALUES ('SEQ_GEN',0);
Après une exécution réussie, vous devez voir le message Requête réussie : Lignes affectées : 1. Dans le cas contraire, dépannez et résolvez le problème avant de poursuivre.
Vous pouvez continuer à déployer WLS sur l’offre AKS.
Déployer WebLogic Server sur AKS
Procédez comme suit pour rechercher l’offre WebLogic Server sur AKS et remplir le volet Informations de base :
Dans la barre de recherche située en haut du portail Azure, entrez weblogic. Dans les résultats de la recherche suggérée automatiquement, dans la section Place de marché, sélectionnez WebLogic Server sur AKS.
Vous pouvez également accéder directement à l'offre WebLogic Server sur AKS.
Sur la page de l’offre, sélectionnez Créer.
Dans le volet De base, assurez-vous que la valeur indiquée dans le champ Abonnement est la même que celle à laquelle vous vous êtes connecté dans Azure. Assurez-vous que vous disposez des rôles listés dans la section des prérequis pour l’abonnement.
Vous devez déployer l’offre dans un groupe de ressources vide. Dans le champ Groupe de ressources, sélectionnez Créer nouveau, puis indiquez une valeur pour le groupe de ressources. Étant donné que les groupes de ressources doivent être uniques au sein d’un abonnement, choisissez un nom unique. La solution la plus simple pour obtenir des noms uniques est d'utiliser une combinaison de vos initiales, de la date du jour et d'un identificateur, par exemple
ejb0723wls
.Sous Détails de l’instance, sélectionnez la région pour le déploiement. Pour obtenir la liste des régions Azure où AKS est disponible, consultez Disponibilité des régions AKS.
Sous Informations d’identification pour WebLogic, laissez la valeur par défaut pour Nom d’utilisateur pour l’administrateur WebLogic.
Renseignez
wlsAksCluster2022
pour le mot de passe de l’administrateur WebLogic. Utilisez la même valeur pour les champs Confirmation et Mot de passe pour le chiffrement du modèle WebLogic.Cliquez sur Suivant.
Utilisez les étapes suivantes pour démarrer le processus de déploiement :
Faites défiler jusqu’à la section intitulée Fournir un compte Oracle à authentification unique (SSO). Renseignez vos informations d’identification SSO Oracle à partir des conditions préalables.
Notez bien les étapes de la zone d’information commençant par Avant d’aller plus loin, vous devez accepter les conditions et restrictions standard d’Oracle.
Selon que le compte Oracle SSO dispose ou non d’un droit d’utilisation d’Oracle, sélectionnez l’option appropriée pour Sélectionnez le type des images WebLogic Server. Si le compte dispose d'un droit d'assistance, sélectionnez Patched WebLogic Server Images. A défaut, sélectionnez General WebLogic Server Images
Laissez la valeur dans Sélectionner la combinaison souhaitée de WebLogic Server... à sa valeur par défaut. Vous disposez d’un large éventail de choix pour WebLogic Server, JDK et la version du système d’exploitation.
Dans la section Application , près de Souhaitez-vous déployer une application ?, sélectionnez Non.
Les étapes suivantes permettent d’exposer la console d’administration WebLogic Server. De plus, l’exemple d’application est exposé à l’Internet public grâce au module complémentaire d’entrée Application Gateway. Pour plus d'informations, consultez Qu'est-ce que le contrôleur d'entrée Application Gateway ?
Sélectionnez Suivant pour afficher le volet TLS/SSL.
Sélectionnez Suivant pour afficher le volet Équilibrage de charge.
Près de Options d'équilibrage de charge, sélectionnez Contrôleur d'entrée Application Gateway.
Sous le Contrôleur d'entrée Application Gateway, vous constaterez que tous les champs sont préremplis avec les valeurs par défaut pour le réseau virtuel et le sous-réseau. Laissez les valeurs par défaut.
Pour Créer une entrée pour la console d'administration, sélectionnez Oui.
Sélectionnez Suivant pour afficher le volet DNS.
Sélectionnez Suivant pour afficher le volet Base de données.
Procédez comme suit pour configurer une connexion de base de données à l’aide d’une identité managée :
- Pour Se connecter à la base de données, sélectionnez Oui.
- Sous Paramètres de connexion, pour Choisir le type de base de données, ouvrez le menu déroulant puis sélectionnez Microsoft SQL Server (avec prise en charge de la connexion sans mot de passe).
- Pour le Nom JNDI, entrez jdbc/WebLogicCafeDB.
- Pour Chaîne de connexion DataSource, entrez la chaîne de connexion que vous avez obtenue dans la dernière section.
- Sélectionnez Utiliser la connexion à la source de données sans mot de passe.
- Pour Identité managée affectée par l’utilisateur, sélectionnez l’identité managée que vous avez créée à l’étape précédente. Dans cet exemple, son nom est
myManagedIdentity
. - Sélectionnez Ajouter.
La section Paramètres de connexion doit ressembler à la capture d’écran suivante :
Procédez comme suit pour terminer le déploiement.
- Sélectionnez Revoir + créer. Assurez-vous que la validation se déroule sans problème. En cas d'échec, corrigez les éventuels problèmes de validation, puis sélectionnez Réviser + Créer à nouveau.
- Sélectionnez Créer.
- Suivez la progression du déploiement sur la page Déploiement en cours.
En fonction des conditions du réseau et des autres activités dans la région sélectionnée, le déploiement peut prendre jusqu'à 50 minutes.
Remarque
Si votre organisation vous oblige à déployer la charge de travail au sein d’un réseau virtuel d’entreprise sans adresses IP publiques autorisées, vous pouvez choisir le service de l’équilibreur de charge interne. Pour configurer le service de l’équilibreur de charge interne, procédez comme suit dans l’onglet Équilibrage de charge :
Pour Options de l’équilibrage de charge, sélectionnez Service Standard Load Balancer.
Sélectionnez Utiliser un équilibreur de charge interne.
Ajoutez les lignes suivantes à la table :
Préfixe de nom de service Cible Port wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
L’onglet Équilibrage de charge doit ressembler à la capture d’écran suivante :
Après le déploiement, vous pouvez trouver les URL d’accès du serveur d’administration et du cluster à partir de la sortie, étiquetées adminConsoleExternalUrl et clusterExternalUrl.
Examiner la sortie du déploiement
Utilisez les étapes décrites dans cette section pour vérifier que le déploiement a réussi.
Si vous avez quitté la page Déploiement en cours, procédez comme suit pour y revenir. Si vous êtes toujours sur la page indiquant Votre déploiement est terminé, vous pouvez passer à l'étape 5 après la capture d'écran suivante.
Dans tous les angles de la page du portail Microsoft Azure, sélectionnez le menu hamburger et choisissez 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 le volet de navigation de gauche, section Paramètres, sélectionnez Déploiements. Une liste triée des déploiements effectués dans ce groupe de ressources s’affiche, avec le plus récent en premier.
Faites défiler la liste jusqu’à l’entrée la plus ancienne. Cette entrée correspond au déploiement que vous avez démarré dans la section précédente. Sélectionnez le déploiement le plus ancien, comme illustré dans la capture d’écran suivante.
Dans le volet de navigation, sélectionnez Sorties. La liste affiche les valeurs de sortie du déploiement. Des informations utiles sont incluses dans les sorties.
La valeur adminConsoleExternalUrl est le lien visible Internet public complet vers la console d’administration WebLogic Server pour ce cluster AKS. Sélectionnez l’icône de copie en regard de la valeur du champ pour copier le lien dans le presse-papiers. Enregistrez cette valeur pour plus tard.
La valeur clusterExternalUrl est le lien visible Internet public complet vers l’exemple d’application déployée dans WebLogic Server sur ce cluster AKS. Sélectionnez l’icône de copie en regard de la valeur du champ pour copier le lien dans le presse-papiers. Enregistrez cette valeur pour plus tard.
La valeur shellCmdtoOutputWlsImageModelYaml est la chaîne base64 du modèle WDT utilisé pour créer l’image conteneur. Enregistrez cette valeur pour plus tard.
La valeur shellCmdtoOutputWlsImageProperties est la chaîne base64 des propriétés du modèle WDT utilisé pour créer l’image conteneur. Enregistrez cette valeur pour plus tard.
La valeur shellCmdtoConnectAks est la commande Azure CLI permettant de se connecter à ce cluster AKS spécifique.
Les autres valeurs des sorties dépassent la portée de cet article, mais sont expliquées en détail dans le guide de l’utilisateur WebLogic sur AKS.
Configurer et déployer l’exemple d’application
L’offre fournit le cluster WebLogic Server via le modèle dans l’image. Actuellement, le cluster WebLogic Server n’a pas d’application déployée.
Cette section met à jour le cluster WebLogic Server en déployant un exemple d’application à l’aide de l’image auxiliaire.
Extraire l’application
Dans cette section, vous pouvez cloner l'exemple de code de ce guide. L'échantillon est sur GitHub dans le référentiel weblogic-on-azure dans le dossier javaee/weblogic-cafe/. Voici la structure des fichiers de l’application.
weblogic-cafe
├── pom.xml
└── src
└── main
├── java
│ └── cafe
│ ├── model
│ │ ├── CafeRepository.java
│ │ └── entity
│ │ └── Coffee.java
│ └── web
│ ├── rest
│ │ └── CafeResource.java
│ └── view
│ └── Cafe.java
├── resources
│ ├── META-INF
│ │ └── persistence.xml
│ └── cafe
│ └── web
│ ├── messages.properties
│ └── messages_es.properties
└── webapp
├── WEB-INF
│ ├── beans.xml
│ ├── faces-config.xml
│ └── web.xml
├── index.xhtml
└── resources
└── components
└── inputPrice.xhtml
Utilisez les commandes suivantes pour cloner le référentiel :
# cd <parent-directory-to-check-out-sample-code>
export BASE_DIR=$PWD
git clone --single-branch https://github.com/microsoft/weblogic-on-azure.git --branch 20240201 $BASE_DIR/weblogic-on-azure
Si un message vous signale que vous allez passer à l’état « detached HEAD », vous pouvez ignorer ce message sans risque. Cela signifie simplement que vous avez modifié une étiquette.
Utilisez la commande suivante pour générerjavaee/weblogic-cafe/ :
mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml
Le package devrait être généré efficacement et localisé sur $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/target/weblogic-cafe.war. Si vous ne voyez pas le package, veuillez résoudre le problème avant de continuer.
Utiliser Azure Container Registry pour créer une image auxiliaire
Les étapes décrites dans cette section vous montrent comment générer une image auxiliaire. Cette image comprend les éléments suivants :
- le modèle dans les fichiers de Modèle d'image
- Votre application.
- Le fichier d’archivage du pilote JDBC (Java Database Connectivity)
- l'installation de WebLogic Deploy Tooling
Une image auxiliaire est une image conteneur Docker contenant votre application et votre configuration. L'opérateur Kubernetes WebLogic combine votre image auxiliaire avec le domain.spec.image
du cluster AKS qui contient le serveur WebLogic, le JDK et le système d'exploitation. Pour plus d'informations sur les images auxiliaires, consultez les images auxiliaires dans la documentation Oracle.
Cette section nécessite un terminal Linux avec Azure CLI et kubectl installés.
Pour générer l'image, procédez comme suit :
utilisez les commandes suivantes pour créer un répertoire dans lequel vous placerez les modèles et l'application :
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Copiez la valeur shellCmdtoOutputWlsImageModelYaml que vous avez enregistrée à partir des sorties de déploiement, collez-la dans la fenêtre Bash et exécutez la commande. La commande doit être similaire à l’exemple suivant :
echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
Cette commande produit un fichier ${BASE_DIR}/mystaging/models/model.yaml dont le contenu est similaire à l'exemple suivant :
# Copyright (c) 2020, 2021, Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.yaml # in https://github.com/oracle/weblogic-kubernetes-operator. domainInfo: AdminUserName: "@@SECRET:__weblogic-credentials__:username@@" AdminPassword: "@@SECRET:__weblogic-credentials__:password@@" ServerStartMode: "prod" topology: Name: "@@ENV:CUSTOM_DOMAIN_NAME@@" ProductionModeEnabled: true AdminServerName: "admin-server" Cluster: "cluster-1": DynamicServers: ServerTemplate: "cluster-1-template" ServerNamePrefix: "@@ENV:MANAGED_SERVER_PREFIX@@" DynamicClusterSize: "@@PROP:CLUSTER_SIZE@@" MaxDynamicClusterSize: "@@PROP:CLUSTER_SIZE@@" MinDynamicClusterSize: "0" CalculatedListenPorts: false Server: "admin-server": ListenPort: 7001 ServerTemplate: "cluster-1-template": Cluster: "cluster-1" ListenPort: 8001 SecurityConfiguration: NodeManagerUsername: "@@SECRET:__weblogic-credentials__:username@@" NodeManagerPasswordEncrypted: "@@SECRET:__weblogic-credentials__:password@@" resources: SelfTuning: MinThreadsConstraint: SampleMinThreads: Target: "cluster-1" Count: 1 MaxThreadsConstraint: SampleMaxThreads: Target: "cluster-1" Count: 10 WorkManager: SampleWM: Target: "cluster-1" MinThreadsConstraint: "SampleMinThreads" MaxThreadsConstraint: "SampleMaxThreads"
De la même manière, copiez la valeur shellCmdtoOutputWlsImageProperties, collez-la dans la fenêtre Bash et exécutez la commande. La commande doit être similaire à l’exemple suivant :
echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
Cette commande produit un fichier ${BASE_DIR}/mystaging/models/model.properties dont le contenu est similaire à l'exemple suivant :
# Copyright (c) 2021, Oracle Corporation and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. # Based on ./kubernetes/samples/scripts/create-weblogic-domain/model-in-image/model-images/model-in-image__WLS-v1/model.10.properties # in https://github.com/oracle/weblogic-kubernetes-operator. CLUSTER_SIZE=5
Les étapes suivantes permettent de créer le fichier de modèle d'application.
Utilisez les commandes suivantes pour copier weblogic-café.war et enregistrez-la dans wlsdeploy/applications :
mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/applications cp $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/target/weblogic-cafe.war ${BASE_DIR}/mystaging/models/wlsdeploy/applications/weblogic-cafe.war
Utilisez les commandes suivantes pour créer le fichier de modèle d'application avec le contenu affiché. Enregistrez le fichier de modèle sur ${BASE_DIR}/mystaging/models/appmodel.yaml.
cat <<EOF >appmodel.yaml appDeployments: Application: weblogic-cafe: SourcePath: 'wlsdeploy/applications/weblogic-cafe.war' ModuleType: ear Target: 'cluster-1' EOF
Procédez comme suit pour configurer la connexion de source de données.
Procédez comme suit pour télécharger et installer le pilote JDBC Microsoft SQL Server et l’extension d’identité Azure qui active les connexions de base de données à l’aide de l’identité managée Azure.
Utilisez les commandes suivantes pour télécharger et installer le pilote JDBC Microsoft SQL Server sur
wlsdeploy/externalJDBCLibraries
:export DRIVER_VERSION="10.2.1.jre8" export MSSQL_DRIVER_URL="https://repo.maven.apache.org/maven2/com/microsoft/sqlserver/mssql-jdbc/${DRIVER_VERSION}/mssql-jdbc-${DRIVER_VERSION}.jar" mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries curl -m 120 -fL ${MSSQL_DRIVER_URL} -o ${BASE_DIR}/mystaging/models/wlsdeploy/externalJDBCLibraries/mssql-jdbc-${DRIVER_VERSION}.jar
Utilisez les commandes suivantes pour installer l’extension d’identité Azure sur
wlsdeploy/classpathLibraries
:curl -LO https://github.com/oracle/weblogic-azure/raw/refs/heads/main/weblogic-azure-aks/src/main/resources/azure-identity-extensions.xml mvn dependency:copy-dependencies -f azure-identity-extensions.xml mkdir -p ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries mkdir ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson # fix JARs conflict issue in GA images, put jackson libraries to PRE_CLASSPATH to upgrade the existing libs. mv target/dependency/jackson-annotations-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-core-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-databind-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ mv target/dependency/jackson-dataformat-xml-*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/jackson/ # Thoes jars will be appended to CLASSPATH mv target/dependency/*.jar ${BASE_DIR}/mystaging/models/wlsdeploy/classpathLibraries/azureLibraries/
Utilisez les commandes suivantes pour nettoyer les ressources :
rm target -f -r rm azure-identity-extensions.xml
Connectez-vous au cluster AKS en copiant la valeur shellCmdtoConnectAks que vous avez enregistrée précédemment, en la collant dans la fenêtre Bash, puis en exécutant la commande. La commande doit être similaire à l’exemple suivant :
az account set --subscription <subscription>; az aks get-credentials \ --resource-group <resource-group> \ --name <name>
Vous devez obtenir une sortie similaire à la suivante. Dans le cas contraire, dépannez et résolvez le problème avant de poursuivre.
Merged "<name>" as current context in /Users/<username>/.kube/config
Exportez le modèle de connexion de base de données et enregistrez-le dans ${BASE_DIR}/mystaging/models/dbmodel.yaml. Les étapes suivantes extraient le modèle de configuration de base de données à partir du ConfigMap
sample-domain1-wdt-config-map
. Le nom suit le format<domain-uid>-wdt-config-map
, où<domain-uid>
est défini pendant le déploiement de l’offre. Si vous avez modifié la valeur par défaut, remplacez-la par votre propre UID de domaine.La clé de données est <db-secret-name>.yaml. Utilisez la commande suivante pour récupérer le nom du secret de base de données :
export WLS_DOMAIN_UID=sample-domain1 export WLS_DOMAIN_NS=${WLS_DOMAIN_UID}-ns export DB_K8S_SECRET_NAME=$(kubectl get secret -n ${WLS_DOMAIN_NS} | grep "ds-secret" | awk '{print $1}')
Ensuite, extrayez le modèle de base de données avec cette commande :
kubectl get configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS} -o=jsonpath="{['data']['${DB_K8S_SECRET_NAME}\.yaml']}" >${BASE_DIR}/mystaging/models/dbmodel.yaml
Enfin, utilisez la commande suivante pour vérifier le contenu de dbmodel.yaml.
cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
La sortie de cette commande doit ressembler à la structure suivante :
# Copyright (c) 2020, 2021, Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. resources: JDBCSystemResource: jdbc/WebLogicCafeDB: Target: 'cluster-1' JdbcResource: JDBCDataSourceParams: JNDIName: [ jdbc/WebLogicCafeDB ] GlobalTransactionsProtocol: OnePhaseCommit JDBCDriverParams: DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver URL: '@@SECRET:ds-secret-sqlserver-1727147748:url@@' PasswordEncrypted: '@@SECRET:ds-secret-sqlserver-1727147748:password@@' Properties: user: Value: '@@SECRET:ds-secret-sqlserver-1727147748:user@@' JDBCConnectionPoolParams: TestTableName: SQL SELECT 1 TestConnectionsOnReserve: true
Utilisez les commandes suivantes pour créer un fichier d’archive, puis supprimez le dossier wlsdeploy dont vous n’avez plus besoin :
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Utilisez les commandes suivantes pour télécharger et installer WebLogic Deploy Tooling (WDT) dans le répertoire intermédiaire, et supprimez ses fichiers weblogic-deploy/bin/*.cmd , qui ne sont pas utilisés dans les environnements UNIX :
cd ${BASE_DIR}/mystaging curl -m 120 -fL https://github.com/oracle/weblogic-deploy-tooling/releases/latest/download/weblogic-deploy.zip -o weblogic-deploy.zip unzip weblogic-deploy.zip -d . rm ./weblogic-deploy/bin/*.cmd
Utilisez la commande suivante pour nettoyer le programme d’installation WDT :
rm weblogic-deploy.zip
Utilisez les commandes suivantes pour créer un fichier Docker :
cd ${BASE_DIR}/mystaging cat <<EOF >Dockerfile FROM busybox ARG AUXILIARY_IMAGE_PATH=/auxiliary ARG USER=oracle ARG USERID=1000 ARG GROUP=root ENV AUXILIARY_IMAGE_PATH=\${AUXILIARY_IMAGE_PATH} RUN adduser -D -u \${USERID} -G \$GROUP \$USER COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/ USER \$USER EOF
Exécutez la commande
az acr build
en utilisant ${BASE_DIR}/mystaging/Dockerfile , comme indiqué dans l'exemple suivant :export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Utilisez les commandes suivantes pour vérifier les fichiers intermédiaires :
cd ${BASE_DIR}/mystaging find -maxdepth 2 -type f -print
Ces commandes produisent une sortie semblable à l’exemple suivant :
./models/model.properties ./models/model.yaml ./models/appmodel.yaml ./models/dbmodel.yaml ./models/archive.zip ./Dockerfile ./weblogic-deploy/VERSION.txt ./weblogic-deploy/LICENSE.txt
Générez l’image avec
az acr build
, comme illustré dans l’exemple suivant :az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
Lorsque vous générez convenablement l'image, le résultat correspond à l'exemple suivant :
... Step 1/9 : FROM busybox latest: Pulling from library/busybox Digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 Status: Image is up to date for busybox:latest ---> 65ad0d468eb1 Step 2/9 : ARG AUXILIARY_IMAGE_PATH=/auxiliary ---> Running in 1f8f4e82ccb6 Removing intermediate container 1f8f4e82ccb6 ---> 947fde618be9 Step 3/9 : ARG USER=oracle ---> Running in dda021591e41 Removing intermediate container dda021591e41 ---> f43d84be4517 Step 4/9 : ARG USERID=1000 ---> Running in cac4df6dfd13 Removing intermediate container cac4df6dfd13 ---> e5513f426c74 Step 5/9 : ARG GROUP=root ---> Running in 8fec1763270c Removing intermediate container 8fec1763270c ---> 9ef233dbe279 Step 6/9 : ENV AUXILIARY_IMAGE_PATH=${AUXILIARY_IMAGE_PATH} ---> Running in b7754f58157a Removing intermediate container b7754f58157a ---> 4a26a97eb572 Step 7/9 : RUN adduser -D -u ${USERID} -G $GROUP $USER ---> Running in b6c1f1a81af1 Removing intermediate container b6c1f1a81af1 ---> 97d3e5ad7540 Step 8/9 : COPY --chown=$USER:$GROUP ./ ${AUXILIARY_IMAGE_PATH}/ ---> 21088171876f Step 9/9 : USER $USER ---> Running in 825e0abc9f6a Removing intermediate container 825e0abc9f6a ---> b81d6430fcda Successfully built b81d6430fcda Successfully tagged wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0 2024/08/28 03:06:19 Successfully executed container: build 2024/08/28 03:06:19 Executing step ID: push. Timeout(sec): 3600, Working directory: '', Network: '' 2024/08/28 03:06:19 Pushing image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0, attempt 1 The push refers to repository [wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image] ee589b3cda86: Preparing c1fd1adab3b9: Preparing d51af96cf93e: Preparing c1fd1adab3b9: Pushed d51af96cf93e: Pushed ee589b3cda86: Pushed 1.0: digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac size: 946 2024/08/28 03:06:21 Successfully pushed image: wlsaksacru6jyly7kztoqu.azurecr.io/wlsaks-auxiliary-image:1.0 2024/08/28 03:06:21 Step ID: build marked as successful (elapsed time in seconds: 8.780235) 2024/08/28 03:06:21 Populating digests for step ID: build... 2024/08/28 03:06:22 Successfully populated digests for step ID: build 2024/08/28 03:06:22 Step ID: push marked as successful (elapsed time in seconds: 1.980158) 2024/08/28 03:06:22 The following dependencies were found: 2024/08/28 03:06:22 - image: registry: wlsaksacru6jyly7kztoqu.azurecr.io repository: wlsaks-auxiliary-image tag: "1.0" digest: sha256:c813eb75576eb07a179c3cb4e70106ca7dd280f933ab33a2f6858de673b12eac runtime-dependency: registry: registry.hub.docker.com repository: library/busybox tag: latest digest: sha256:9ae97d36d26566ff84e8893c64a6dc4fe8ca6d1144bf5b87b2b85a32def253c7 git: {} Run ID: ca1 was successful after 14s
L’image est envoyée à ACR après une génération réussie.
Vous pouvez exécuter
az acr repository show
pour tester si l'image a bien été transférée dans le référentiel distant, comme le montre l'exemple suivant :az acr repository show --name ${ACR_NAME} --image ${IMAGE}
Cette commande devrait générer des résultats similaires à ceux de l'exemple suivant :
{ "changeableAttributes": { "deleteEnabled": true, "listEnabled": true, "readEnabled": true, "writeEnabled": true }, "createdTime": "2024-01-24T06:14:19.4546321Z", "digest": "sha256:a1befbefd0181a06c6fe00848e76f1743c1fecba2b42a975e9504ba2aaae51ea", "lastUpdateTime": "2024-01-24T06:14:19.4546321Z", "name": "1.0", "quarantineState": "Passed", "signed": false }
Appliquer l'image auxiliaire
Dans les étapes précédentes, vous avez créé l'image auxiliaire, y compris les modèles et WDT. Appliquez l’image auxiliaire au cluster WebLogic Server en procédant comme suit.
Appliquez l'image auxiliaire en effectuant une mise à jour corrective de la définition de ressource personnalisée du domaine (CRD) à l'aide de la commande
kubectl patch
.L’image auxiliaire est définie dans
spec.configuration.model.auxiliaryImages
, comme illustré dans l’exemple suivant :spec: clusters: - name: sample-domain1-cluster-1 configuration: model: auxiliaryImages: - image: wlsaksacrafvzeyyswhxek.azurecr.io/wlsaks-auxiliary-image:1.0 imagePullPolicy: IfNotPresent sourceModelHome: /auxiliary/models sourceWDTInstallHome: /auxiliary/weblogic-deploy
Utilisez les commandes suivantes pour augmenter la valeur
restartVersion
et utilisezkubectl patch
pour appliquer l'image auxiliaire au domaine CRD en utilisant la définition illustrée :export VERSION=$(kubectl -n ${WLS_DOMAIN_NS} get domain ${WLS_DOMAIN_UID} -o=jsonpath='{.spec.restartVersion}' | tr -d "\"") export VERSION=$((VERSION+1)) export ACR_LOGIN_SERVER=$(az acr show --name ${ACR_NAME} --query "loginServer" --output tsv) cat <<EOF >patch-file.json [ { "op": "replace", "path": "/spec/restartVersion", "value": "${VERSION}" }, { "op": "add", "path": "/spec/configuration/model/auxiliaryImages", "value": [{"image": "$ACR_LOGIN_SERVER/$IMAGE", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}] }, { "op": "remove", "path": "/spec/configuration/model/configMap" } ] EOF kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \ --type=json \ --patch-file patch-file.json
Étant donné que la connexion de base de données est configurée dans l’image auxiliaire, exécutez la commande suivante pour supprimer ConfigMap :
kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
Avant de continuer, attendez que la commande suivante produise la sortie suivante pour le serveur d’administration et les serveurs gérés :
kubectl get pod -n ${WLS_DOMAIN_NS} -w
NAME READY STATUS RESTARTS AGE
sample-domain1-admin-server 1/1 Running 0 20m
sample-domain1-managed-server1 1/1 Running 0 19m
sample-domain1-managed-server2 1/1 Running 0 18m
Le système peut mettre 5 à 10 minutes pour atteindre cet état. La liste suivante fournit une vue d'ensemble de ce qui se passe pendant que vous attendez :
- Vous devez au préalable voir
sample-domain1-introspector
en cours d'exécution. Ce logiciel recherche les modifications apportées à la ressource personnalisée du domaine afin de pouvoir prendre les mesures nécessaires sur le cluster Kubernetes. - Lorsque des changements sont détectés, l'introspecteur de domaine arrête et démarre de nouveaux les pod pour déployer les changements.
- Ensuite, vous verrez le pod
sample-domain1-admin-server
s'arrêter et redémarrer. - Puis, vous verrez les deux serveurs gérés s'arrêter et redémarrer.
- Vous ne pourrez poursuivre l'opération que lorsque les trois pod auront atteint l'état
1/1 Running
.
Vérifier la fonctionnalité du déploiement
Les étapes suivantes permettent de vérifier la fonctionnalité du déploiement en affichant la console d’administration WebLogic Server et l’exemple d’application :
Collez la valeur adminConsoleExternalUrl dans la barre d'adresse d'un navigateur web connecté à Internet. Vous verrez l’écran habituel de connexion à la console d’administration WebLogic Server.
Connectez-vous avec le nom d’utilisateur
weblogic
et le mot de passe que vous avez entré lors du déploiement de WebLogic Server à partir du portail Azure. Rappelez-vous que cette valeur estwlsAksCluster2022
.Dans la boîte Structure du domaine, sélectionnez Services.
Sous Services, sélectionnez Sources de données.
Dans le panneau Résumé des sources de données JDBC, sélectionnez Monitoring. Votre écran devrait s'apparenter à l'exemple suivant. Vous découvrez que l’état de la source de données est en cours d’exécution sur des serveurs gérés.
Dans la boîte Structure du domaine, sélectionnez Déploiements.
Dans le tableau Déploiements, il doit y avoir une ligne. Le nom doit avoir la même valeur que dans votre fichier
Application
appmodel.yaml. Sélectionnez le nom.Sélectionnez l’onglet Test.
Sélectionnez weblogic-cafe.
Dans le volet Paramètres de weblogic-cafe, sélectionnez l'onglet Test.
Développez l'icône + située près de weblogic-café. Votre écran devrait s'apparenter à l'exemple suivant. En particulier, vous devriez voir des valeurs similaires à
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
dans la colonne Point de test.Remarque
Les liens hypertextes dans la colonne Point de test ne sont pas sélectionnables, car nous n'avons pas configuré la console d'administration avec l'URL externe sur laquelle elle s'exécute. Cet article montre la console d’administration WebLogic Server uniquement à titre de démonstration. N’utilisez pas la console d’administration WebLogic Server pour toute modification de configuration durable lorsque vous exécutez WebLogic Server sur AKS. La conception native Cloud de WebLogic Server sur AKS nécessite que toute configuration durable soit représentée dans les images Docker initiales ou appliquée au cluster AKS en cours d’exécution à l’aide de techniques CI/CD telles que la mise à jour du modèle, comme décrit dans la documentation Oracle.
Comprendre la valeur
context-path
de l'échantillon d'application que vous avez déployé. Si vous avez déployé l’exemple d’application recommandé,context-path
estweblogic-cafe
.Construisez une URL entièrement qualifiée pour l'application échantillon en ajoutant le
context-path
à la valeur clusterExternalUrl. Si vous avez déployé l'application échantillon recommandée, l'URL pleinement qualifiée devrait ressembler àhttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
.Collez l’URL complète dans un navigateur Web connecté à Internet. Si vous avez déployé l'application échantillon recommandée, vous devriez obtenir des résultats similaires à la capture d'écran suivante :
Nettoyer les ressources
Pour éviter des frais Azure, vous devez nettoyer les ressources non nécessaires. Lorsque vous n’avez plus besoin du cluster, utilisez la commande az group delete. La commande suivante supprime le groupe de ressources, le service de 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
az group delete --name <db-resource-group-name> --yes --no-wait
Étapes suivantes
Pour en savoir plus sur l’exécution de WebLogic Server sur AKS ou sur des machines virtuelles, suivez ces liens :
Pour plus d’informations sur les offres Oracle WebLogic dans la place de marché Azure, consultez Oracle WebLogic Server sur Azure. Ces offres sont toutes de type BYOL (apportez votre propre licence). Elles supposent que vous disposez déjà des licences appropriées avec Oracle, et d’une licence adéquate pour exécuter les offres dans Azure.
Azure Kubernetes Service