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

En este artículo se proporcionan instrucciones manuales paso a paso para ejecutar Open/WebSphere Liberty en un clúster de Red Hat OpenShift de Azure. Le guía a través de la preparación de una aplicación Liberty, la compilación de la imagen de Docker de la aplicación y la ejecución de la aplicación en contenedor en un clúster de Red Hat OpenShift de Azure.

En concreto, 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 en contenedor en un clúster de Red Hat OpenShift de Azure mediante la GUI y la CLI

Para obtener una solución más automatizada que acelere el recorrido al clúster de Red Hat OpenShift de Azure, consulte Implementación de IBM WebSphere Liberty y Open Liberty en Red Hat OpenShift en Azure mediante 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 WebSphere Liberty, consulte la página del producto 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 OpenShift en Azure está diseñado conjuntamente, operado y compatible con Red Hat y Microsoft para proporcionar una experiencia de soporte técnico integrada, el software que se ejecuta sobre Red Hat OpenShift de Azure, incluido el descrito en este artículo, está sujeto a sus propios términos de soporte técnico y licencia. Para más información sobre la compatibilidad con Red Hat OpenShift en Azure, consulte Ciclo de vida de soporte técnico para Red Hat OpenShift en Azure 4. Para obtener más información sobre la compatibilidad con el software descrito en este artículo, consulte las páginas principales de ese software, como se muestra 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

Complete los siguientes requisitos previos para usar correctamente esta guía:

  1. Prepare una máquina local con un sistema operativo similar a Unix instalado (por ejemplo, Ubuntu, macOS o Subsistema de Windows para Linux).

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

  3. Instale Maven 3.5.0 o una versión superior.

  4. Instale Docker para el sistema operativo.

  5. Instale la CLI de Azure 2.0.75 o una versión posterior.

  6. Instale envsubst si es necesario.

  7. Clone el código para este ejemplo en el sistema local. El ejemplo se encuentra en GitHub.

  8. Siga las instrucciones que aparecen en Creación de un clúster de Red Hat OpenShift en Azure 4.

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

    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. Por ejemplo, Standard_E4s_v3 es el tamaño de máquina virtual mínimo para instalar el operador de Elasticsearch en un clúster. Para más información, vea:

  9. Para conectarse al clúster, siga los pasos que aparecen en Conexión a un clúster de Red Hat OpenShift en Azure 4.

    • Asegúrese de seguir los pasos descritos en "Instalación de la CLI de OpenShift" porque usamos el oc comando más adelante en este artículo.
    • Guarde la dirección 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 estos pasos para instalar el operador Open Liberty. 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 Install Operator (Operador de instalación), compruebe v1.3 en Update channel (Canal de actualización), All namespaces (Todos los espacios de nombres del clúster (valor predeterminado) para el modo de instalación y Automatic for Update approval (Automático para la aprobación de actualizaciones):

    Captura de pantalla de la creación de una suscripción para el operador de Open Liberty.

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

  7. Observe que open Liberty Operator está instalado y listo para su uso correctamente. Si no está listo, diagnostique y resuelva el problema antes de continuar.

    Operadores instalados que muestran que se instaló Open Liberty.

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

Siga estos pasos para crear un espacio de nombres de OpenShift para usarlo con la aplicación:

  1. Asegúrese de que ha iniciado sesión en la consola web de OpenShift desde el explorador con las kubeadmin credenciales.

  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 creación de un espacio de nombres.

Creación de una instancia de Azure Database for MySQL

Siga estos pasos para configurar una instancia de Azure Database for MySQL para usarla con la aplicación:

  1. Cree un servidor flexible de Azure Database for MySQL siguiendo los pasos descritos en: Inicio rápido: Uso de Azure Portal para crear un servidor flexible de Azure Database for MySQL. Puede implementar la base de datos en el mismo grupo de recursos que el clúster de OpenShift. Después de crear la base de datos, vuelva a este documento.

    Nota:

    En el paso Aspectos básicos, guarde los valores Nombre del servidor.mysql.database.azure.com, Nombre de usuario de administrador y Contraseña.

  2. Una vez creada la base de datos, abra las redes de configuración>de la base de datos>y siga estos pasos:

    1. En Acceso público, asegúrese de que la opción Permitir el acceso público a este recurso a través de Internet mediante una dirección IP pública está seleccionada.
    2. Seleccione Permitir el acceso público desde cualquier servicio de Azure dentro de Azure a este servidor.
    3. Asegúrese de que la dirección IPv4 del cliente está en la lista de permitidos de las reglas de firewall.
    4. Guarde los cambios.

    Captura de pantalla de la configuración de redes de base de datos mysql.

  3. Abra las bases de datos Configuración>de la base de datos>> Seleccione Agregar. Rellene un valor para Nombre y seleccione Guardar para crear una nueva base de datos. Esta base de datos tiene el tipo De esquema como Usuario y se usa para la aplicación más adelante.

    Nota:

    Guarde el nombre de la base de datos que creó.

Preparación de la aplicación Liberty

Usamos una aplicación Java EE 8 como ejemplo en esta guía. 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, lo usamos en este ejemplo 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

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 de 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 compilar la imagen para una implementación de Red Hat OpenShift de Azure, trabajando con Open Liberty y WebSphere Liberty, respectivamente.

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

Compilación del proyecto

Ahora que ha recopilado las propiedades necesarias, use los siguientes comandos para compilar la aplicación. El archivo POM del proyecto lee muchas propiedades del entorno.

cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=<Server name>.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=<Database name>
export DB_USER=<Server admin username>
export DB_PASSWORD=<Server admin password>
export NAMESPACE=open-liberty-demo

mvn clean install

Prueba de la aplicación de forma local

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

  1. Inicie el entorno de 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 liberty:devc modo:

    cd <path-to-your-repo>/open-liberty-on-aro/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 liberty:devc el modo, presione 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 de Azure, en contenedores la aplicación 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

Puesto que ya ejecutó correctamente la aplicación en el contenedor de Docker de Liberty mediante el liberty:devc comando , va a compilar la imagen de forma remota en el clúster mediante los pasos siguientes:

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

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

    cd <path-to-your-repo>/open-liberty-on-aro/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
    

Implementación de una 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 de 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 aplicaciones Liberty, es necesario 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 de OpenShift necesarios para la implementación. Siga estos pasos para crear esta instancia:

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

  2. Expanda Inicio, seleccione Proyectos>open-liberty-demo.

  3. Vaya a Operadores>Operadores instalados.

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

  5. En API proporcionadas, 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.

  6. Seleccione Crear OpenLibertyAplicación.

  7. Seleccione la vista YAML para Configurar a través.

  8. Reemplace el yaml generado por el suyo, que se encuentra en <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.

  9. Seleccione Crear. Se le devuelve a la lista de OpenLibertyApplications.

  10. Vaya a Cargas de trabajo>Secretos.

  11. Seleccione Crear> desde YAML.

  12. Reemplace el yaml generado por el suyo, que se encuentra en <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml.

  13. Seleccione Crear. Se le devuelve a la página Detalles del secreto.

  14. Vaya a Operadores instalados Operadores>>Open 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 principal de la aplicación se abre en el explorador.

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

Cuando haya terminado con la aplicación, siga estos pasos para eliminar la aplicación 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 Libertad.
  4. En el centro de la página, seleccione OpenLibertyApplication.
  5. En javaee-café-mysql, seleccione los puntos suspensivos verticales (tres puntos verticales) y, a continuación, seleccione Eliminar OpenLibertyApplication.
  6. Seleccione Eliminar para eliminar la aplicación.

Siga estos pasos 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 de Azure siguiendo los pasos descritos 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:

Para explorar las opciones para ejecutar productos de WebSphere en Azure, consulte ¿Qué son las soluciones para ejecutar la familia de productos de WebSphere en Azure?