Compartir a través de


Implementación de una aplicación Java con Open Liberty o WebSphere Liberty en un clúster de Azure Kubernetes Service (AKS)

En este artículo se explica cómo:

  • Ejecutar una aplicación Java, Java EE, Yakarta EE o MicroProfile en el runtime de Open Liberty o IBM WebSphere Liberty.
  • Compile la imagen de Docker de la aplicación con az acr build mediante imágenes de contenedor de Open Liberty o WebSphere Liberty.
  • Implemente la aplicación contenedorizada en un clúster de Azure Kubernetes Service (AKS) mediante el operador de Open Liberty o el operador de WebSphere Liberty.

El operador de Open Liberty simplifica la implementación y administración de las aplicaciones que se ejecutan en clústeres de Kubernetes. Con el operador de Open Liberty o WebSphere Liberty, también puede realizar operaciones más avanzadas, como recopilar seguimientos y volcados.

En este artículo se usa la oferta de Azure Marketplace para Open Liberty o WebSphere Liberty para acelerar su transición a AKS. La oferta aprovisiona automáticamente algunos recursos de Azure, entre los que se incluyen:

  • Una instancia de Azure Container Registry.
  • Un clúster de AKS.
  • Una instancia del controlador de entrada de Application Gateway (AGIC).
  • El operador de Open Liberty y el operador de WebSphere Liberty.
  • Opcionalmente, una imagen de contenedor que incluye Liberty y la aplicación.

Si prefiere una guía manual paso a paso para ejecutar Liberty en AKS, consulte Implementación manual de una aplicación Java con Open Liberty o WebSphere Liberty en un clúster de Azure Kubernetes Service (AKS).

Este artículo está diseñado para ayudarle a llegar rápidamente a la implementación. Antes de ir a producción, debe explorar la documentación de IBM sobre el ajuste de Liberty.

Si está interesado en proporcionar comentarios o trabajar estrechamente en sus escenarios de migración con el equipo de ingeniería que desarrolla WebSphere en soluciones de Azure, rellene esta breve encuesta sobre la migración de WebSphere 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

  • Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
  • Prepare un equipo local con un sistema operativo similar a Unix instalado: por ejemplo, Ubuntu, Azure Linux, macOS o Subsistema de Windows para Linux.
  • Para ejecutar comandos de la CLI de Azure, instale la CLI de Azure.
    • Inicie sesión en la CLI de Azure con el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión en Azure con la CLI de Azure.
    • En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
    • Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade. Este artículo requiere al menos la versión 2.61.0 de la CLI de Azure.
  • Instale una implementación de Java Standard Edition (SE), versión 17 o posterior (por ejemplo, Eclipse Open J9).
  • Instale Maven 3.9.8 o una versión superior.
  • Asegúrese de que Git está instalado.
  • Asegúrese de que se le haya asignado el rol Owner o los roles Contributor y User Access Administrator en la suscripción. Puede comprobarlo siguiendo los pasos descritos en Lista de las asignaciones de rol de un usuario o grupo.

Creación de una implementación de Liberty en AKS mediante el portal

Los siguientes pasos le guiarán para crear un tiempo de ejecución de Liberty en AKS. Después de completar estos pasos, tendrá una instancia de Container Registry y un clúster de AKS para implementar la aplicación contenedorizada.

  1. Vaya a Azure Portal. En el cuadro de búsqueda de la parte superior de la página, escriba WebSphere Liberty/Open Liberty en Kubernetes. Cuando aparezcan las sugerencias, seleccione la única coincidencia en la sección Marketplace.

    Si lo prefiere, puede ir directamente a la oferta.

  2. Seleccione Crear.

  3. En el panel Aspectos básicos:

    1. Crear un nuevo 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, ejb0913-java-liberty-project-rg). Guarde el nombre del grupo de recursos para utilizarlo más adelante en este artículo.
    2. En Región, seleccione una región cercana. Por ejemplo, seleccione Este de EE. UU. 2.
  4. Seleccione Siguiente. En el panel AKS, puede seleccionar opcionalmente un clúster de AKS existente y una instancia de Container Registry, en lugar de hacer que la implementación cree unos nuevos. Esta opción le permite usar el patrón sidecar, como se muestra en el Centro de arquitectura de Azure. También puede ajustar la configuración del tamaño y el número de máquinas virtuales del grupo de nodos de AKS.

    Para los fines de este artículo, mantenga todos los valores predeterminados en este panel.

  5. Seleccione Siguiente. En el panel Equilibrio de carga, junto a ¿Quiere conectarse a Azure Application Gateway?, seleccione . En esta sección, puede personalizar las siguientes opciones de implementación:

    • Opcionalmente, puede personalizar la red virtual y la subred en las que la implementación colocará los recursos. No es necesario cambiar los valores restantes de sus valores predeterminados.

    • En Certificado TLS/SSL, puede proporcionar el certificado TLS/SSL de Azure Application Gateway. Deje los valores predeterminados para que la oferta genere un certificado autofirmado.

      No pase a producción con un certificado autofirmado. Para obtener más información sobre los certificados autofirmados, consulte Creación de un certificado público autofirmado para autenticar la aplicación.

    • Puede seleccionar Habilitar afinidad basada en cookies, también conocida como "sesiones permanentes". En este artículo se usan sesiones permanentes, así que asegúrese de seleccionar esta opción.

  6. Seleccione Siguiente. En el panel Operador y aplicación, en este artículo se usan todos los valores predeterminados. Sin embargo, puede personalizar las siguientes opciones de implementación:

    • Puede implementar el operador de WebSphere Liberty seleccionando en la opción ¿Es compatible con IBM?. Al dejar el valor predeterminado No, se implementará Open Liberty Operator.
    • Puede implementar una aplicación para el operador seleccionado eligiendo en la opción ¿Quiere implementar una aplicación?. Si se deja el valor predeterminado No, no se implementará ninguna aplicación.
  7. Seleccione Revisar y crear para validar las opciones seleccionadas. En el panel Revisar y crear, cuando vea la opción Crear activada después de superar la validación, selecciónela.

    La implementación puede tardar hasta 20 minutos. Mientras espera a que finalice la implementación, puede seguir los pasos descritos en la sección Creación de una instancia de Azure SQL Database. Después de completar esa sección, vuelva aquí y continúe.

Captura de la información seleccionada de la implementación

Si ha salido del panel La implementación está en curso, los pasos siguientes le muestran cómo volver a ese panel. Si todavía está en el panel que indica Se completó la implementación, vaya al grupo de recursos recién creado y continúe con el tercer paso.

  1. En la esquina de cualquier página del portal, seleccione el botón de menú y, después. 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, después, seleccione el grupo de recursos adecuado.

  3. En la lista de recursos del grupo de recursos, seleccione el recurso con el valor de Tipo establecido en Registro de contenedor.

  4. En el panel de navegación, en Configuración, seleccione Claves de acceso.

  5. Guarde en otro lugar los valores de Nombre de registro y Servidor de inicio de sesión. Puede usar el icono de copia situado junto a cada campo para copiar el valor en el Portapapeles del sistema.

    Nota:

    En este artículo se usa el comando az acr build para compilar e insertar la imagen de Docker en Container Registry, sin usar username y password de Container Registry. Todavía es posible usar el nombre de usuario y la contraseña con docker login y docker push. El uso del nombre de usuario y la contraseña es menos seguro que la autenticación sin contraseña.

  6. Vuelva al grupo de recursos en el que implementó los recursos.

  7. En la sección Configuración, seleccione Implementaciones.

  8. Seleccione la implementacióne inferior de la lista. El valor de Nombre de implementación coincidirá con el identificador del publicador de la oferta. Contiene la cadena ibm.

  9. En el panel de navegación, seleccione Salidas.

  10. Mediante la misma técnica de copia que usó con los valores anteriores, guarde en otro lugar los valores de las salidas siguientes:

    • cmdToConnectToCluster

    • appDeploymentTemplateYaml si la implementación no incluye una aplicación. Es decir, ha seleccionado No en ¿Quiere implementar una aplicación? al implementar la oferta de Marketplace. En este artículo se ha seleccionado No. Pero si ha seleccionado , guarde el valor de appDeploymentYaml, que incluye la implementación de la aplicación.

      Pegue el valor de appDeploymentTemplateYaml o appDeploymentYaml en un shell de Bash y ejecute el comando.

      La salida de este comando es el código YAML de implementación de la aplicación. Busque el secreto TLS de entrada con la palabra clave secretName, como - secretName: secret785e2c. Guarde el valor de secretName.

Ejecute los siguientes comandos para establecer las variables de entorno que ha capturado en los pasos anteriores. Estas variables de entorno se usan más adelante en este artículo.

export RESOURCE_GROUP_NAME=<your-resource-group-name>
export REGISTRY_NAME=<your-registry-nam-of-container-registry>
export LOGIN_SERVER=<your-login-server-of-container-registry>
export INGRESS_TLS_SECRET=<your-ingress-tls-secret-name>

Creación de una instancia de Azure SQL Database

En esta sección, creará una base de datos única de Azure SQL Database para usarla con la aplicación.

En primer lugar, establezca variables de entorno relacionadas con la base de datos. Reemplace <your-unique-sql-server-name> por un nombre único para el servidor de Azure SQL Database.

export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb

Ejecute el siguiente comando en el terminal para crear una base de datos única en Azure SQL Database y establecer el usuario que ha iniciado sesión actualmente como administrador de Microsoft Entra. Para más información, vea Inicio rápido: Creación de una base de datos única: Azure SQL Database.

export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)

az sql server create \
    --name $SQL_SERVER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --enable-ad-only-auth \
    --external-admin-principal-type User \
    --external-admin-name $ENTRA_ADMIN_NAME \
    --external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name $DB_NAME \
    --edition GeneralPurpose \
    --compute-model Serverless \
    --family Gen5 \
    --capacity 2

Después, agregue la dirección IP local a las reglas de firewall del servidor de Azure SQL Database para permitir que la máquina local se conecte a la base de datos para realizar pruebas locales más adelante.

export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP \
    --start-ip-address $AZ_LOCAL_IP_ADDRESS \
    --end-ip-address $AZ_LOCAL_IP_ADDRESS

Nota:

En este artículo se deshabilita la autenticación de SQL para ilustrar los procedimientos recomendados de seguridad. Se usa Microsoft Entra ID para autenticar la conexión con el servidor. Si necesita habilitar la autenticación de SQL, vea az sql server create.

Creación de una conexión de servicio en AKS con Service Connector

En esta sección, creará una conexión de servicio entre el clúster de AKS y Azure SQL Database mediante Id. de carga de trabajo de Microsoft Entra con Service Connector. Esta conexión permite que el clúster de AKS acceda a Azure SQL Database sin usar la autenticación de SQL.

En primer lugar, conceda a la aplicación permisos de proveedor de recursos de Azure Service Connector para la instancia de Application Gateway implementada antes. Este paso es necesario para crear correctamente una conexión de servicio entre el clúster de AKS y Azure SQL Database.

  1. Vaya a Azure Portal y vaya al grupo de recursos que ha creado antes.
  2. En la lista de recursos del grupo de recursos, seleccione el recurso con el valor Tipo establecido en Puerta de enlace de aplicación.
  3. Seleccione Control de acceso (IAM). Después, expanda Agregar y seleccione Agregar asignación de roles.
  4. En la pestaña Rol, seleccione Roles de administrador con privilegios. Después, seleccione Colaborador. Seleccione Siguiente.
  5. En la pestaña Miembros, seleccione Seleccionar miembros. Después, busque la aplicación Proveedor de recursos de Azure Service Connector. Elija la aplicación y seleccione Seleccionar. Seleccione Siguiente.
  6. Seleccione Revisar + asignar. Espere unos segundos a que se complete la asignación de roles.

Después, ejecute los comandos siguientes para crear una conexión entre el clúster de AKS y la base de datos SQL mediante Id. de carga de trabajo de Microsoft Entra con Service Connector. Para más información, vea Creación de una conexión de servicio en AKS con Service Connector (versión preliminar).

# Register the Service Connector and Kubernetes Configuration resource providers
az provider register --namespace Microsoft.ServiceLinker --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait

# Install the Service Connector passwordless extension
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true

# Retrieve the AKS cluster and Azure SQL Server resource IDs
export AKS_CLUSTER_RESOURCE_ID=$(az aks show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --query id \
    --output tsv)
export AZURE_SQL_SERVER_RESOURCE_ID=$(az sql server show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $SQL_SERVER_NAME \
    --query id \
    --output tsv)

# Create a user-assigned managed identity used for workload identity
export USER_ASSIGNED_IDENTITY_NAME=workload-identity-uami
az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME}

# Retrieve the user-assigned managed identity resource ID
export UAMI_RESOURCE_ID=$(az identity show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${USER_ASSIGNED_IDENTITY_NAME} \
    --query id \
    --output tsv)

# Create a service connection between your AKS cluster and your SQL database using Microsoft Entra Workload ID
az aks connection create sql \
    --connection akssqlconn \
    --client-type java \
    --source-id $AKS_CLUSTER_RESOURCE_ID \
    --target-id $AZURE_SQL_SERVER_RESOURCE_ID/databases/$DB_NAME \
    --workload-identity $UAMI_RESOURCE_ID

Nota:

Se recomienda usar Id. de carga de trabajo de Microsoft Entra para el acceso seguro a la instancia de Azure SQL Database sin usar la autenticación de SQL. Si necesita usar la autenticación de SQL, omita los pasos anteriores de esta sección y use el nombre de usuario y la contraseña para conectarse a Azure SQL Database.

Obtención de la cuenta de servicio y el secreto creado por el conector de servicio

Para autenticarse en Azure SQL Database, debe obtener la cuenta de servicio y el secreto creados por Service Connector. Siga las instrucciones de la sección Actualización del contenedor de Tutorial: Conexión de una aplicación de AKS a Azure SQL Database. Elija la opción Crear directamente una implementación mediante el fragmento de código de ejemplo de YAML proporcionado y siga estos pasos:

  1. En las secciones resaltadas del ejemplo de código YAML de implementación de Kubernetes, copie los valores serviceAccountName y secretRef.name, como se muestra en el ejemplo siguiente:

    serviceAccountName: <service-account-name>
    containers:
    - name: raw-linux
       envFrom:
          - secretRef:
             name: <secret-name>
    
  2. Use los siguientes comandos para definir variables de entorno. Reemplace <service-account-name> y <secret-name> por los valores que copió en el paso anterior.

    export SERVICE_ACCOUNT_NAME=<service-account-name>
    export SECRET_NAME=<secret-name>
    

    Estos valores se usan en la sección siguiente para implementar la aplicación Liberty en el clúster de AKS.

Nota:

El secreto creado por Service Connector contiene AZURE_SQL_CONNECTIONSTRING, que es una cadena de conexión sin contraseña a la instancia de Azure SQL Database. Para más información, vea el valor de ejemplo en la sección Autenticación de identidad administrada asignada por el usuario de Integración de Azure SQL Database con Service Connector.

Ahora que ha configurado la base de datos y el clúster de AKS, puede continuar con la preparación de AKS para hospedar la aplicación Open Liberty.

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

Siga los pasos que aparecen en esta sección para implementar la aplicación de ejemplo en el entorno de ejecución de Liberty. Esos pasos usan Maven.

Extracción de la aplicación

Clone el código de ejemplo de este artículo. El ejemplo se encuentra en GitHub.

Hay algunos ejemplos en el repositorio. En este artículo se usa java-app. Ejecute los siguientes comandos para obtener el ejemplo:

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20241107

Si ve un mensaje sobre estar en estado "HEAD desasociado", es seguro omitir este mensaje. El mensaje simplemente significa que ha extraído una etiqueta del repositorio.

Esta es la estructura de archivos de la aplicación, con los archivos y directorios importantes:

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ openlibertyapplication-agic-passwordless-db.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml
├─ pom-azure-identity.xml

Los directorios java, resources y webapp contienen el código fuente de la aplicación de ejemplo. El código declara y usa un origen de datos denominado jdbc/JavaEECafeDB.

En el directorio aks, el archivo openlibertyapplication-agic-passwordless-db.yaml se usa para implementar la imagen de la aplicación con AGIC y conexión sin contraseña a Azure SQL Database. En este artículo se da por supuesto que usa este archivo.

En el directorio docker, hay dos archivos para crear la imagen de aplicación con Open Liberty o WebSphere Liberty.

En el directorio liberty/config, el archivo server.xml se usa para configurar la conexión de base de datos para el clúster de Open Liberty y WebSphere Liberty. Define una variable azure.sql.connectionstring que se usa para conectarse a la instancia de Azure SQL Database.

El archivo pom.xml es el archivo del modelo de objetos de proyecto (POM) de Maven que contiene la información de configuración del proyecto. El archivo pom-azure-identity.xml declara una dependencia de azure-identity. Este archivo se usa para autenticarse en los servicios de Azure mediante Microsoft Entra ID.

Nota:

En este ejemplo se usa la biblioteca azure-identity para autenticarse en Azure SQL Database mediante la autenticación de Microsoft Entra. Si necesita usar la autenticación de SQL en la aplicación Liberty, vea Conexiones de base de datos relacionales con JDBC.

Compilación del proyecto

Ahora que ha recopilado las propiedades necesarias, compile la aplicación. El archivo POM del proyecto lee muchas variables del entorno. Como parte de la compilación de Maven, estas variables se usan para rellenar los valores de los archivos YAML ubicados en src/main/aks. Si lo prefiere, puede hacer algo similar para la aplicación fuera de Maven.

cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=${LOGIN_SERVER}
export SC_SERVICE_ACCOUNT_NAME=${SERVICE_ACCOUNT_NAME}
export SC_SECRET_NAME=${SECRET_NAME}
export INGRESS_TLS_SECRET=${INGRESS_TLS_SECRET}

mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources

Prueba local del proyecto

Ejecute y pruebe el proyecto localmente antes de implementarlo en Azure. Para mayor comodidad, en este artículo se usa liberty-maven-plugin. Para obtener más información sobre liberty-maven-plugin, consulte el artículo Creación de una aplicación web con Maven de Open Liberty.

Nota:

Si seleccionó una implementación de base de datos "sin servidor", compruebe que la base de datos SQL no ha entrado en modo de pausa. Una manera de hacerlo es iniciar sesión en el editor de consultas de la base de datos como se describe en Inicio rápido: Uso del editor de consultas de Azure Portal (versión preliminar) para consultar Azure SQL Database.

  1. Inicie la aplicación mediante liberty:run.

    cd $BASE_DIR/java-app
    
    # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by configuration variable `azure.sql.connectionstring` in server.xml
    export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault"
    mvn liberty:run
    
  2. Compruebe que la aplicación funciona según lo previsto. Debería ver un mensaje similar a [INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 18.235 seconds. en la salida del comando. Vaya a http://localhost:9080/ en el explorador y compruebe que la aplicación es accesible y que todas las funciones hacen su trabajo.

  3. Presione Ctrl+C para detener. Presione Y si se le pide que finalice el trabajo por lotes.

Cuando haya terminado, elimine la regla de firewall que permite que la dirección IP local acceda a la instancia de Azure SQL Database mediante el comando siguiente:

az sql server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP

Compilación de la imagen para la implementación de AKS

Ahora puede ejecutar el comando az acr build para compilar la imagen, como se muestra en el ejemplo siguiente:

cd $BASE_DIR/java-app/target

az acr build \
    --registry ${REGISTRY_NAME} \
    --image javaee-cafe:v1 \
    .

El comando az acr build carga los artefactos especificados en el Dockerfile en la instancia de Container Registry, compila la imagen y la almacena en la instancia de Container Registry.

Implemente la aplicación en el clúster de AKS.

Siga estos pasos para implementar la aplicación de Liberty en el clúster de AKS.

  1. Conéctese al clúster de AKS.

    Pegue el valor de cmdToConnectToCluster en un shell y ejecute el comando.

  2. Ejecute los comandos siguientes para aplicar el archivo de implementación:

    cd $BASE_DIR/java-app/target
    
    # Apply deployment file
    kubectl apply -f openlibertyapplication-agic-passwordless-db.yaml
    
  3. Espere hasta que todos los pods se reinicien correctamente con el comando siguiente:

    kubectl get pods --watch
    

    Un resultado similar al siguiente ejemplo indica que todos los pods se están ejecutando:

    NAME                                       READY   STATUS    RESTARTS   AGE
    javaee-cafe-cluster-agic-67cdc95bc-2j2gr   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-fgtt8   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-h47qm   1/1     Running   0          29s
    

Prueba de la aplicación

Cuando se ejecutan los pods, puede probar la aplicación mediante la dirección IP pública de la instancia de Application Gateway.

Ejecute el siguiente comando para obtener y mostrar la dirección IP pública de la instancia de Application Gateway, expuesta por el recurso de entrada creado por AGIC:

export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
echo $APP_URL

Copie la dirección URL y ábrala en el explorador para ver la página principal de la aplicación. Si la página web no se representa correctamente o devuelve un error 502 Bad Gateway, la aplicación sigue empezando en segundo plano. Espere unos minutos y vuelva a intentarlo.

Recorte de pantalla de la aplicación Java Liberty implementada correctamente en AKS.

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 para quitar 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

Pasos siguientes

Puede obtener más información en estas referencias:

Para más información sobre la implementación de la familia IBM WebSphere en Azure, vea ¿Cuáles son las soluciones para ejecutar la familia de productos WebSphere en Azure?.