Compartir vía


Proporción de una red virtual a un entorno externo de Azure Container Apps

En el ejemplo siguiente se muestra cómo crear un entorno de Container Apps en una red virtual existente.

Para empezar, inicie sesión en Azure Portal.

Crear una aplicación de contenedor

Para crear una aplicación contenedora, comience en la página principal de Azure Portal.

  1. Busque Aplicaciones de contenedor en la barra de búsqueda superior.
  2. Busque Aplicaciones de contenedor en los resultados de la búsqueda.
  3. Seleccione el botón Crear.

Pestaña Aspectos básicos

En la pestaña Aspectos básicos, realice las acciones siguientes.

  1. Escriba los siguientes valores en la sección Detalles del proyecto.

    Configuración Acción
    Subscription Seleccione su suscripción a Azure.
    Resource group Seleccione Crear nuevo y escriba my-container-apps.
    Nombre de la aplicación de contenedor Escriba my-container-app.
    Origen de implementación Seleccione Imagen de contenedor.

Creación de un entorno

A continuación, cree un entorno para la aplicación de contenedor.

  1. Seleccione la región apropiada.

    Configuración Valor
    Region Seleccione Centro de EE. UU.
  2. En el campo Create Container App environment (Crear entorno de aplicaciones de contenedor), seleccione el vínculo Create new (Crear nuevo).

  3. En la página Crear entorno de Container Apps, en la pestaña Aspectos básicos, escriba los siguientes valores:

    Configuración Value
    Nombre del entorno Escriba my-environment.
    Tipo de entorno Seleccione Perfiles de carga de trabajo.
    Redundancia de zona Seleccione Deshabilitado
  4. Seleccione la pestaña Supervisión para crear un área de trabajo de Log Analytics.

  5. Seleccione Azure Log Analytics como Destino de registros.

  6. Seleccione el vínculo Crear nuevo en el campo Área de trabajo de Log Analytics y escriba los siguientes valores.

    Configuración Value
    Nombre Escriba my-container-apps-logs.

    El campo Ubicación se ha rellenado previamente con Centro de EE. UU. de forma automática.

  7. Seleccione Aceptar.

Nota:

Puede usar una red virtual existente, pero se requiere una subred dedicada con un intervalo CIDR de /23 o mayor para su uso con Container Apps cuando se usa la arquitectura de solo consumo. Cuando se usa un entorno de perfiles de carga de trabajo, se requiere un /27 o mayor. Para obtener más información sobre el ajuste de tamaño de subred, consulte la introducción a la arquitectura de red.

  1. Seleccione la pestaña Redes para crear una red virtual.

  2. Seleccione junto a Use your own virtual network (Usar su propia red virtual).

  3. Junto al cuadro Red virtual, seleccione el vínculo Crear nuevo y escriba los siguientes valores.

    Configuración Value
    Nombre Escriba my-custom-vnet.
  4. Seleccione el botón Aceptar.

  5. Junto al cuadro Subred de infraestructura, seleccione el vínculo Crear nuevo y escriba los siguientes valores:

    Configuración Value
    Nombre de subred Escriba infrastructure-subnet.
    El bloque de direcciones de la red virtual Deje los valores predeterminados.
    El bloque de direcciones de la subred Deje los valores predeterminados.
  6. Seleccione el botón Aceptar.

  7. En IP virtual, seleccione Externa.

  8. Seleccione Crear.

Implementación de la aplicación contenedora

  1. En la parte inferior de la página, seleccione Revisar y crear.

    Si no se encuentran errores, se habilita el botón Crear.

    Si hay errores, todas las pestañas que contengan errores se marcan con un punto rojo. Vaya a la pestaña adecuada. Los campos que contienen un error se resaltan en rojo. Una vez corregidos todos los errores, vuelva a seleccionar Revisar y crear.

  2. Seleccione Crear.

    Se muestra una página con el mensaje Implementación en curso. Una vez completada correctamente la implementación, verá el mensaje: Se completó la implementación.

Requisitos previos

Configurar

Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando 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 de actualización.

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 o cmdlets del Az.App módulo en Azure PowerShell, 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 módulo actualizado está instalado, registre los espacios de nombre Microsoft.App y Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Establecimiento de variables de entorno

Establezca las siguientes variables de entorno. Reemplace los <PLACEHOLDERS> por sus valores:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

Creación de un grupo de recursos de Azure

Cree un grupo de recursos para organizar los servicios relacionados con la implementación de la aplicación contenedora.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Creación de un entorno

Un entorno de Azure Container Apps crea un límite seguro alrededor de un grupo de aplicaciones de contenedor. Las aplicaciones de contenedor implementadas en el mismo entorno se implementan en la misma red virtual y escriben registros en la misma área de trabajo de Log Analytics.

Registre el proveedor Microsoft.ContainerService.

az provider register --namespace Microsoft.ContainerService

Declare una variable que contenga el nombre de la red virtual.

VNET_NAME="my-custom-vnet"

Ahora cree una red virtual Azure para asociarla al entorno de Container Apps. La red virtual debe tener una subred disponible para la implementación del entorno.

Nota:

El prefijo de dirección de subred de red requiere un intervalo CIDR mínimo de /23 para su uso con Container Apps cuando se usa la arquitectura de solo consumo. Cuando se usa la arquitectura de perfiles de carga de trabajo, se requiere /27 o mayor. Para obtener más información sobre el ajuste de tamaño de subred, consulte la introducción a la arquitectura de red.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/21

Al usar el entorno de perfiles de carga de trabajo, actualice la red virtual para delegar la subred en Microsoft.App/environments. Esta delegación no es aplicable al entorno de solo consumo.

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

Con la red virtual creada, puede recuperar el identificador de la subred de infraestructura.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

Por último, cree el entorno de Container Apps mediante la VNET personalizada implementada en los pasos anteriores.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET

En la siguiente tabla se describen los parámetros usados para containerapp env create.

Parámetro Descripción
name Nombre del entorno de Container Apps.
resource-group Nombre del grupo de recursos.
location Ubicación de Azure donde se va a implementar el entorno.
infrastructure-subnet-resource-id Identificador de recurso de una subred para los componentes de infraestructura y los contenedores de aplicaciones de usuario.

Con el entorno creado mediante una red virtual personalizada, ahora puede implementar aplicaciones contenedoras en el entorno.

Configuración opcional

Tiene la opción de implementar un DNS privado y definir intervalos IP de red personalizados para el entorno de Container Apps.

Implementación con un DNS privado

Si desea implementar la aplicación de contenedor con un DNS privado, ejecute los siguientes comandos.

En primer lugar, extraiga información identificable del entorno.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

A continuación, configure el DNS privado.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

Parámetros de red

Hay tres parámetros de red opcionales que puede definir al llamar a containerapp env create. Use estas opciones cuando tenga una red virtual emparejada con intervalos de direcciones independientes. La configuración explícita de estos intervalos garantiza que las direcciones que usa el entorno de Container Apps no entren en conflicto con otros intervalos de la infraestructura de red.

Debe proporcionar valores para las tres propiedades o ninguna de ellas. Los valores se generan si no se proporcionan.

Parámetro Descripción
platform-reserved-cidr Intervalo de direcciones usado internamente para los servicios de infraestructura de entorno. Debe tener un tamaño entre /23 y /12 cuando se usa la Arquitectura de solo consumo
platform-reserved-dns-ip Una dirección IP del intervalo platform-reserved-cidr que se usa para el servidor DNS interno. La dirección no puede ser la primera dirección del intervalo ni la dirección de red. Por ejemplo, si platform-reserved-cidr se establece en 10.2.0.0/16, platform-reserved-dns-ip no puede ser 10.2.0.0 (la dirección de red) ni 10.2.0.1 (la infraestructura se reserva el uso de esta dirección IP). En este caso, la primera dirección IP utilizable para el DNS sería 10.2.0.2.
docker-bridge-cidr Intervalo de direcciones asignado a la red de puente de Docker. Este intervalo debe tener un tamaño entre /28 y /12.
  • Los intervalos de direcciones platform-reserved-cidr y docker-bridge-cidr no pueden estar en conflicto entre sí ni con los intervalos de cualquiera de las subredes proporcionadas. Además, asegúrese de que estos intervalos no entren en conflicto con ningún otro intervalo de direcciones de la red virtual.

  • Si no se proporcionan estas propiedades, la CLI genera automáticamente los valores de intervalo en función del intervalo de direcciones de la red virtual para evitar conflictos de intervalos.

Limpieza de recursos

Si no va a seguir usando esta aplicación, puede quitar el my-container-apps del grupo de recursos. Esto elimina la instancia de Azure Container Apps y todos los servicios asociados. También elimina el grupo de recursos que el servicio Container Apps ha creado automáticamente y que contiene los componentes de red personalizados.

Precaución

El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si los recursos que están fuera del ámbito de esta guía existen en el grupo de recursos especificado, también se eliminarán.

az group delete --name $RESOURCE_GROUP

Pasos siguientes