Compartir a través de


Implementación manual de una aplicación Java con Open Liberty/WebSphere Liberty en un clúster de Red Hat OpenShift en Azure

Este artículo proporciona una guía manual paso a paso para ejecutar Open/WebSphere Liberty en un clúster de Red Hat OpenShift en Azure. Le guía a través de la preparación de una aplicación Liberty, la creación de la imagen Docker de la aplicación y la ejecución de la aplicación almacenada en contenedor en un clúster de Red Hat OpenShift en Azure.

Concretamente, aprenderá a realizar las siguientes tareas:

  • Preparación de la aplicación Liberty
  • Creación de la imagen de la aplicación
  • Ejecución de la aplicación almacenada en contenedor en un clúster de Red Hat OpenShift en Azure mediante la GUI y la CLI

Si desea una solución más automatizada que agilice su transición hacia el clúster de Red Hat OpenShift en Azure, consulte Implementación de IBM WebSphere Liberty y Open Liberty en Red Hat OpenShift en Azure con la oferta de Azure Marketplace.

Para más información sobre Open Liberty, consulte la página del proyecto Open Liberty. Para obtener más información sobre Open Liberty, consulte la página de producto de WebSphere Liberty.

Este artículo está diseñado para ayudarle a llegar rápidamente a la implementación. Antes de ir a producción, debe explorar Tuning 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.

Importante

Aunque Red Hat y Microsoft han diseñado, operan y ofrecen soporte técnico en conjunto para Red Hat OpenShift en Azure con objeto de ofrecer una experiencia de asistencia integrada, el software que ejecute sobre Red Hat OpenShift en Azure, incluido el que se describen en este artículo, está sujeto a sus propios términos de soporte técnico y licencia. Para obtener más información sobre del soporte técnico de Red Hat OpenShift en Azure, consulte Ciclo de vida del soporte técnico de Red Hat OpenShift en Azure 4. Para obtener más información sobre el soporte técnico del software que se describe en este artículo, consulte las páginas principales de dicho software que figuran en el artículo.

Nota:

Red Hat OpenShift en Azure requiere 40 núcleos como mínimo para crear y ejecutar un clúster de OpenShift. La cuota predeterminada de recursos de Azure para una suscripción nueva de Azure no cumple este requisito. Para solicitar un aumento del límite de recursos, consulte Cuota estándar: Aumento de los límites por serie de máquinas virtuales. Tenga en cuenta que la suscripción de evaluación gratuita no es válida para un aumento de cuota, por lo que debe actualizar a una suscripción de pago por uso antes de solicitar ese aumento.

Requisitos previos

  • Una máquina local con un sistema operativo tipo Unix instalado, por ejemplo, Ubuntu, macOS o Windows Subsystem para Linux.

  • Una implementación de Java Standard Edition (SE), versión 17 o posterior, o por ejemplo, Eclipse Open J9.

  • Maven, versión 3.9.8 o superior.

  • Docker para el sistema operativo.

  • CLI de Azure, versión 2.61.0 o posterior.

  • Un clúster de la versión 4 de Red Hat OpenShift en Azure. Para crear el clúster, siga las instrucciones que figuran en Creación de un clúster de la versión 4 de Red Hat OpenShift en Azure, además de las siguientes:

    • Aunque el paso "Obtención de un secreto de extracción de Red Hat" está etiquetado como opcional, es necesario para este artículo. El secreto de extracción permite que el clúster de Red Hat OpenShift en Azure busque el operador de Open Liberty.

    • Las siguientes variables de entorno definidas en Creación de un clúster de la versión 4 de Red Hat OpenShift en Azure se usan más adelante en este artículo:

      • RESOURCEGROUP - el nombre del grupo de recursos en el que está implementado el clúster;
      • CLUSTER- el nombre del clúster.
    • Si planea ejecutar en el clúster aplicaciones que utilizan mucha memoria, especifique el tamaño de máquina virtual correspondiente para los nodos de trabajo mediante el parámetro --worker-vm-size. Vea los siguientes artículos para más información:

  • Realice la conexión al clúster siguiendo las instrucciones que se indican en Conexión a un clúster de la versión 4 de Red Hat OpenShift en Azure, además de las siguientes:

    • Asegúrese de seguir los pasos de "Instalación de la CLI de OpenShift" porque usará el comando oc más adelante en este artículo.
    • Guarde la URL de la consola del clúster. Debería ser parecido a este: https://console-openshift-console.apps.<random>.<region>.aroapp.io/.
    • Anote las credenciales de kubeadmin.
    • Asegúrese de seguir los pasos descritos en "Conexión mediante la CLI de OpenShift" con las credenciales de kubeadmin.

Instalación del operador OpenShift de Open Liberty

Después de crear y conectarse al clúster, siga los pasos a continuación para instalar Open Liberty Operator. La página de inicio principal del operador de Open Liberty está en GitHub.

  1. Inicie sesión en la consola web de OpenShift desde el explorador con las credenciales de kubeadmin.

  2. Vaya a Operadores>OperatorHub y busque Open Liberty.

  3. Seleccione Open Liberty en los resultados de la búsqueda.

  4. Seleccione Instalar.

  5. En la página Instalar operador, siga los pasos a continuación:

    1. En Actualizar canal, seleccione el último canal v1.3.
    2. En Modo de instalación, seleccione Todos los espacios de nombres en el clúster (valor predeterminado).
    3. Para Aprobación de actualizaciones, seleccione Automática.

    Captura de pantalla de la consola web de OpenShift que muestra la página Instalar operador.

  6. Seleccione Instalar y espere un minuto o dos hasta que se complete la instalación.

  7. Compruebe que Open Liberty Operator se ha instalado correctamente y está listo para el uso. Si no está listo, diagnostique y resuelva el problema antes de continuar.

    Captura de pantalla de la consola web de OpenShift que muestra el cuadro de diálogo Operador instalado.

Nota:

Esta guía instala Open Liberty Operator para la administración de las aplicaciones Liberty en el clúster de Red Hat OpenShift en Azure. Si desea usar WebSphere Liberty Operator, siga los pasos indicados en Instalación de WebSphere Liberty Operator para instalar WebSphere Liberty Operator en el clúster.

Creación de un espacio de nombres de OpenShift para la aplicación Java

Siga los pasos a continuación para crear un espacio de nombres de OpenShift y usarlo con su aplicación:

  1. Asegúrese de haber iniciado sesión en la consola web de OpenShift desde su navegador mediante las credenciales de kubeadmin.

  2. Vaya a Administración>Espacios de nombres>Crear espacio de nombres.

  3. Escriba open-liberty-demo en Nombre y seleccione Crear, como se muestra a continuación.

    Captura de pantalla de la consola web de OpenShift que muestra el cuadro de diálogo Crear espacio de nombres.

Creación de un servidor flexible de Azure Database for MySQL

El modelo de implementación del servidor flexible de Azure Database for MySQL es un modo de implementación diseñado para proporcionar un control más granular y flexibilidad sobre las funciones de administración de bases de datos y los ajustes de configuración que el modo de implementación del servidor único de Azure Database for MySQL. Esta sección le muestra cómo crear una instancia del servidor flexible de Azure Database for MySQL mediante la CLI de Azure. Para obtener más información, consulte Quickstart: Cree una instancia del servidor flexible de Azure Database for MySQL mediante la CLI de Azure.

Ejecute el siguiente comando en su terminal para crear una instancia de servidor flexible de Azure Database for MySQL. Sustituya <server-admin-password> por una contraseña que cumpla los requisitos de complejidad de contraseña para servidor flexible de Azure Database for MySQL.

az mysql flexible-server create \
    --name ${CLUSTER} \
    --resource-group ${RESOURCEGROUP} \
    --admin-user admin${RESOURCEGROUP} \
    --admin-password '<server-admin-password>' \
    --database-name ${RESOURCEGROUP}db \
    --public-access 0.0.0.0 \
    --yes

Nota:

Si recibe el mensaje de error No hay SKU disponibles en esta ubicación, deberá especificar una ubicación diferente con el parámetro --location e intentarlo de nuevo. Use el comando siguiente para que aparezcan las SKU disponibles en una ubicación específica:

az mysql flexible-server list-skus --location <Location>

Busque una ubicación que tenga SKU disponibles y repita lo anterior en az mysql flexible-server create command, pero agregue el parámetro --location <Location> apropiado, dejando el resto de parámetros sin modificar.

Se tarda unos minutos en crear el servidor, la base de datos, el usuario administrador y la regla del firewall que acepta conexiones de todos los recursos de Azure. Si el comando se ejecuta correctamente, la salida es similar al ejemplo siguiente:

{
  "connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
  "databaseName": "<database-name>",
  "firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
  "host": "<server-name>.mysql.database.azure.com",
  "id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
  "location": "West US",
  "password": "<server-admin-password>",
  "resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
  "skuname": "Standard_B1ms",
  "username": "<server-admin-username>",
  "version": "5.7"
}

Preparación de la aplicación Liberty

En esta guía usaremos como ejemplo una aplicación Java EE 8. Open Liberty es un servidor compatible con el perfil completo de Java EE 8, por lo que puede ejecutar fácilmente la aplicación. Open Liberty también es compatible con el perfil completo de Jakarta EE 8.

Ejecución de la aplicación en Open Liberty

Para ejecutar la aplicación en Open Liberty, debe crear un archivo de configuración de servidor Open Liberty para que el complemento de Maven para Liberty pueda empaquetar la aplicación para su implementación. El complemento Liberty Maven no es necesario para implementar la aplicación en OpenShift. Sin embargo, en este ejemplo lo usamos con el modo de desarrollador (dev) de Open Liberty. El modo de desarrollador le permite ejecutar la aplicación fácilmente de manera local. Para más información sobre liberty-maven-plugin, consulte Creación de una aplicación web con Maven.

Siga los pasos de esta sección para preparar la aplicación de ejemplo para usarla más adelante en este artículo. Esos pasos usan Maven y liberty-maven-plugin.

Extracción de la aplicación

Use los siguientes comandos para clonar el código de ejemplo de esta guía. El ejemplo se encuentra en GitHub.

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql

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.

Hay algunos ejemplos en el repositorio. Usamos open-liberty-on-aro/3-integration/connect-db/mysql. Esta es la estructura de archivos de la aplicación:

open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.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 aro, colocamos dos archivos de implementación. db-secret.xml se usa para crear Secretos con credenciales de conexión a la base de datos. El archivo openlibertyapplication.yaml se usa para implementar la imagen de aplicación.

En el directorio raíz, colocamos dos Dockerfiles. Dockerfile y Dockerfile-wlp se usan para la depuración local y para construir la imagen para un implementación de Red Hat OpenShift en Azure, funcionando con Open Liberty y WebSphere Liberty, respectivamente.

En el directorio liberty/config, server.xml se usa para configurar la conexión a la base de datos para el clúster de Open Liberty y WebSphere Liberty.

Compilación del proyecto

Con las variables de entorno definidas anteriormente, ejecute los siguientes comandos en su terminal para compilar el proyecto. El archivo POM del proyecto lee muchas propiedades del entorno.

cd ${BASE_DIR}/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo

mvn clean install

(Opcional) Probar la aplicación localmente

De forma opcional, puede ejecutar la aplicación localmente para comprobar que funciona como se espera. En primer lugar, debe agregar una regla de firewall para permitir que su máquina local se conecte a la instancia de servidor flexible de Azure Database for MySQL. Siga los pasos a continuación para agregar la regla de firewall:

  1. Inicie sesión en Azure Portal y navegue hasta la instancia de servidor flexible de Azure Database for MySQL que creó anteriormente.
  2. En el panel izquierdo, seleccione Configuración>Redes.
  3. Seleccione Agregar dirección IP del cliente actual.
  4. Seleccione Guardar y espere a que se agregue la regla de firewall.

Siga los pasos a continuación para ejecutar el comando liberty:devc a fin de ejecutar y probar localmente el proyecto y la imagen de contenedor antes de enfrentarse a cualquier complejidad de Azure. Para más información sobre liberty:devc, consulte la documentación del complemento Liberty.

  1. Inicie su entorno Docker local si es necesario. Las instrucciones para hacerlo varían en función del sistema operativo host.

  2. Use los siguientes comandos para iniciar la aplicación en el modo liberty:devc:

    cd ${BASE_DIR}/3-integration/connect-db/mysql
    
    # If you are running with Open Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile
    
    # If you are running with WebSphere Liberty
    mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
    
  3. Compruebe que la aplicación funciona según lo previsto. Si el resultado de la operación es satisfactorio, debería ver un mensaje similar a [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. en la salida del comando. Vaya a https://localhost:9443/ en el explorador y compruebe que la aplicación es accesible y que todas las funciones hacen su trabajo.

  4. Para detener el modo liberty:devc, pulse Control+C.

Preparación de la imagen de la aplicación

Para implementar y ejecutar la aplicación Liberty en un clúster de Red Hat OpenShift en Azure, incluya la aplicación en un contenedor como una imagen de Docker mediante imágenes de contenedor de Open Liberty o imágenes de contenedor de WebSphere Liberty.

Compilación de la aplicación e inserción en el flujo de imagen

Dado que ya ha ejecutado con éxito la aplicación en el contenedor de Docker Liberty con el comando liberty:devc, va a compilar la imagen de forma remota en el clúster siguiendo los pasos a continuación:

  1. Asegúrese de iniciar sesión en la CLI de OpenShift con las credenciales de kubeadmin.

  2. Use los siguientes comandos para identificar el directorio de origen y el Dockerfile:

    cd ${BASE_DIR}/3-integration/connect-db/mysql
    
    # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you
    
    # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-wlp Dockerfile
    
  3. Use el siguiente comando para cambiar el proyecto a open-liberty-demo:

    oc project open-liberty-demo
    
  4. Use el siguiente comando para crear una secuencia de imágenes:

    oc create imagestream javaee-cafe-mysql
    
  5. Use el comando siguiente para crear una configuración de compilación que especifique la etiqueta de flujo de imagen de la salida de compilación:

    oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
    
  6. Use el siguiente comando para iniciar la compilación para cargar el contenido local, el contenedor y la salida en la etiqueta de flujo de imagen especificada antes:

    oc start-build javaee-cafe-mysql-config --from-dir . --follow
    

Implementar la aplicación en el clúster de Red Hat OpenShift en Azure

Ahora puede implementar la aplicación Liberty de ejemplo en el clúster de Red Hat OpenShift en Azure que creó anteriormente al trabajar con los requisitos previos.

Implementación de la aplicación desde la consola web

Dado que usamos Open Liberty Operator para administrar las aplicaciones Liberty, necesitamos crear una instancia de su Definición de recurso personalizado de tipo OpenLibertyApplication. El operador se encarga de todos los aspectos de la administración de los recursos OpenShift necesarios para la implementación. Siga los pasos a continuación para crear esta instancia:

  1. Inicie sesión en la consola web de OpenShift desde el explorador con las credenciales de kubeadmin.

  2. Para seleccionar el proyecto, vaya a Inicio>Proyectos>open-liberty-demo.

  3. Vaya a Cargas de trabajo>Secretos.

  4. Seleccione Crear> desde YAML.

  5. Sustituya el yaml que se le ha generado y que se encuentra en <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  6. Seleccione Crear. Volverá a la página de detalles de Secreto.

  7. Vaya a Operadores>Operadores instalados.

  8. En el medio de la página, verá Open Liberty.

  9. En Provided APIs, seleccione OpenLibertyApplication. La navegación de los elementos de la interfaz de usuario refleja la jerarquía de contención real de las tecnologías en uso.

    Diagrama de contención de Java de Red Hat OpenShift en Azure.

  10. Seleccione Crear OpenLibertyApplication.

  11. Seleccione Vista YAML en Configuración mediante.

  12. Sustituya el yaml que se le ha generado y que se encuentra en <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  13. Seleccione Crear. Volverá a la lista de OpenLibertyApplications.

  14. Vaya a Operadores>Operadores instalados>Abrir Liberty>OpenLibertyApplication.

  15. Seleccione javaee-cafe-mysql.

  16. En el medio de la página, seleccione Recursos.

  17. En la tabla, seleccione el vínculo para javaee-cafe-mysql con la Variante de Ruta.

  18. En la página que se abre, seleccione el vínculo debajo de Ubicación.

La página de inicio de la aplicación se abre en el navegador.

Eliminación de la aplicación desde la consola web

Cuando haya finalizado con la aplicación, siga los pasos a continuación para eliminarla de Open Shift:

  1. En el panel de navegación de la izquierda, expanda la entrada de Operadores.
  2. Seleccione Operadores instalados.
  3. Seleccione Abrir Liberty.
  4. En el medio de la página, seleccione OpenLibertyApplication.
  5. En javaee-cafe-mysql, seleccione la elipsis vertical (tres puntos verticales) y después Eliminar OpenLibertyApplication.
  6. Seleccione Eliminar para eliminar la aplicación.

Siga los pasos a continuación para eliminar el secreto de Open Shift:

  1. Vaya a Cargas de trabajo>Secretos.
  2. Seleccione db-secret-mysql.
  3. Seleccione Acciones>Eliminar secreto.
  4. Seleccione Eliminar para eliminar el secreto.

Limpieza de recursos

Elimine el clúster de Red Hat OpenShift en Azure mediante los pasos que se indican en Tutorial: Eliminación de un clúster de Red Hat OpenShift en Azure 4. Asegúrese de que también se eliminan la base de datos y los recursos asociados.

Pasos siguientes

Puede obtener más información en las referencias que se usan en esta guía:

Si desea explorar las opciones para ejecutar los productos WebSphere en Azure, consulte ¿Cuáles son las soluciones para ejecutar la familia de productos WebSphere en Azure?