Share via


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:

  • Ejecutar Java, Java EE o Jakarta EE en Oracle WebLogic Server (WLS).
  • Cree rápidamente clústeres de WLS mediante la oferta de Azure Marketplace.
  • Compilar la imagen de Docker de la aplicación para que sirva como imagen auxiliar para proporcionar modelos y aplicaciones de WebLogic Deploy Tooling (WDT).
  • Implementar la aplicación contenedorizada en el clúster de WLS existente en AKS con conexión a Microsoft Azure SQL.

En este artículo se usa la oferta de Azure Marketplace para WLS 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 WebLogic.
  • Una Imagen de contenedor que incluye el entorno de ejecución de WebLogic.
  • Un clúster de WLS sin una aplicación.

En este artículo se presenta la creación paso a paso de una imagen auxiliar para actualizar un clúster de WLS existente. La imagen auxiliar proporciona modelos de aplicación y de WDT.

Para que la automatización sea completa, puede seleccionar la aplicación y configurar la conexión del origen de datos desde Azure Portal antes de implementar la oferta. Para ver la oferta, visite el Azure Portal.

Para obtener instrucciones paso a paso sobre cómo configurar WebLogic Server en Azure Kubernetes Service, consulte la documentación oficial de Oracle en Azure Kubernetes Service.

Prerrequisitos

  • 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 WLS.
    • 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.

      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.

    • Acepta el acuerdo de licencia.
  • 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.
    • Docker. Este documento se probó con la versión 20.10.7 de Docker. Use docker info para probar si se ejecuta el demonio de Docker.
    • kubectl. Use kubectl version para probar si kubectl funciona. Este documento se probó con la versión 1.21.2.
    • Un JDK de Java compatible con la versión de WLS que pretende ejecutar. El artículo le indica que instale una versión de WLS que use JDK 11. Azure recomienda Microsoft Build of OpenJDK. 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 si zip/unzip funciona.
  • Todos los pasos de este artículo, excepto los que involucran a Docker, también se pueden ejecutar en Azure Cloud Shell. Para más información sobre Azure Cloud Shell, consulte ¿Qué es Azure Cloud Shell?

Implementación de WLS en AKS

Los pasos de esta sección le dirigen a implementar WLS en AKS de la manera más sencilla posible. WLS en AKS ofrece una amplia y profunda selección de integraciones de Azure. Para obtener más información, consulte ¿Cuáles son las soluciones para ejecutar Oracle WebLogic Server en Azure Kubernetes Service?

En los pasos siguientes se muestra cómo encontrar la oferta de WLS en AKS y rellenar el panel Aspectos básicos.

  1. En la barra de búsqueda de la parte superior de Azure Portal, escriba weblogic. En los resultados de búsqueda sugeridos automáticamente, en la sección Marketplace, seleccione WebLogic Server en AKS.

    Captura de pantalla de Azure Portal en la que se muestra WLS en los resultados de la búsqueda.

    También puede ir directamente a la oferta de WebLogic Server en AKS.

  2. En la página de la oferta, seleccione Crear.

  3. 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.

    Captura de pantalla de Azure Portal en la que se muestra WebLogic Server en AKS.

  4. 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.

  5. 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.

  6. En Credenciales para WebLogic, deje el valor predeterminado para Nombre de usuario del administrador de WebLogic.

  7. 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.

  8. Desplácese hasta la parte inferior del panel Aspectos básicos y observe los vínculos útiles para la documentación, el soporte técnico de la comunidad y cómo notificar problemas.

  9. Seleccione Siguiente.

En los pasos siguientes se muestra cómo iniciar el proceso de implementación.

  1. 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.

    Captura de pantalla de Azure Portal en la que se muestra el panel de SSO configurado.

  2. Siga los pasos del cuadro de información, empezando por Antes de avanzar debe aceptar los términos y restricciones estándar de Oracle.

  3. 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.

  4. 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 WLS, JDK y del SO.

  5. 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 WLS 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?

Captura de pantalla de Azure Portal en la que se muestra la configuración más simple del equilibrador de carga en la página Crear una instancia de Oracle WebLogic Server en Azure Kubernetes Service.

  1. Seleccione Siguiente para ver el panel TLS/SSL.

  2. Seleccione Siguiente para ver el panel Equilibrio de carga.

  3. Junto a Opciones de equilibrio de carga, seleccione Application Gateway Ingress Controller.

  4. 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.

  5. En Crear entrada para la consola de administración, seleccione .

    Captura de pantalla de Azure Portal en la que se muestra la configuración del controlador de entrada de Application Gateway en la página Crear una instancia de Oracle WebLogic Server en Azure Kubernetes Service.

  6. Deje los valores predeterminados en los restantes campos.

  7. Seleccione Revisar + crear. Asegúrese de que la validación no genera un error. Si lo genera, corrija los problemas de validación y vuelva a seleccionar Revisar y crear.

  8. Seleccione Crear.

  9. 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.

Mientras espera, puede realizar los pasos que se indican en la sección Creación de una instancia de Azure SQL Database. Vuelva a esta sección cuando termine de crear la base de datos.

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.

  1. En la esquina de cualquier página de Azure Portal, seleccione el menú de la hamburguesa y seleccione Grupos de recursos.

  2. 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.

  3. 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.

  4. 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.

    Captura de pantalla de Azure Portal en la que se muestra la lista de implementaciones del grupo de recursos.

  5. 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.

  6. El valor adminConsoleExternalUrl es el vínculo completo y visible de Internet público a la consola de administración de WLS 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.

  7. El valor clusterExternalUrl es el vínculo completo y visible de Internet público a la aplicación de ejemplo implementada en WLS 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.

  8. El valor shellCmdtoOutputWlsImageModelYaml es la cadena en base64 del modelo WDT que creó la imagen de contenedor. Guarde este valor para más adelante.

  9. El valor shellCmdtoOutputWlsImageProperties es la cadena en base64 de las propiedades del modelo WDT que creó la imagen de contenedor. Guarde este valor para más adelante.

  10. El valor shellCmdtoConnectAks es el comando de la CLI de Azure para conectarse a este clúster de AKS específico. Esto le permite usar kubectl para administrar el clúster.

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.

Crear una instancia de Azure SQL Database

Para crear una base de datos única de Azure SQL Database a fin de usarla con la aplicación, siga los pasos descritos en Inicio rápido: Creación de una base de datos única en Azure SQL Database. Tenga en cuenta las siguientes diferencias:

  • En el paso Aspectos básicos, anote los valores de Grupo de recursos, Nombre de la base de datos, <server-name>.database.windows.net, Inicio de sesión del administrador del servidor y Contraseña. En este artículo se hace referencia al valor Grupo de recursos de la base de datos como <db-resource-group>.

  • En el paso Redes, establezca Método de conectividad en Punto de conexión público, establezca Permitir que los servicios y recursos de Azure accedan a este servidor en y establezca Agregar dirección IP de cliente actual en .

    Captura de pantalla de Azure Portal que muestra la pestaña Redes de la página Crear base de datos SQL con la configuración de reglas de firewall y método de conectividad resaltada.

Nota:

El nivel de proceso sin servidor seleccionado para esta base de datos ahorra dinero colocando la base de datos en suspensión durante períodos de inactividad. Se producirá un error en la aplicación de ejemplo si la base de datos está inactiva cuando se inicia la aplicación.

Para forzar la reactivación de la base de datos, puede ejecutar una consulta mediante el editor de consultas. Siga los pasos descritos en Consultar la base de datos. Esta es una consulta de ejemplo: SELECT * FROM COFFEE;.

  1. Cree un esquema para la aplicación de ejemplo. Siga Consultar la base de datos para abrir el panel Editor de consultas. Escriba la siguiente consulta y ejecútela:

    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: 0. Si no ve este mensaje, solucione el problema antes de continuar.

Se crean la base de datos, las tablas, el clúster de AKS y el clúster de WLS. Si lo desea, puede explorar la consola de administración. Para ello, debe abrir un explorador y navegar a la dirección de adminConsoleExternalUrl. Inicie sesión con los valores que especificó durante la implementación de WLS en AKS.

Puede pasar a preparar AKS para que hospede la aplicación WebLogic.

Configuración e implementación de la aplicación de ejemplo

La oferta aprovisiona el clúster de WLS mediante un modelo en la imagen. Actualmente, el clúster de WLS no tiene ninguna aplicación implementada.

En esta sección se actualiza el clúster de WLS 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.

Uso de Docker 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
  • El archivo del controlador 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:

  1. 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
    
  2. 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"
    
  3. 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
    
  4. Siga estos pasos para crear el archivo del modelo de aplicación.

    1. 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
      
    2. 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
      
  5. Use los siguientes comandos para descargar e instalar el controlador JDBC de Microsoft SQL Server en 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
    
  6. A continuación, use los siguientes comandos para crear el archivo del modelo de conexión de base de datos con el contenido que se muestra. Guarde el archivo del modelo en ${BASE_DIR}/mystaging/models/dbmodel.yaml. El modelo usa marcadores de posición (secreto sqlserver-secret) para el nombre de usuario, la contraseña y la dirección URL de la base de datos. Asegúrese de que los siguientes campos están configurados correctamente. El siguiente modelo asigna un nombre al recurso con jdbc/WebLogicCafeDB.

    Nombre del elemento Campo Valor
    Nombre de JNDI resources.JDBCSystemResource.<resource-name>.JdbcResource.JDBCDataSourceParams.JNDIName jdbc/WebLogicCafeDB
    Nombre del controlador resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.DriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
    URL de base de datos resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.URL @@SECRET:sqlserver-secret:url@@
    Contraseña de la base de datos resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.PasswordEncrypted @@SECRET:sqlserver-secret:password@@
    Nombre de usuario de la base de datos resources.JDBCSystemResource.<resource-name>.JDBCDriverParams.Properties.user.Value '@@SECRET:sqlserver-secret:user@@'
    cat <<EOF >dbmodel.yaml
    resources:
      JDBCSystemResource:
        jdbc/WebLogicCafeDB:
          Target: 'cluster-1'
          JdbcResource:
            JDBCDataSourceParams:
              JNDIName: [
                jdbc/WebLogicCafeDB
              ]
              GlobalTransactionsProtocol: None
            JDBCDriverParams:
              DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
              URL: '@@SECRET:sqlserver-secret:url@@'
              PasswordEncrypted: '@@SECRET:sqlserver-secret:password@@'
              Properties:
                user:
                  Value: '@@SECRET:sqlserver-secret:user@@'
            JDBCConnectionPoolParams:
              TestTableName: SQL SELECT 1
              TestConnectionsOnReserve: true
    EOF
    
  7. Use los siguientes comandos para crear un archivo de aplicación y, después, quite la carpeta wlsdeploy, ya que no la necesita:

    cd ${BASE_DIR}/mystaging/models
    zip -r archive.zip wlsdeploy
    
    rm -f -r wlsdeploy
    
  8. 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
    
  9. Use el siguiente comando para quitar el instalador de WDT:

    rm weblogic-deploy.zip
    
  10. Use los siguientes comandos para compilar una imagen auxiliar mediante 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
    # ARG expansion in COPY command's --chown is available in docker version 19.03.1+.
    # For older docker versions, change the Dockerfile to use separate COPY and 'RUN chown' commands.
    COPY --chown=\$USER:\$GROUP ./ \${AUXILIARY_IMAGE_PATH}/
    USER \$USER
    EOF
    
  11. Ejecute el comando docker buildx build mediante ${BASE_DIR}/mystaging/Dockerfile, como se muestra en el ejemplo siguiente:

    cd ${BASE_DIR}/mystaging
    docker buildx build --platform linux/amd64 --build-arg AUXILIARY_IMAGE_PATH=/auxiliary --tag model-in-image:WLS-v1 .
    

    Si la imagen se compila correctamente, la salida es similar a la del ejemplo siguiente:

    [+] Building 12.0s (8/8) FINISHED                                   docker:default
    => [internal] load build definition from Dockerfile                          0.8s
    => => transferring dockerfile: 473B                                          0.0s
    => [internal] load .dockerignore                                             1.1s
    => => transferring context: 2B                                               0.0s
    => [internal] load metadata for docker.io/library/busybox:latest             5.0s
    => [1/3] FROM docker.io/library/busybox@sha256:6d9ac9237a84afe1516540f40a0f  0.0s
    => [internal] load build context                                             0.3s
    => => transferring context: 21.89kB                                          0.0s
    => CACHED [2/3] RUN adduser -D -u 1000 -G root oracle                        0.0s
    => [3/3] COPY --chown=oracle:root ./ /auxiliary/                             1.5s
    => exporting to image                                                        1.3s
    => => exporting layers                                                       1.0s
    => => writing image sha256:2477d502a19dcc0e841630ea567f50d7084782499fe3032a  0.1s
    => => naming to docker.io/library/model-in-image:WLS-v1                      0.2s
    
  12. Si ha creado correctamente la imagen, debería estar ahora en el repositorio de Docker de la máquina local. Para comprobar la creación de la imagen, utilice el siguiente comando:

    docker images model-in-image:WLS-v1
    

    Este comando debería generar una salida similar a la del siguiente ejemplo:

    REPOSITORY       TAG       IMAGE ID       CREATED       SIZE
    model-in-image   WLS-v1    76abc1afdcc6   2 hours ago   8.61MB
    

    Una vez que se crea la imagen, debe tener los archivos ejecutables de WDT en /auxiliary/weblogic-deploy y el modelo WDT, la propiedad y los archivos en /auxiliary/models. Use el siguiente comando en la imagen de Docker para comprobar este resultado:

    docker run -it --rm model-in-image:WLS-v1 find /auxiliary -maxdepth 2 -type f -print
    

    Este comando debería generar una salida similar a la del siguiente ejemplo:

    /auxiliary/models/model.properties
    /auxiliary/models/dbmodel.yaml
    /auxiliary/models/model.yaml
    /auxiliary/models/archive.zip
    /auxiliary/models/appmodel.yaml
    /auxiliary/Dockerfile
    /auxiliary/weblogic-deploy/LICENSE.txt
    /auxiliary/weblogic-deploy/VERSION.txt
    
  13. Siga estos pasos para insertar la imagen auxiliar en Azure Container Registry:

    1. Abra Azure Portal y vaya al grupo de recursos que aprovisionó en la sección Implementación de WSL en AKS.

    2. Seleccione el recurso del tipo Container Registry en la lista de recursos.

    3. Mantenga el mouse sobre el valor que se encuentra junto a Servidor de inicio de sesión y seleccione el icono de copia situado junto al texto.

    4. Guarde el valor en la variable de entorno ACR_LOGIN_SERVER, para lo que debe usar el siguiente comando:

      export ACR_LOGIN_SERVER=<value-from-clipboard>
      
    5. Ejecute los siguientes comandos para etiquetar y extraer la imagen. Asegúrese de que Docker está en ejecución antes de ejecutar estos comandos.

      export ACR_NAME=$(echo ${ACR_LOGIN_SERVER} | cut -d '.' -f 1)
      az acr login -n $ACR_NAME
      docker tag model-in-image:WLS-v1 $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      docker push $ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0
      
    6. 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 wlsaks-auxiliary-image:1.0
      

      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. Antes de aplicar esta imagen al clúster de WLS, siga estos pasos para crear el secreto de la dirección URL, el nombre de usuario y la contraseña del origen de dato. El secreto se usa como parte del marcador de posición de dbmodel.yaml.

  1. 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
    
  2. Siga estos pasos para obtener los valores de las variables que se muestran en la siguiente tabla. Estos valores se usarán más adelante para crear el secreto de la conexión del origen de datos.

    Variable Descripción Ejemplo
    DB_CONNECTION_STRING La cadena de conexión del servidor de SQL Server. jdbc:sqlserver://sqlserverforwlsaks.database.windows.net:1433;database=wlsaksquickstart0125
    DB_USER El nombre de usuario para iniciar sesión en el servidor de SQL Server. welogic@sqlserverforwlsaks
    DB_PASSWORD Escriba la contraseña para iniciar sesión en el servidor de SQL Server. Secret123456
    1. Visite el recurso base de datos SQL en Azure Portal.

    2. En el panel de navegación, en Configuración seleccione Cadenas de conexión.

    3. Seleccione la pestaña JDBC.

    4. Seleccione el icono para copiar la cadena de conexión en el portapapeles.

    5. En DB_CONNECTION_STRING, use toda la cadena de conexión, pero reemplace el marcador de posición {your_password_here} por la contraseña de la base de datos.

    6. En DB_USER, use la parte de la cadena de conexión de azureuser hasta ;password={your_password_here}, pero sin incluirlo.

    7. En DB_PASSWORD, use el valor que especificó al crear la base de datos.

  3. Use los siguientes comandos para crear el secreto de Kubernetes. En este artículo se usa el nombre sqlserver-secret para el secreto de la conexión del origen de datos. Si usa otro nombre, asegúrese de que el valor sea el mismo que el de dbmodel.yaml.

    En los siguientes comandos, asegúrese de establecer las variables DB_CONNECTION_STRING, DB_USER y DB_PASSWORD correctamente, para lo que debe reemplazar los ejemplos de marcador de posición por los valores descritos en los pasos anteriores. Asegúrese de escribir el valor de las variables DB_ entre comillas simples para evitar que el shell interfiera con los valores.

    export DB_CONNECTION_STRING='<example-jdbc:sqlserver://sqlserverforwlsaks.database.windows.net:1433;database=wlsaksquickstart0125>'
    export DB_USER='<example-welogic@sqlserverforwlsaks>'
    export DB_PASSWORD='<example-Secret123456>'
    export WLS_DOMAIN_NS=sample-domain1-ns
    export WLS_DOMAIN_UID=sample-domain1
    export SECRET_NAME=sqlserver-secret
    
    kubectl -n ${WLS_DOMAIN_NS} create secret generic \
        ${SECRET_NAME} \
        --from-literal=password="${DB_PASSWORD}" \
        --from-literal=url="${DB_CONNECTION_STRING}" \
        --from-literal=user="${DB_USER}"
    
    kubectl -n ${WLS_DOMAIN_NS} label secret \
        ${SECRET_NAME} \
        weblogic.domainUID=${WLS_DOMAIN_UID}
    

    Debe ver la siguiente salida para poder continuar. Si no ve esta salida, solucione el problema antes de continuar.

    secret/sqlserver-secret created
    secret/sqlserver-secret labeled
    
  4. 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. Para más información, consulte Imágenes auxiliares.

    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 use kubectl 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))
    
    cat <<EOF >patch-file.json
    [
      {
        "op": "replace",
        "path": "/spec/restartVersion",
        "value": "${VERSION}"
      },
      {
        "op": "add",
        "path": "/spec/configuration/model/auxiliaryImages",
        "value": [{"image": "$ACR_LOGIN_SERVER/wlsaks-auxiliary-image:1.0", "imagePullPolicy": "IfNotPresent", "sourceModelHome": "/auxiliary/models", "sourceWDTInstallHome": "/auxiliary/weblogic-deploy"}]
      },
      {
        "op": "add",
        "path": "/spec/configuration/secrets",
        "value": ["${SECRET_NAME}"]
      }
    ]
    EOF
    
    kubectl -n ${WLS_DOMAIN_NS} patch domain ${WLS_DOMAIN_UID} \
        --type=json \
        --patch-file patch-file.json
    
    kubectl get pod -n ${WLS_DOMAIN_NS} -w
    
  5. Espere hasta que el servidor de administración y los servidores administrados muestren los valores en el siguiente bloque de salida antes de continuar:

    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 WLS y la aplicación de ejemplo:

  1. 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 WLS.

  2. Inicie sesión con el nombre de usuario weblogic y la contraseña que especificó al implementar WLS desde Azure Portal. Recuerde que este valor es wlsAksCluster2022.

  3. En el cuadro Estructura del dominio, seleccione Servicios.

  4. En Servicios, seleccione Orígenes de datos.

  5. 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.

    Captura de pantalla del estado del origen de datos.

  6. En el cuadro Estructura de dominio, seleccione Implementaciones.

  7. 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.

  8. En el panel Configuración, seleccione la pestaña Pruebas.

  9. Seleccione weblogic-cafe.

  10. En el panel Configuración de weblogic-cafe, seleccione la pestaña Pruebas.

  11. 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.

    Captura de pantalla de los puntos de prueba de weblogic-cafe.

    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 WLS simplemente a modo de demostración. No use la consola de administración de WLS para realizar cambios de configuración duraderos al ejecutar WLS en AKS. El diseño nativo de la nube de WLS 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.

  12. Conozca el valor context-path de la aplicación de ejemplo que implementó. Si ha implementado la aplicación de ejemplo recomendada, context-path es weblogic-cafe.

  13. 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 a http://wlsgw202401-wls-aks-domain1.eastus.cloudapp.azure.com/weblogic-cafe/.

  14. 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:

    Captura de pantalla de la aplicación web de prueba.

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 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 WLS en AKS o máquinas virtuales, siga estos vínculos: