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.9
-
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: