Implementación de una aplicación Java con WebLogic Server en un clúster de Azure Kubernetes Service (AKS)
En este artículo se explica cómo:
- Ejecute la aplicación de Java en Oracle WebLogic Server (WLS).
- Cree un clúster de WebLogic Server en AKS mediante una oferta de Azure Marketplace.
- Compile una imagen de Docker de aplicación que incluya modelos de Herramientas de WebLogic Deploy (WDT).
- Implemente la aplicación contenedorizada en el clúster de WebLogic Server en AKS con conexión a Microsoft Azure SQL.
En este artículo se usa la oferta de Azure Marketplace para WebLogic Server con el fin de acelerar el recorrido hasta AKS. La oferta aprovisiona automáticamente varios recursos de Azure, entre los que se incluyen:
- Una instancia de Azure Container Registry.
- Un clúster de AKS
- Una instancia de Azure App Gateway Ingress Controller (AGIC).
- El operador de Kubernetes de WebLogic
- Una Imagen de contenedor que incluye el entorno de ejecución de WebLogic.
- Un clúster de WebLogic Server sin una aplicación
Después, en el artículo se presenta la creación de una imagen para actualizar el clúster de WebLogic Server. La imagen proporciona los modelos de aplicación y de WDT.
Si prefiere un enfoque menos automatizado para implementar WebLogic en AKS, vea la guía paso a paso incluida en la documentación oficial de Oracle para Azure Kubernetes Service.
Si está interesado en proporcionar comentarios o trabajar estrechamente en sus escenarios de migración con el equipo de ingeniería que desarrolla soluciones de WebLogic en AKS, rellene esta breve encuesta sobre la migración de WebLogic e incluya la información de contacto. El equipo de administradores de programas, arquitectos e ingenieros se pondrá en contacto rápidamente con usted para iniciar una estrecha colaboración.
Requisitos previos
- Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
- Asegúrese de que la identidad de Azure que usa para iniciar sesión y completar este artículo tiene el rol Propietario en la suscripción actual o los roles Colaborador y Administrador de acceso de usuario en la suscripción actual. Para obtener información general sobre los roles de Azure, consulte ¿Qué es el control de acceso basado en roles de Azure (RBAC de Azure)? Para obtener más información sobre los roles específicos requeridos por WLS en AKS, consulte Roles integrados de Azure.
- Tenga las credenciales de una cuenta de inicio de sesión único (SSO) de Oracle. Para crear una, consulte Crear una cuenta de Oracle.
- Acepte los términos de licencia de WebLogic Server.
- Visite Oracle Container Registry e inicie sesión.
- Si tiene un derecho de soporte técnico, seleccione Middleware y, a continuación, busque y seleccione weblogic_cpu.
- Si no tiene un derecho de soporte técnico para Oracle, seleccione Middleware y, a continuación, busque y seleccione weblogic.
- Acepta el acuerdo de licencia.
Nota:
Obtenga un derecho de soporte técnico de Oracle antes de ir a la producción. Si no lo hace, se ejecutan imágenes no seguras que no se revisan para detectar errores críticos de seguridad. Para obtener más información sobre las actualizaciones de revisión crítica de Oracle, consulte Actualizaciones de revisión crítica, alertas de seguridad y anuncios de Oracle.
- Prepare un equipo local con un sistema operativo similar a Unix instalado: por ejemplo, Ubuntu, Azure Linux, macOS o Subsistema de Windows para Linux.
- Azure CLI. Use
az --version
para probar si az funciona. Este documento se probó con la versión 2.55.1. - kubectl. Use
kubectl version
para probar si kubectl funciona. Este documento se probó con la versión 1.21.2. - Un kit de desarrollo de Java (JDK). El artículo le dirige a instalar Microsoft Build de OpenJDK 11. Asegúrese de que la variable de entorno
JAVA_HOME
se ha establecido correctamente en los shells en los que ejecuta los comandos. - Maven 3.5.0 o cualquier versión superior.
- Asegúrese de que tiene instalada la utilidad para comprimir y descomprimir. Use
zip/unzip -v
para probar sizip/unzip
funciona.
- Azure CLI. Use
Crear una instancia de Azure SQL Database
En esta sección se crea una instancia de Azure SQL Database mediante la autenticación de Microsoft Entra, con la conexión de identidad administrada habilitada.
Crear un grupo de recursos
Cree un grupo de recursos con az group create. Dado que los grupos de recursos deben ser únicos dentro de una suscripción, elija un nombre único. Una manera fácil de tener nombres únicos es usar una combinación de sus iniciales, la fecha de hoy y algún identificador. Por ejemplo, abc1228rg
. En este ejemplo se crea un grupo de recursos denominado abc1228rg
en la ubicación eastus
:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
Creación de un servidor de base de datos y una base de datos
Cree un servidor con el comando az sql server create. En este ejemplo se crea un servidor flexible denominado myazuresql20130213
con el usuario administrador azureuser
y la contraseña de administrador. Reemplace <your-password>
por la contraseña. Para obtener más información, consulte Inicio rápido: Creación de una base de datos única - Azure SQL Database.
Nota:
Aunque use aquí un nombre de usuario y una contraseña, estas credenciales no se exponen fuera de la base de datos. La conexión entre la capa de aplicación y la base de datos se protege con identidades administradas.
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
Cree una base de datos con el comandoaz sql db create en el nivel de proceso sin servidor.
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
Configurar un administrador de Microsoft Entra
Para obtener información sobre cómo Interactúa Azure SQL Server con identidades administradas, consulte Conexión mediante la autenticación de Microsoft Entra.
Siga estos pasos para configurar una cuenta de administrador de Microsoft Entra en Azure SQL Server desde Azure Portal:
- En Azure Portal, abra la instancia de Azure SQL Server
myazuresql20130213
. - Seleccione Configuración y, a continuación, seleccione Microsoft Entra ID. En la página Microsoft Entra ID, seleccione Establecer administrador.
- En la página Agregar administrador, busque un usuario, seleccione el usuario o grupo que convertirá en administrador y después haga clic en Seleccionar.
- En la parte superior de la página Microsoft Entra ID, haga clic en Guardar. En el caso de los usuarios y grupos de Microsoft Entra, el id. de objeto se muestra junto al nombre del administrador.
- El proceso de cambio del administrador puede tardar varios minutos. A continuación, el nuevo administrador aparece en el cuadro de Microsoft Entra ID.
Creación de una identidad administrada asignada por el usuario
A continuación, en la CLI de Azure, cree una identidad en la suscripción con el comando az identity create. Esta identidad administrada se usa para conectarse a la base de datos.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
Creación de un usuario de base de datos para la identidad administrada
Ahora, conéctese como usuario administrador de Microsoft Entra a la base de datos de Azure SQL desde Azure Portal y cree un usuario para la identidad administrada.
En primer lugar, cree una regla de firewall para acceder al servidor de Azure SQL Server desde el portal, como se muestra en los pasos siguientes:
- En Azure Portal, abra la instancia de Azure SQL Server
myazuresql20130213
. - Seleccione Seguridad y, a continuación, Redes.
- En Reglas de firewall, seleccione Agregar la dirección IP IPV4 del cliente.
- En Excepciones, seleccione Permitir que los servicios y recursos de Azure accedan a este servidor.
- Seleccione Guardar.
Una vez creada la regla de firewall, puede acceder a Azure SQL Server desde el portal. Siga estos pasos para crear un usuario de base de datos:
Seleccione Configuración y, a continuación, seleccione Bases de datos SQL. Seleccione
mysingledatabase20230213
.Seleccione Editor de consultas. En la página Le damos la bienvenida al Editor de Power Query de SQL Database, en Autenticación de Active Directory, busque un mensaje como
Logged in as user@contoso.com
.Seleccione Continuar como user@contoso.com, donde
user
es el nombre de la cuenta de administrador de AD.Después de iniciar sesión, en el editor de la Consulta 1, ejecute los siguientes comandos para crear un usuario de base de datos para la identidad administrada
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
En el editor de la Consulta 1, seleccione Ejecutar para ejecutar los comandos SQL.
Si los comandos se completan correctamente, puede encontrar un mensaje que indica
Query succeeded: Affected rows: 0
.
Use el siguiente comando para obtener la cadena de conexión que se usa en la sección siguiente:
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}
Cree un esquema para la aplicación de ejemplo
Seleccione Nueva consulta y, después, en el editor de consultas, ejecute la consulta siguiente:
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);
Después de una ejecución correcta, debería ver el mensaje Consulta correcta: Filas afectadas: 1. Si no ve este mensaje, solucione el problema antes de continuar.
Puede continuar con la implementación de WLS en la oferta de AKS.
Implementar WebLogic Server en AKS
Siga estos pasos para buscar la oferta de WebLogic Server en AKS y rellenar el panel Aspectos básicos:
En la barra de búsqueda de la parte superior de Azure Portal, escriba weblogic. En los resultados de la búsqueda sugeridos automáticamente, en la sección Marketplace, seleccione WebLogic Server en AKS.
También puede ir directamente a la oferta de WebLogic Server en AKS.
En la página de la oferta, seleccione Crear.
En el panel Aspectos básicos, asegúrese de que el valor que se muestra en el campo Suscripción es el mismo que usó para iniciar sesión en Azure. Asegúrese de que tiene los roles que se enumeran en la sección de requisitos previos para la suscripción.
Debe implementar la oferta en un grupo de recursos vacío. En el campo Grupo de recursos, seleccione Crear nuevo y complete un valor para el grupo de recursos. Dado que los grupos de recursos deben ser únicos dentro de una suscripción, elija un nombre único. Una forma fácil de tener nombres únicos es usar una combinación de sus iniciales, la fecha de hoy y algún identificador, por ejemplo,
ejb0723wls
.En Detalles de la instancia, seleccione la región para la implementación. Para obtener una lista de las regiones de Azure en las que AKS está disponible, consulte Disponibilidad de regiones de AKS.
En Credenciales para WebLogic, deje el valor predeterminado para Nombre de usuario del administrador de WebLogic.
Complete
wlsAksCluster2022
para Contraseña del administrador de WebLogic. Use el mismo valor para los campos de confirmación y Contraseña para el cifrado del modelo de WebLogic.Seleccione Siguiente.
Siga estos pasos para iniciar el proceso de implementación:
Desplácese hasta la sección etiquetada como Proporcionar una cuenta de inicio de sesión único (SSO) de Oracle. Rellene las credenciales de SSO de Oracle a partir de las condiciones previas.
Asegúrese de anotar los pasos del cuadro de información, empezando por Antes de avanzar debe aceptar los términos y restricciones estándar de Oracle.
En función de si la cuenta de inicio de sesión único de Oracle tiene derecho al soporte técnico de Oracle, seleccione la opción adecuada en Seleccionar el tipo de Imágenes de WebLogic Server. Si la cuenta tiene derecho a soporte técnico, seleccione Imágenes de WebLogic Server con revisiones. De lo contrario, seleccione Imágenes de WebLogic Server generales.
Deje el valor predeterminado en Seleccionar la combinación deseada de WebLogic Server.... Tiene una amplia gama de opciones en cuanto a la versión de WebLogic Server, JDK y del SO.
En la sección Aplicación, junto a ¿Implementar una aplicación?, seleccione No.
Los siguientes pasos hacen que la consola de administración de WebLogic Server y la aplicación de ejemplo se expongan a la red pública de Internet con un complemento de entrada de Application Gateway integrado. Para más información, consulte ¿Qué es Application Gateway Ingress Controller?
Seleccione Siguiente para ver el panel TLS/SSL.
Seleccione Siguiente para ver el panel Equilibrio de carga.
Junto a Opciones de equilibrio de carga, seleccione Application Gateway Ingress Controller.
En Application Gateway Ingress Controller, debería ver que todos los campos se han rellenado previamente con los valores predeterminados de Red virtual y Subred. Deje los valores predeterminados.
En Crear entrada para la consola de administración, seleccione Sí.
Seleccione Siguiente para ver el panel de DNS.
Seleccione Siguiente para ver el panel de la Base de datos.
Siga estos pasos para configurar una conexión de base de datos mediante una identidad administrada:
- En ¿Conectarse a una base de datos?, seleccione Sí.
- En Configuración de conexión, para Elegir tipo de base de datos, abra el menú desplegable y, a continuación, seleccione Microsoft SQL Server (compatible con la conexión sin contraseña).
- Para Nombre de JNDI, escriba jdbc/WebLogicCafeDB.
- En Cadena de conexión de origen de datos, escriba la cadena de conexión que obtuvo en la última sección.
- Seleccione Usar conexión de origen de datos sin contraseña.
- En Identidad administrada asignada por el usuario, seleccione la identidad administrada que creó en el paso anterior. En este ejemplo, el nombre es
myManagedIdentity
. - Seleccione Agregar.
La sección Configuración de conexión debe tener un aspecto similar a la siguiente captura de pantalla:
Siga estos pasos para completar la implementación:
- Seleccione Revisar + crear. Asegúrese de que no se produzca un error en la validación. Si lo genera, corrija los problemas de validación y vuelva a seleccionar Revisar y crear.
- Seleccione Crear.
- Realice un seguimiento del progreso de la implementación en la página Implementación en curso.
En función de las condiciones de red y del resto de la actividad en la región seleccionada, la implementación puede tardar hasta 50 minutos en completarse.
Nota:
Si su organización requiere que implemente la carga de trabajo dentro de una red virtual corporativa sin direcciones IP públicas permitidas, puede elegir el servicio de Load Balancer interno. Para configurar el servicio Load Balancer interno, siga estos pasos en la pestaña Equilibrio de carga:
ParaOpciones de equilibrio de carga, seleccione Servicio Standard Load Balancer.
Seleccione Usar equilibrador de carga interno.
Añada las siguientes filas a la tabla:
Prefijo de nombre de servicio Destino Port wls-admin-internal
admin-server
7001 wls-cluster-internal
cluster-1
8001
La pestaña Equilibrio de carga debe tener un aspecto similar a la siguiente captura de pantalla:
Después de la implementación, puede encontrar las direcciones URL de acceso del servidor de administración y el clúster desde la salida, etiquetada adminConsoleExternalUrl y clusterExternalUrl.
Examinar la salida de la implementación
Use los pasos de esta sección para comprobar que la implementación se realizó correctamente.
Si ha navegado lejos de la página La implementación está en curso, los pasos siguientes le muestran cómo volver a esa página. Si todavía está en la página que muestra el mensaje La implementación se ha completado, puede ir al paso 5 después de la siguiente captura de pantalla.
En la esquina de cualquier página de Azure Portal, seleccione el menú de la hamburguesa y seleccione Grupos de recursos.
En el cuadro con el texto Filtrar para cualquier campo, escriba los primeros caracteres del grupo de recursos que creó anteriormente. Si ha seguido la convención recomendada, escriba sus iniciales y, a continuación, seleccione el grupo de recursos adecuado.
En el panel de navegación, en la sección Configuración, seleccione Implementaciones. Verá una lista ordenada de las implementaciones en este grupo de recursos, con la más reciente primero.
Desplácese hasta la entrada más antigua de esta lista. Esta entrada corresponde a la implementación que inició en la sección anterior. Seleccione la implementación más antigua, como se muestra en la captura de pantalla siguiente.
En el panel de navegación, seleccione Salidas. Esta lista muestra los valores de salida de la implementación. Se incluye información útil en las salidas.
El valor adminConsoleExternalUrl es el vínculo completo y visible de Internet público a la consola de administración de WebLogic Server para este clúster de AKS. Seleccione el icono para copiar junto al valor de campo para copiar el vínculo en el Portapapeles. Guarde este valor para más adelante.
El valor clusterExternalUrl es el vínculo completo y visible de Internet público a la aplicación de ejemplo implementada en WebLogic Server en este clúster de AKS. Seleccione el icono para copiar junto al valor de campo para copiar el vínculo en el Portapapeles. Guarde este valor para más adelante.
El valor shellCmdtoOutputWlsImageModelYaml es la cadena en base64 del modelo WDT que se ha usado para crear la imagen de contenedor. Guarde este valor para más adelante.
El valor shellCmdtoOutputWlsImageProperties es la cadena en base64 de las propiedades del modelo WDT que se ha usado para crear la imagen de contenedor. Guarde este valor para más adelante.
El valor shellCmdtoConnectAks es el comando de la CLI de Azure para conectarse a este clúster de AKS específico.
Los demás valores de las salidas están fuera del ámbito de este artículo, pero se explican con detalle en la Guía del usuario de WebLogic en AKS.
Configuración e implementación de la aplicación de ejemplo
La oferta aprovisiona el clúster de WebLogic Server mediante un modelo en la imagen. Actualmente, el clúster de WebLogic Server no tiene ninguna aplicación implementada.
En esta sección se actualiza el clúster de WebLogic Server mediante la implementación de una aplicación de ejemplo mediante una imagen auxiliar.
Extracción de la aplicación
En esta sección se clona el código de ejemplo de esta guía. El ejemplo se encuentra en GitHub, en el repositorio weblogic-on-azure de la carpeta javaee/weblogic-café/. Esta es la estructura de archivos de la aplicación.
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
Use los comandos siguientes para clonar el repositorio:
# 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 se ve un mensaje sobre estar en estado "HEAD desasociado", es seguro ignorar este mensaje. Solo significa que ha extraído una etiqueta del repositorio.
Use el siguiente comando para compilar javaee/weblogic-cafe/:
mvn clean package --file $BASE_DIR/weblogic-on-azure/javaee/weblogic-cafe/pom.xml
El paquete debe generarse correctamente y ubicarse en $BASE_DIR/weblogic-on-azure/javaee/weblogic-café/target/weblogic-café.war. Si no ve el paquete, debe solucionar el problema antes de continuar.
Use Azure Container Registry para crear una imagen auxiliar
Los pasos de esta sección muestra cómo crear una imagen auxiliar. Esta imagen incluye los siguientes componentes:
- Los archivos del modelo Modelo en la mage
- Su aplicación
- Archivo del controlador de Java Database Connectivity (JDBC)
- La instalación de WebLogic Deploy Tooling
Una imagen auxiliar es una imagen de contenedor de Docker que contiene la aplicación y la configuración. El operador de Kubernetes de WebLogic combina una imagen auxiliar con domain.spec.image
en el clúster de AKS que contiene WebLogic Server, JDK y el sistema operativo. Para más información sobre las imágenes auxiliares, consulte Imágenes auxiliares en la documentación de Oracle.
En esta sección se requiere un terminal Linux con la CLI de Azure y kubectl instalados.
Para compilar la imagen, siga estos pasos:
Use los siguientes comandos para crear un directorio para almacenar provisionalmente los modelos y la aplicación:
mkdir -p ${BASE_DIR}/mystaging/models cd ${BASE_DIR}/mystaging/models
Copie el valor shellCmdtoOutputWlsImageModelYaml que guardó de las salidas de implementación, péguelo en la ventana de Bash y ejecute el comando. El comando debería tener un aspecto similar al ejemplo siguiente:
echo -e IyBDb3B5cmlna...Cgo= | base64 -d > model.yaml
Este comando genera el archivo ${BASE_DIR}/mystaging/models/model.yaml cuyo contenido es similar al del ejemplo siguiente:
# 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 forma similar, copie el valor shellCmdtoOutputWlsImageProperties, péguelo en la ventana de Bash y ejecute el comando. El comando debería tener un aspecto similar al ejemplo siguiente:
echo -e IyBDb3B5cml...pFPTUK | base64 -d > model.properties
Este comando genera el archivo ${BASE_DIR}/mystaging/models/model.properties, cuyo contenido es similar al del ejemplo siguiente:
# 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
Siga estos pasos para crear el archivo del modelo de aplicación.
Use los siguientes comandos para copiar weblogic-café.war y guardarlo en 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
Use los siguientes comandos para crear el archivo del modelo de aplicación con el contenido que se muestra. Guarde el archivo del modelo en ${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
Siga estos pasos para configurar la conexión del origen de datos.
Siga estos pasos para descargar e instalar el controlador JDBC de Microsoft SQL Server y la extensión de identidad de Azure que habilita las conexiones de base de datos mediante Azure Managed Identity.
Use los siguientes comandos para descargar e instalar el controlador JDBC de Microsoft SQL Server para
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
Use los siguientes comandos para instalar la extensión de identidad de Azure para
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/
Use los siguientes comandos para limpiar los recursos:
rm target -f -r rm azure-identity-extensions.xml
Conéctese al clúster de AKS, para lo que debe copia el valor shellCmdtoConnectAks que guardó anteriormente, pegarlo en la ventana de Bash y, después, ejecutar el comando. El comando debería tener un aspecto similar al ejemplo siguiente:
az account set --subscription <subscription>; az aks get-credentials \ --resource-group <resource-group> \ --name <name>
Debería ver una salida similar al ejemplo siguiente: Si no ve esta salida, solucione el problema antes de continuar.
Merged "<name>" as current context in /Users/<username>/.kube/config
Exporte el modelo de conexión de base de datos y guárdelo en ${BASE_DIR}/mystaging/models/dbmodel.yaml. En los pasos siguientes se extrae el modelo de configuración de base de datos de ConfigMap
sample-domain1-wdt-config-map
. El nombre sigue el formato<domain-uid>-wdt-config-map
, donde<domain-uid>
se establece durante la implementación de la oferta. Si modificó el valor predeterminado, reemplácelo por su propio UID de dominio.La clave de datos es <db-secret-name>.yaml. Use el comando siguiente para recuperar el nombre del secreto de base de datos:
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}')
A continuación, extraiga el modelo de base de datos con este comando:
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
Por último, use el siguiente comando para comprobar el contenido de dbmodel.yaml.
cat ${BASE_DIR}/mystaging/models/dbmodel.yaml
La salida de este comando debe ser similar a la estructura siguiente:
# 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
Use los siguientes comandos para crear un archivo de archivo y, a continuación, quite la carpeta wlsdeploy, que ya no necesita:
cd ${BASE_DIR}/mystaging/models zip -r archive.zip wlsdeploy rm -f -r wlsdeploy
Use los siguientes comandos para descargar e instalar WebLogic Deploy Tooling (WDT) en el directorio de almacenamiento provisional y quitar sus archivos weblogic-deploy/bin/*.cmd, que no se usan en entornos 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
Use el siguiente comando para limpiar el instalador de WDT:
rm weblogic-deploy.zip
Use los comandos siguientes para crear un archivo de 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
Ejecute el comando
az acr build
mediante ${BASE_DIR}/mystaging/Dockerfile, como se muestra en el ejemplo siguiente:export ACR_NAME=<value-from-clipboard> export IMAGE="wlsaks-auxiliary-image:1.0"
Use los siguientes comandos para comprobar los archivos de almacenamiento provisional:
cd ${BASE_DIR}/mystaging find -maxdepth 2 -type f -print
Estos comandos generan una salida similar a la del ejemplo siguiente:
./models/model.properties ./models/model.yaml ./models/appmodel.yaml ./models/dbmodel.yaml ./models/archive.zip ./Dockerfile ./weblogic-deploy/VERSION.txt ./weblogic-deploy/LICENSE.txt
Compile la imagen con
az acr build
, como se muestra en el ejemplo siguiente:az acr build -t ${IMAGE} --build-arg AUXILIARY_IMAGE_PATH=/auxiliary -r ${ACR_NAME} --platform linux/amd64 .
Si la imagen se compila correctamente, la salida es similar a la del ejemplo siguiente:
... 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
La imagen se inserta en ACR después de una compilación correcta.
Puede ejecutar
az acr repository show
para probar si la imagen se inserta correctamente en el repositorio remoto, como se muestra en el siguiente ejemplo:az acr repository show --name ${ACR_NAME} --image ${IMAGE}
Este comando debería generar una salida similar a la del siguiente ejemplo:
{ "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 }
Aplicación de la imagen auxiliar
En los pasos anteriores, creó la imagen auxiliar, que incluía los modelos y WDT. Aplique la imagen auxiliar al clúster de WebLogic Server con los pasos siguientes.
Aplique la imagen auxiliar mediante la aplicación de revisiones a la definición de recursos personalizados (CRD) del dominio mediante el comando
kubectl patch
.La imagen auxiliar se define en
spec.configuration.model.auxiliaryImages
, como se muestra en el ejemplo siguiente: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
Use los siguientes comandos para aumentar el valor
restartVersion
y usekubectl patch
para aplicar la imagen auxiliar al CRD de dominio mediante la definición que se muestra: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
Dado que la conexión de base de datos está configurada en la imagen auxiliar, ejecute el siguiente comando para quitar ConfigMap:
kubectl delete configmap sample-domain1-wdt-config-map -n ${WLS_DOMAIN_NS}
Antes de continuar, espere hasta que el siguiente comando genere la siguiente salida para el servidor de administración y los servidores administrados:
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
El sistema puede tardar entre 5 y 10 minutos en alcanzar este estado. En la lista siguiente se ofrece información general de lo que sucede mientras espera:
- Debería ver la ejecución de
sample-domain1-introspector
en primer lugar. Este software busca cambios en el recurso personalizado del dominio para que pueda realizar las acciones necesarias en el clúster de Kubernetes. - Cuando se detectan cambios, el introspector del dominio elimina los pods e inicia otros nuevos para implementar los cambios.
- A continuación, debería ver que se termina el pod
sample-domain1-admin-server
y, después, se reinicia. - Luego, debería ver que los dos servidores administrados finalizan y reinician.
- No podrá continuar hasta que los tres pods muestren el estado
1/1 Running
.
Comprobación de la funcionalidad de la implementación
Siga los pasos que se indican a continuación para comprobar la funcionalidad de la implementación mediante la visualización de la consola de administración de WebLogic Server y la aplicación de ejemplo:
Pegue el valor adminConsoleExternalUrl en la barra de direcciones de un explorador web conectado a Internet. Debería ver la conocida pantalla de inicio de sesión de la consola de administración de WebLogic Server.
Inicie sesión con el nombre de usuario
weblogic
y la contraseña que especificó al implementar WebLogic Server desde Azure Portal. Recuerde que este valor eswlsAksCluster2022
.En el cuadro Estructura del dominio, seleccione Servicios.
En Servicios, seleccione Orígenes de datos.
En el panel Resumen de orígenes de datos JDBC, seleccione Supervisión. La pantalla debe parecerse a la del siguiente ejemplo. Encontrará que el estado de los orígenes de datos se está ejecutando en los servidores administrados.
En el cuadro Estructura de dominio, seleccione Implementaciones.
En la tabla Implementaciones, debe haber una sola fila. El nombre debe ser el mismo valor que el valor
Application
del archivo appmodel.yaml. Seleccione el nombre.Seleccione la pestaña Pruebas.
Seleccione weblogic-cafe.
En el panel Configuración de weblogic-cafe, seleccione la pestaña Pruebas.
Expanda el icono +, que se encuentra al lado de weblogic-cafe. La pantalla debe parecerse a la del siguiente ejemplo. En concreto, debería ver valores similares a
http://sample-domain1-managed-server1:8001/weblogic-cafe/index.xhtml
en la columna Punto de prueba.Nota:
Los hipervínculos de la columna Punto de prueba no se pueden seleccionar, ya que no se ha configurado la consola de administración con la dirección URL externa en la que se ejecuta. En este artículo se muestra la consola de administración de WebLogic Server simplemente a modo de demostración. No use la consola de administración de WebLogic Server para realizar cambios de configuración duraderos al ejecutar WebLogic Server en AKS. El diseño nativo de la nube de WebLogic Server en AKS requiere que cualquier configuración duradera se represente en las imágenes iniciales de Docker o se aplique al clúster de AKS en ejecución mediante técnicas de CI/CD, como actualizar el modelo, como se describe en la Documentación de Oracle.
Conozca el valor
context-path
de la aplicación de ejemplo que implementó. Si ha implementado la aplicación de ejemplo recomendada,context-path
esweblogic-cafe
.Construya una dirección URL completa para la aplicación de ejemplo mediante la anexión de
context-path
al valor clusterExternalUrl. Si ha implementado la aplicación de ejemplo recomendada, la dirección URL completa será similar ahttp://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/
.Pegue la dirección URL completa en un explorador web conectado a Internet. Si ha implementado la aplicación de ejemplo recomendada, debería ver resultados similares a los de la siguiente captura de pantalla:
Limpieza de recursos
Para evitar los cargos de Azure, se recomienda limpiar los recursos que no sean necesarios. Cuando ya no necesite el clúster, use el comando az group delete. El siguiente comando elimina el grupo de recursos, el servicio de contenedor, el registro de contenedor, la base de datos y todos los recursos relacionados:
az group delete --name <resource-group-name> --yes --no-wait
az group delete --name <db-resource-group-name> --yes --no-wait
Pasos siguientes
Para obtener más información sobre cómo ejecutar WebLogic Server en AKS o máquinas virtuales, siga estos vínculos:
Para más información sobre las ofertas de Oracle WebLogic en Azure Marketplace, consulte Oracle WebLogic Server en Azure. Estas ofertas son todas Traiga su propia licencia. Asumen que ya tiene las licencias adecuadas con Oracle y tienen una licencia adecuada para ejecutar ofertas en Azure.
Azure Kubernetes Service