The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Despliegue en la nube de Microsoft Azure

Esta guía abarca:

  • Actualizar el puerto HTTP de Quarkus

  • Instalar la CLI de Azure

  • Crear una instancia de Azure Registry Service y subir la imagen Docker

  • Despliegue de la imagen Docker en Azure Container Instances

  • Desplegar la imagen Docker en el servicio Azure Kubernetes

  • Despliegue de la imagen Docker en Azure App Service para contenedores Linux

Requisitos previos

To complete this guide, you need:

  • Roughly 2 hours for all modalities

  • An IDE

  • JDK 17+ installed with JAVA_HOME configured appropriately

  • Apache Maven 3.9.6

  • Optionally the Quarkus CLI if you want to use it

  • Tener acceso a una suscripción a Azure. Obtenga una gratuita aquí

Esta guía tomará como entrada una aplicación nativa desarrollada en la guía de construcción de imágenes nativas.

Asegúrate de tener a mano la aplicación de inicio, o clona el repositorio Git: git clone https://github.com/quarkusio/quarkus-quickstarts.git o descargue un archivo. La solución se encuentra en el directorio getting-started.

Cambiar el puerto HTTP de Quarkus

Si ha seguido correctamente la guía de construcción de imágenes nativas, debería tener una imagen de contenedor local llamada quarkus-quickstart/getting-started.

Aunque Quarkus se ejecuta por defecto en el puerto 8080, la mayoría de los servicios de Azure esperan que las aplicaciones web se ejecuten en el puerto 80. Antes de continuar, vuelve a tu código de inicio rápido y abre el archivo src/main/docker/Dockerfile.native.

Cambia los dos últimos comandos en el archivo Dockerfile.native y haz que se lea así:

EXPOSE 80
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=80"]

Ahora puedes reconstruir la imagen docker:

$ docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .

Para probarlo, ejecútelo exponiendo el puerto 80 en el puerto 8080 en su host:

$ docker run -i --rm -p 8080:80 quarkus-quickstart/getting-started

Tu imagen de contenedor está ahora lista para ejecutarse en Azure. Recuerde que la aplicación Quarkus está mapeada para ejecutarse en el puerto 80.

Instalar la CLI de Azure

Para facilitar la experiencia del usuario a lo largo de esta guía, es mejor tener la CLI de Azure instalada y autenticada.

Visite la página de instalación de Azure CLI para obtener instrucciones específicas para su sistema operativo.

Una vez instalado, asegúrese de estar autentificado:

$ az login

Crear una instancia de Azure Container Registry

Es posible desplegar imágenes alojadas en Docker Hub, pero esta ubicación por defecto deja las imágenes accesibles a cualquiera. Para proteger mejor sus imágenes de contenedores, esta guía muestra cómo alojar sus imágenes en una instancia privada del servicio Azure Container Registry.

En primer lugar, cree un grupo de recursos de Azure:

$ az group create --name <resource-group-name> --location eastus

A continuación, puede crear el ACR:

$ az acr create --resource-group <resource-group-name> --name <registry-name> --sku Basic --admin-enabled true

Por último, autentique su instalación local de Docker con este registro de contenedores ejecutando:

$ az acr login --name <registry-name>

Cargar la imagen del contenedor en Azure

Si ha seguido la guía de creación de imágenes nativas, debería tener una imagen de contenedor local llamada quarkus-quickstart/getting-started.

Para subir esta imagen a su ACR, debe etiquetar y empujar la imagen bajo el servidor de inicio de sesión del ACR. Para encontrar el servidor de inicio de sesión del Azure Container Registry, ejecute este comando:

$ az acr show -n <registry-name> --query loginServer -o tsv

Para subir, hazlo ahora:

$ docker tag quarkus-quickstart/getting-started <acr-login-server>/quarkus-quickstart/getting-started
$ docker push <acr-login-server>/quarkus-quickstart/getting-started

En este punto, deberías tener tu imagen de contenedor Quarkus en tu Azure Container Registry. Para comprobarlo, ejecuta el siguiente comando:

$ az acr repository list -n <registry-name>

Despliegue en instancias de contenedores Azure

La forma más sencilla de iniciar este contenedor en la nube es con el servicio Azure Container Instances. Simplemente crea un contenedor en la infraestructura de Azure.

Existen diferentes enfoques para utilizar ACI. Consulte la documentación para obtener más detalles. La forma más rápida de poner en marcha un contenedor es la siguiente.

El primer paso es encontrar el nombre de usuario y la contraseña del administrador, para que ACI pueda autenticarse en ACR y extraer la imagen Docker:

$ az acr credential show --name <registry-name>

Ahora cree la instancia Docker en ACI apuntando a su imagen en ACR:

$ az container create \
    --name quarkus-hello \
    --resource-group <resource-group> \
    --image <acr-login-server>/quarkus-quickstart/getting-started \
    --registry-login-server <acr-login-server> \
    --registry-username <acr-username> \
    --registry-password <acr-password> \
    --dns-name-label quarkus-hello-<random-number> \
    --query ipAddress.fqdn

El comando anterior, si se ejecuta con éxito, le dará la dirección de su contenedor en la Nube. Acceda a su aplicación Quarkus en la dirección mostrada como salida.

Para obtener más información y detalles sobre la autenticación en el ACR y el uso de los principales del servicio, siga esta guía y recuerde el Azure Container Registry loginServer y el nombre de la imagen de su aplicación Quarkus ahora alojada en el ACR.

Tenga en cuenta que este servicio no proporciona escalabilidad. Una instancia de contenedor es única y no es escalable.

Despliegue en el servicio Azure Kubernetes

También puedes desplegar la imagen del contenedor como un microservicio en un clúster de Kubernetes en Azure. Para ello, sigue este tutorial:

Una vez desplegada, la aplicación se ejecutará en cualquier puerto que se utilice para exponer el servicio. Por defecto, las aplicaciones de Quarkus se ejecutan internamente en el puerto 8080.

Despliegue en Azure App Service en contenedores Linux

Este servicio proporciona escalabilidad de forma inmediata para las aplicaciones web. Si se necesitan más instancias, proporcionará un equilibrio de carga automáticamente, además de monitorización, métricas, registro, etc.

Para desplegar su imagen de contenedor Quarkus Native en este servicio, siga este tutorial: