Nota:

Despliegue aplicaciones Java en Ampere A1 en Oracle Cloud Infrastructure

Descubra cómo crear y desplegar aplicaciones Java como contenedores en la plataforma de recursos informáticos Ampere A1 en Oracle Cloud Infrastructure (OCI). Desplegará una aplicación Todo con una base de datos, como contenedores que se ejecuten en la plataforma de cálculo Ampere A1. Además, utilizará el nuevo conjunto de herramientas de contenedor, como Podman, que están disponibles en Oracle Linux 8.0.

Introducción

Objetivos

En este tutorial:

Requisitos

  1. Cuenta gratuita de Oracle (Trial), pagada o LiveLabs Cloud.
  2. Familiaridad con la consola de OCI
  3. Visión general de Networking
  4. Conocimientos de los compartimentos
  5. Conocimiento básico conceptual de contenedores y Podman
  6. Mantenga las claves SSH a mano. Si no tiene claves, genere claves SSH.

Configurar el entorno

Empezará por iniciar el entorno en la nube de Oracle que se utilizará para crear y desplegar la aplicación Java EE. Este entorno se incluirá en un compartimento en la nube y la comunicación dentro del compartimento se realizará a través de una red virtual en la nube (VCN). El compartimento y la VCN aislarán y protegerán el entorno general. Desplegará una instancia informática de Ampere A1 para alojar una aplicación Java EE mediante los contenedores de servidor Tomcat 9.0 y MySQL.

Configuración de infraestructura básica

  1. Abra el menú de navegación. En Gobernanza y administración, vaya a Identidad y haga clic en Compartimentos. En esta pantalla, verá una lista de compartimentos, haga clic en Crear compartimento.

  2. Introduzca lo siguiente:

    • Nombre: introduzca "AppDev".
    • Descripción: introduzca una descripción (necesaria), como "AppDev compartimento para el tutorial de introducción". Evite introducir información confidencial.
    • Compartimento principal: seleccione el compartimento en el que desea que resida este compartimento. Se define por defecto en el compartimento raíz (o arrendamiento).
    • Haga clic en Crear compartimento.
    • El compartimento se muestra en la lista.

Crear instancia informática A1 de Ampere

  1. Para crear una instancia informática de Ampere A1, utilice el menú de navegación situado en la esquina superior izquierda de la consola y vaya a Recursos informáticos > Instancias.

  2. Abra el flujo de creación de instancias.

    1. Verifique que está en el compartimento AppDev.
    2. Haga clic en Crear instancia.
  3. En la página de creación de instancia, creará la nueva instancia junto con los nuevos recursos de red, como la red virtual en la nube (VCN), el gateway de Internet (IG) y mucho más.

    1. Asigne a la instancia el nombre JavaApp
    2. Actualice la selección de imagen para utilizar Oracle Linux 8 o posterior
    3. Haga clic en el botón Cambiar unidad para ver las unidades de computación disponibles.

    Crear InstanciaDescripción de la ilustración Crear instancia

  4. Configure la imagen para la instancia.

    1. Haga clic en el botón Cambiar imagen para ver las imágenes de sistema operativo disponibles.
    2. Elija Oracle Linux 8 o posterior.

    Elija Oracle Linux 8Descripción de la ilustración Seleccione Oracle Linux 8

  5. Configure los recursos para la instancia.

    1. Elija el procesador basado en Ampere Arm en la elección para series de formas.
    2. Seleccione la unidad VM.Standard.A1.Flex de la lista de unidades con procesadores basados en Ampere Arm. Las unidades Ampere A1 son flexibles y puede modificar el número de núcleos y la cantidad de memoria. Seleccione 1 núcleo y 6 GB de memoria para la VM.

    Elegir unidadDescripción de la ilustración Choose Shape

  6. Seleccione sus opciones de red. Cree una nueva VCN y subred para su próximo despliegue en la nube. Asegúrese de que selecciona asignar una dirección IP pública para su instancia.

  7. Genere y descargue el par de claves SSH. Este paso es opcional, pero se recomienda realizar tareas de mantenimiento y actualizaciones posteriores. También puede traer su clave pública si ya tiene un par de claves que desea utilizar. Si desea saber cómo generar claves SSH, siga las instrucciones del tutorial Generar claves SSH.

    Opciones de RedDescripción de la ilustración Opciones de red

  8. Haga clic en Crear para crear los recursos de red e iniciar la instancia informática. iniciar instanciaDescripción de la instancia de inicio de ilustración

Exponer puertos de aplicación a usuarios

Para que se pueda acceder a las aplicaciones desde Internet, debe abrir los puertos que utilizará nuestra aplicación. En esta sección, configurará listas de seguridad en la red en la nube y reglas de firewall en la instancia informática para que las aplicaciones puedan enviar y recibir tráfico.

Configuración de la red virtual en la nube (VCN)

Una lista de seguridad actúa como un firewall virtual para una instancia, con reglas de entrada y salida que especifican los tipos de tráfico permitidos que entran en la instancia y salen de esta. Listas de seguridad configuradas en el nivel de subred, que aplican las reglas de seguridad a todos los elementos de red de esa subred. La red incluye una lista de seguridad predeterminada, que tiene un conjunto inicial de reglas. La lista de seguridad por defecto permite conectarse a su instancia mediante SSH y, para que su instancia realice llamadas de red salientes a cualquier destino.

  1. Navegue a la página de detalles de la instancia que ha creado. Recursos informáticos > Instancias > Haga clic en la instancia que ha creado

  2. Navegue a la subred a la que está asociada la instancia haciendo clic en la subred seleccionar subred Descripción de la ilustración, seleccione la subred.

  3. En la página de subred, haga clic en la lista de seguridad por defecto para ver los detalles y configurarlo.

  4. Haga clic en "Agregar regla de entrada" para agregar una nueva regla que permita el tráfico entrante que coincida con las reglas.

  5. Agregar una regla de entrada para permitir el tráfico entrante en el puerto 8080

    1. Defina el CIDR de origen en 0.0.0.0/0. Esto permite el tráfico entrante de todos los orígenes.
    2. Establezca Destination Port Range (Rango de puertos de destino) en 8080. De esta forma, el destino solo se define en el puerto 8080. La regla ahora permite que el tráfico de todos los orígenes utilice el puerto 8080. Esto es lo que necesitamos, para que se pueda acceder a nuestra aplicación desde cualquier lugar.
    3. Proporcione una descripción.

    configurar reglas de entrada Descripción de reglas de entrada de configuración de ilustración

Configuración del firewall en la instancia

Las reglas del firewall controlan el tráfico de nivel de paquetes de entrada y salida de una instancia. Las reglas de firewall se configuran directamente en la propia instancia y proporcionan un nivel adicional de seguridad.

  1. Navegue a la página de detalles de la instancia que ha creado. Recursos informáticos > Instancias > Haga clic en la instancia que ha creado.
  2. Copie la dirección IP pública de la instancia.
  3. Inicie sesión en la instancia con SSH. Utilice la clave generada por usted o proporcionada durante el paso de creación de la instancia. El nombre de usuario por defecto para las instancias que utilizan el sistema operativo Oracle Linux es opc.
  4. Ejecute los comandos de configuración del firewall. Esto modifica el firewall en la propia instancia para exponer el puerto 8080 y aceptar el tráfico entrante.

    sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
    

Ejecute aplicaciones Java EE en la plataforma informática Ampere A1

Para ejecutar esta aplicación, prepare primero una instancia informática Ampere A1 con algunos paquetes necesarios, como herramientas de contenedor y git. A continuación, clone el repositorio y cree la aplicación mediante la instancia de Maven pom.xml incluida. Por último, inicie los contenedores de docker de MySQL y Tomcat mediante las herramientas de contenedor.

Instalación de las herramientas de contenedor

Oracle Linux 8 utiliza Podman para ejecutar y gestionar contenedores. Podman es un motor de contenedor sin daemon para desarrollar, gestionar y ejecutar contenedores Open Container Initiative e imágenes de contenedor en el sistema Linux. Podman proporciona una aplicación de línea de comandos compatible con Docker que se puede utilizar como sustitución para docker. La instalación del paquete podman-docker proporciona el comando docker que llama de forma transparente a podman.

  1. Inicie sesión en la instancia con SSH. Utilice la clave generada por usted o proporcionada durante el paso de creación de la instancia. El nombre de usuario por defecto para las instancias que utilizan el sistema operativo Oracle Linux es opc.

  2. Instale el módulo container-tools que extrae todas las herramientas necesarias para trabajar con contenedores.

    sudo dnf module install container-tools:ol8
    
    sudo dnf install podman-docker git
    

Clonar código fuente

Para empezar, utilice SSH para conectarse a la instancia informática y clonar el repositorio.

git clone https://github.com/oracle-quickstart/oci-arch-tomcat-mds.git
cd oci-arch-tomcat-mds/java

Crear la aplicación web

Las aplicaciones web Java se empaquetan como archivos de aplicaciones web o archivos WAR. Los archivos WAR son archivos zip con metadatos que describen la aplicación en un contenedor de servlet como Tomcat. En este ejemplo se utiliza Apache Maven para crear el archivo WAR para la aplicación. Para crear la aplicación, ejecute el siguiente comando. Asegúrese de ejecutar el comando desde la ubicación en la que se clonaron los archivos de origen.

podman run -it --rm --name todo-build \
    -v "$(pwd)":/usr/src:z \
    -w /usr/src \
    maven:3 mvn clean install

Este comando crea un directorio target y el archivo WAR dentro de él. Tenga en cuenta que no se instala Maven, sino que se ejecutan las herramientas de compilación dentro del contenedor.

Ejecute la aplicación en la plataforma informática Ampere A1

La aplicación utiliza el contenedor de servlet Tomcat y la base de datos MySQL. Tomcat y la base de datos MySQL soportan la arquitectura ARM64v8 que utiliza la plataforma de cálculo Ampere A1.

  1. Cree un pod mediante Podman.

    podman pod create --name todo-app -p 8080:8080 --infra-image k8s.gcr.io/pause:3.1
    
  2. Inicie el contenedor de base de datos en el pod.

    podman run --pod todo-app -d \
    -e MYSQL_ROOT_PASSWORD=pass \
    -e MYSQL_DATABASE=demo \
    -e MYSQL_USER=todo-user \
    -e MYSQL_PASSWORD=todo-pass \
    --name todo-mysql \
    -v "${PWD}"/src/main/sql:/docker-entrypoint-initdb.d:z \
    mysql/mysql-server:8.0
    

    Para la base de datos MySQL, los scripts de inicialización de la base de datos se proporcionan al contenedor, que crea las tablas y los usuarios de la base de datos necesarios al iniciar. Para ello, monte el directorio /src/main/sql desde el host como /docker-entrypoint-initdb.d dentro del contenedor. La imagen oficial de MySQL que está utilizando aquí está configurada para ejecutar archivos .sql en este directorio en el inicio. Para obtener más opciones, incluido cómo exportar y realizar copias de seguridad de datos, consulte la documentación.

  3. Despliegue la aplicación que ha creado como un archivo WAR con un servidor Tomcat.

    podman run --pod todo-app -d\
    --name todo-tomcat \
    -v "${PWD}"/target/todo.war:/usr/local/tomcat/webapps/todo.war:z \
    tomcat:9
    podman logs -f todo-tomcat
    

    La información de conexión a la base de datos y la aplicación se proporcionan al contenedor Apache Tomcat mediante src/main/resources/todo.properties. La URL de JDBC utiliza localhost como host del servidor MySQL. Esto se debe a que los contenedores del mismo pod se pueden comunicar entre sí mediante localhost. El archivo WAR de la aplicación se proporciona como un montaje en el contenedor.

    Tomcat despliega la aplicación al iniciar y la asignación de puertos al host hace que la aplicación esté disponible a través de la dirección IP pública para la instancia informática.

  4. Introduzca la dirección IP pública de la instancia informática en un explorador con el puerto 8080. Debería poder ver la aplicación. http://<ip_address>:8080/todo/

Solución de problemas

Los contenedores Podman se pueden inspeccionar al igual que los contenedores de Docker (incluso puede agregar el alias podman como docker). A continuación, se muestran algunos comandos comunes para inspeccionar los contenedores:

Plataforma de cálculo Ampere A1

Agradecimientos

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.

Para obtener documentación sobre los productos, visite Oracle Help Center.