Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido, aprenderá a implementar una aplicación web Go contenedorizada en Azure Container Apps.
Azure Container Apps permite ejecutar código de aplicación empaquetado en cualquier contenedor sin administrar complejas infraestructuras en la nube ni orquestadores complejos de contenedores. También elimina la necesidad de 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 az containerapp comandos en la CLI de Azure, asegúrese de que tiene instalada la versión más reciente de la extensión 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 el módulo actual está instalado, registre los espacios de nombres Microsoft.App, Microsoft.ContainerRegistry y Microsoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.OperationalInsights
Nota:
Recursos de Azure Container Apps migrados desde el espacio de nombres Microsoft.Web al espacio de nombres Microsoft.App. Para obtener más información, consulte Migración de espacio de nombres de Microsoft.Web a Microsoft.App en marzo de 2022.
Descarga de la aplicación de ejemplo
Para seguir este tutorial, necesita una aplicación de ejemplo para incluir en contenedores. El repositorio de GitHub msdocs-go-webapp-quickstart proporciona una aplicación web 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. Úselo 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:
Establezca variables de entorno para los recursos que va a crear. Reemplace el texto del marcador de posición entre corchetes por los valores adecuados. El nombre de la instancia de Azure Container Registry debe ser único globalmente.
RESOURCE_GROUP_NAME="<resourceGroupName>" # Name of the Azure resource group to create LOCATION="<location>" # Azure region (For example, "eastus", "westus2") ACR_NAME="<azureContainerRegistryName>" # Globally unique name for Azure Container RegistryLos comandos de ejemplo para establecer las variables de entorno son para el shell de Bash. Si usa un shell diferente, ajuste los comandos en consecuencia.
Cree un grupo de recursos de Azure con el comando az group create.
az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONCree una instancia de Azure Container Registry con el comando az acr create.
az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACR_NAME \ --sku basicInicie sesión en la instancia de Azure Container con el comando az acr login.
az acr login --name $ACR_NAMENota:
Si recibe un error similar al siguiente al ejecutar el comando
az acr login, asegúrese de que el daemon de Docker se está ejecutando en el sistema.You may want to use 'az acr login -n $ACR_NAME --expose-token' to get an access token, which doesn't require Docker to be installed. An error occurred: DOCKER_COMMAND_ERROR
Compilación e inserción de la imagen de Docker
Después de crear 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 para compilar e insertar la imagen en el registro.
Establezca la variable de entorno para la imagen de Docker que va a crear. Reemplace el texto del marcador de posición entre corchetes por los valores adecuados.
IMAGE_NAME="go-webapp" # Name for the Docker imageLos comandos de ejemplo para establecer las variables de entorno son para el shell de Bash. Si usa un shell diferente, ajuste los comandos en consecuencia.
Obtenga la información del servidor de inicio de sesión con el comando az acr show y almacénelo en una variable de entorno.
LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query loginServer \ --output tsv) echo "Login server: $LOGIN_SERVER"Compile la imagen de Docker de manera local.
docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .Inserte la imagen de Docker en Azure Container Registry.
docker push $LOGIN_SERVER/$IMAGE_NAME:latestCompruebe que la imagen se insertó correctamente en Azure Container Registry con el comando az acr repository list.
az acr repository list \ --name $ACR_NAME \ --output table
Ahora que tiene una imagen disponible en Azure Container Registry, está listo para implementar azure Container App y su entorno.
Crear un entorno de Azure Container Apps
Azure Container Apps no tiene la complejidad de un orquestador de contenedores, pero todavía necesita alguna manera de establecer límites seguros. Los entornos de Azure Container Apps proporcionan esta funcionalidad. 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.
Establezca variables de entorno para los recursos que va a crear. Reemplace el texto del marcador de posición entre corchetes por los valores adecuados.
CONTAINER_APP_ENV="mygoappenv" # Name for the Container Apps environment CONTAINER_APP_NAME="mygoapp" # Name for your container appLos comandos de ejemplo para establecer las variables de entorno son para el shell de Bash. Si usa un shell diferente, ajuste los comandos en consecuencia.
Ejecute el comando az containerapp env create para crear un entorno de Azure Container Apps.
az containerapp env create \ --name $CONTAINER_APP_ENV \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION
Implementación en Azure Container Apps
En este momento, ha completado los pasos siguientes:
- Ha creado un Azure Container Registry.
- Se ha compilado e insertado una imagen de Docker en el registro.
- Configure un entorno de Azure Container Apps.
El último paso es 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 $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--environment $CONTAINER_APP_ENV \
--image "$LOGIN_SERVER/$IMAGE_NAME:latest" \
--registry-server "$LOGIN_SERVER" \
--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 de rol AcrPull para la identidad, autorizándola a obtener 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 $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsv) echo "App URL: https://$APP_FQDN"Ejecute el comando curl en el FQDN y confirme que la salida refleja el CÓDIGO HTML del sitio web. También puede abrir la dirección URL en un explorador web para interactuar con la aplicación web.
curl "https://$APP_FQDN""El comando devuelve el código HTML para la página principal de la aplicación web similar a la siguiente:
<!DOCTYPE html> <html> <head> <title>Hello Azure - Go Quickstart</title> <link rel="stylesheet" href="/assets/main.css"> <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"> </head> <header> <h1>Welcome to Azure</h1> </header> <section> <img src="/assets/images/azure-icon.svg"> <form method="post"> <label for="form-label">Could you please tell me your name?</label><br> <input type="text" id="name" name="name" style="max-width: 256px;"><br> <button type="submit">Say Hello</button> </form> </section> </html>
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 $RESOURCE_GROUP_NAME \
--no-wait