Implementación de una aplicación web Go en Azure Container Apps
En este inicio rápido, aprenderá a implementar una aplicación web Go contenedorizada en Azure Container Apps.
Azure Container Apps le permite ejecutar código de aplicación empaquetado en cualquier contenedor sin tener que administrar compleja infraestructura en la nube u orquestadores complejos de contenedores, y sin preocuparse por el entorno de ejecución o el modelo de programación. Entre los usos comunes de Azure Container Apps se incluyen: la implementación de puntos de conexión de API, el hospedaje de aplicaciones de procesamiento en segundo plano, el control del procesamiento controlado por eventos y la ejecución de microservicios.
Siga este tutorial para aprender a crear una imagen de Docker, implementar esa imagen en Azure Container Registry e implementar una aplicación web Go en Azure Container Apps.
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Go instalado: versión 1.18 o posterior
- Docker Desktop
Configurar
Para iniciar sesión en Azure desde la CLI, ejecute el comando az login y siga las indicaciones para completar el proceso de autenticación.
az login
Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando az upgrade.
az upgrade
Luego, instale o actualice la extensión de Azure Container Apps para la CLI.
Si recibe errores sobre los parámetros que faltan al ejecutar comandos az containerapp
en la CLI de Azure, asegúrese de tener instalada la versión más reciente de la extensión de Azure Container Apps.
az extension add --name containerapp --upgrade
Nota:
A partir de mayo de 2024, las extensiones de la CLI de Azure ya no habilitan las características en versión preliminar de forma predeterminada. Para acceder a las características de la versión preliminar de Container Apps, instale la extensión Container Apps con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ahora que la extensión o módulo actualizado está instalado, registre los espacios de nombre Microsoft.App
y Microsoft.OperationalInsights
.
Nota:
Los recursos de Azure Container Apps han migrado desde el espacio de nombres Microsoft.Web
al espacio de nombres Microsoft.App
. Consulte Migración del espacio de nombres de Microsoft.Web a Microsoft.App marzo de 2022 para obtener más detalles.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Descarga de la aplicación de ejemplo
Para seguir este tutorial, necesita una aplicación de ejemplo para incluir en contenedores. En el repositorio de GitHub msdocs-go-webapp-quickstart se proporciona una aplicación web de Go de ejemplo. Descargue o clone la aplicación de ejemplo en la estación de trabajo local.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Creación de una instancia de Azure Container Registry
Azure Container Registry permite compilar, almacenar y administrar artefactos e imágenes de contenedor. Los usará para almacenar la imagen de Docker que contiene la aplicación web Go de ejemplo proporcionada en el repositorio de ejemplo mencionado anteriormente.
Ejecute los siguientes comandos para crear una instancia de Azure Container Registry:
Cree un grupo de recursos de Azure con el comando az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Cree una instancia de Azure Container Registry con el comando az acr create.
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
Inicie sesión en la instancia de Azure Container con el comando az acr login.
az acr login --name <azureContainerRegistryName>
Reemplace <resourceGroupName>
y <azureContainerRegistryName>
por los valores adecuados. El nombre de la instancia de Azure Container Registry debe ser único globalmente.
Nota:
Si recibe un error similar al siguiente al ejecutar el comando az acr login
, asegúrese de que el demonio del docker se está ejecutando en el sistema:
You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR
Compilación e inserción de la imagen de Docker
Una vez que haya creado una instancia de Azure Container Registry, compile e inserte la imagen de Docker de la aplicación web Go de ejemplo.
Ejecute los siguientes comandos, compile e inserte la imagen en el registro:
Obtenga la información del servidor de inicio de sesión con el comando az acr show.
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Compile la imagen de Docker de manera local.
docker build -t <loginServer>/<imageName>:latest .
Inserte la imagen de Docker en Azure Container Registry.
docker push <loginServer>/<imageName>:latest
Compruebe que la imagen se insertó correctamente en Azure Container Registry con el comando az acr repository list.
az acr repository list \ --name <azureContainerRegistryName> \ --output table
Reemplace loginServer
, imageName
y azureContainerRegistryName
por los valores adecuados. El nombre de la imagen es la imagen de Docker que se inserta en Azure Container Registry y, posteriormente, se usa para realizar la implementación en Azure Container Apps.
Ahora que tiene una imagen disponible en Azure Container Registry, está listo para implementar la aplicación de Azure Container y su entorno.
Crear un entorno de Azure Container Apps
Azure Container Apps no tiene la complejidad de un orquestador de contenedores, pero sigue necesitando alguna forma de establecer límites seguros, que es donde entran en juego los entornos de Azure Container Apps. La instancia de Container Apps implementada en el mismo entorno comparte la misma red virtual y escribe registros en la misma área de trabajo de Log Analytics. Para poder implementar una aplicación de Azure Container, necesita un entorno en el que realizar la implementación.
Ejecute el comando az containerapp env create para crear un entorno de Azure Container Apps.
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Implementación en Azure Container Apps
En este punto, ha creado una instancia de Azure Container Registry, ha compilado e insertado una imagen de Docker en ella y ha creado un entorno de Azure Container Apps. Ahora ya solo tiene que implementar la aplicación.
Ejecute el comando az containerapp create para implementar la aplicación web Go en Azure Container Apps.
az containerapp create \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--environment <containerAppEnvName> \
--image "<loginServer>/<imageName>:latest" \
--registry-server "<loginServer>" \
--registry-identity system \
--target-port 8080 \
--ingress external
El parámetro --registry-identity system
configura la identidad administrada asignada por el sistema en la aplicación contenedora. La aplicación contenedora usa esta identidad en lugar de nombre de usuario y contraseña, que es menos segura, para autenticarse con el registro de contenedor. El comando también crea automáticamente una asignación del rol AcrPull
para la identidad, de modo que esté autorizado a extraer imágenes del registro. Para usar identidades administradas para la autenticación y autorización, el registro debe ser una instancia de Azure Container Registry.
Comprobación de la URL de la aplicación web
Ejecute el comando az containerapp show para obtener el FQDN (nombre de dominio completo) de la entrada de la aplicación web.
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
A continuación, ejecute el comando curl en el FQDN y confirme que la salida refleja el HTML del sitio web.
curl "https://$APP_FQDN"
Limpieza de recursos
Cuanda haya terminado con la aplicación de muestra, puede quitar todos los recursos de la aplicación de Azure. De este modo, se evitan los cargos continuos y se mantiene ordenada la suscripción de Azure. Al quitar el grupo de recursos también se quitan todos los recursos que haya dentro; es la manera más rápida de quitar todos los recursos de Azure de la aplicación.
Para eliminar el grupo de recursos y sus recursos, ejecute el comando az group delete:
az group delete \
--name <resourceGroupName> \
--no-wait