Compartir a través de


Uso de un punto de conexión privado con un entorno de Azure Container Apps (versión preliminar)

En este artículo, aprenderá a usar un punto de conexión privado para acceder de forma segura a la aplicación de contenedor de Azure sin exponerlo a la red pública de Internet.

Un punto de conexión privado usa una dirección IP privada en la red virtual(VNet). Este punto de conexión le conecta de forma privada y segura a un servicio con tecnología de Azure Private Link.

Los puntos de conexión privados en Azure Container Apps solo admiten el tráfico HTTP entrante. No se admite el tráfico TCP.

Requisitos previos

Crear una aplicación de contenedor

Para empezar, inicie sesión en 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.

  4. En la página Create Container App (Crear aplicación de contenedor), en la pestaña Basics (Aspectos básicos), escriba los siguientes valores.

    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.
    Region Seleccione Centro de EE. UU.
  5. En el campo Crear entorno de Container Apps , seleccione el vínculo Crear nuevo.

  6. En la página Create Container App environment (Crear entorno de aplicaciones de contenedor), en la pestaña Basics (Aspectos básicos), escriba los siguientes valores:

    Configuración Value
    Nombre del entorno Escriba my-environment.
    Redundancia de zona Seleccione Deshabilitado
  7. Seleccione la pestaña Redes para crear una red virtual (VNet). De forma predeterminada, el acceso a la red pública está habilitado, lo que significa que los puntos de conexión privados están deshabilitados.

  8. Deshabilita el acceso a una red pública.

  9. Deje Usar su propia red virtual establecida en No. Puede usar una red virtual existente, pero los puntos de conexión privados solo son compatibles con entornos de perfiles de carga de trabajo, que requieren una subred con un intervalo CIDR mínimo de /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.

  10. Establezca Habilitar puntos de conexión privados en .

  11. Establezca Nombre del punto de conexión privado en my-private-endpoint.

  12. En el campo Red virtual de punto de conexión privado, seleccione el vínculo Crear nuevo.

  13. En la página Crear red virtual, establezca Red virtual en my-private-endpoint-vnet. Seleccione Aceptar.

  14. En el campo subred de red virtual de punto de conexión privado, seleccione el vínculo Crear nuevo.

  15. En la página Crear subred, establezca Nombre de subred en my-private-endpoint-vnet-subnet. Seleccione Aceptar.

  16. Deje DNS establecido en ZonaDNS privada de Azure.

  17. Seleccione Crear.

  18. En la página Crear aplicación de contenedorde la pestaña Aspectos básicos, seleccione Siguiente: Contenedor >.

  19. En la página Crear aplicación de contenedorde la pestaña Contenedor, seleccione Usar imagen de inicio rápido.

  20. 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.

  21. 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.

    Cuando se navega al punto final de la aplicación contenedora, se recibeERR_CONNECTION_CLOSED porque su entorno de la aplicación contenedora tiene deshabilitado el acceso público. En su lugar, puede acceder a la aplicación contenedora mediante el punto de conexión privado.

Requisitos previos

  • Cuenta de Azure con una suscripción activa.

  • La versión más reciente de la CLI de Azure. Para asegurarse de que ejecuta la versión más reciente, ejecute el siguiente comando.

    az upgrade
    
  • La versión más reciente de la extensión Azure Container Apps para la CLI de Azure. Para asegurarse de que ejecuta la versión más reciente, ejecute el siguiente comando.

    az extension add --name containerapp --upgrade --allow-preview true
    

    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.

Para obtener más información sobre los requisitos previos y la configuración, consulte Inicio rápido: Implemente su primera aplicación en contenedor con containerapp up.

Establecimiento de variables de entorno

Establezca las siguientes variables de entorno.

RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
VNET_NAME="my-custom-vnet"
SUBNET_NAME="my-custom-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"

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 una red virtual

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.

  1. Cree una red virtual (VNet) de Azure para asociarla al entorno de Container Apps. La red virtual debe tener una subred disponible para la implementación del entorno. Puede usar una red virtual existente, pero los puntos de conexión privados solo son compatibles con entornos de perfiles de carga de trabajo, que requieren una subred con un intervalo CIDR mínimo de /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
    
  2. Cree una subred para asociarla a la red virtual y para contener el punto de conexión privado.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Recupere el identificador de subred. Se usa para crear el punto de conexión privado.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --query "id" \
        --output tsv)
    

Creación de un entorno

  1. Cree el entorno de Container Apps mediante la red virtual implementada en los pasos anteriores. Los puntos de conexión privados solo son compatibles con entornos de perfiles de carga de trabajo, que es el tipo predeterminado para los nuevos entornos.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Recupere el identificador de entorno. Se usa para configurar el entorno.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Deshabilite el acceso a la red pública para el entorno. Esto es necesario para habilitar puntos de conexión privados.

    az containerapp env update \
        --id $ENVIRONMENT_ID \
        --public-network-access Disabled
    

Creación de un punto de conexión privado

Cree el punto de conexión privado en el entorno y la subred que creó anteriormente.

az network private-endpoint create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --name $PRIVATE_ENDPOINT \
    --subnet $SUBNET_ID \
    --private-connection-resource-id $ENVIRONMENT_ID \
    --connection-name $PRIVATE_ENDPOINT_CONNECTION \
    --group-id managedEnvironments

Configuración de la zona DNS privada

  1. Recupere la dirección IP del punto de conexión privado. Se usa para agregar un registro DNS a la zona DNS privada.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Recupere el dominio predeterminado del entorno. Se usa para agregar un registro DNS a la zona DNS privada.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Cree una zona DNS privada.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Cree un vínculo entre la red virtual y la zona DNS privada.

    az network private-dns link vnet create \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --name $DNS_LINK \
        --virtual-network $VNET_NAME \
        --registration-enabled false
    
  5. Agregue un registro para el punto de conexión privado a la zona DNS privada.

    az network private-dns record-set a add-record \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --record-set-name $DNS_RECORD_NAME \
        --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
    

Implementación de una aplicación de contenedor

Implemente una aplicación de contenedor en su entorno. Esta aplicación contenedora simplemente usa la imagen de inicio rápido.

Cuando se navega al punto final de la aplicación contenedora, se recibeERR_CONNECTION_CLOSED porque su entorno de la aplicación contenedora tiene deshabilitado el acceso público. En su lugar, puede acceder a la aplicación contenedora mediante el punto de conexión privado.

az containerapp up \
    --name $CONTAINERAPP_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT_NAME \
    --image mcr.microsoft.com/k8se/quickstart:latest \
    --target-port 80 \
    --ingress external \
    --query properties.configuration.ingress.fqdn

Comprobación de la conexión del punto de conexión privado

En esta sección, creará una máquina virtual asociada a la red virtual para que pueda acceder a la aplicación de contenedor que definió mediante el punto de conexión privado.

Creación de una máquina virtual (VM)

Para empezar, inicie sesión en Azure Portal.

  1. Busque Máquinas virtuales en la barra de búsqueda superior.

  2. En los resultados de la búsqueda, selecciona Máquinas virtuales.

  3. Seleccione Crear.

  4. En la página Crear una máquina virtual de la pestaña Aspectos básicos, escriba los valores siguientes.

    Configuración Acción
    Subscription Seleccione su suscripción a Azure.
    Resource group Seleccione my-container-apps.
    Nombre de la máquina virtual Escriba azurevm.
    Region Seleccione Centro de EE. UU.
    Opciones de disponibilidad Seleccione No se requiere redundancia de la infraestructura.
    Tipo de seguridad Seleccione Estándar.
    Imagen Seleccione Windows Server 2022 Datacenter : Azure Edition - x64 Gen2.
    Nombre de usuario escriba usuarioazure.
    Contraseña Escriba una contraseña.
    Confirmación de la contraseña Vuelva a escribir la contraseña.
    Puertos de entrada públicos Selecciona Ninguno.
  5. En la pestaña redes, escriba los valores siguientes.

    Configuración Acción
    Red virtual Seleccione my-private-endpoint-vnet.
    Subnet Seleccione my-private-endpoint-vnet-subnet (10.0.0.0/23).
    Dirección IP pública Selecciona Ninguno.
    Grupo de seguridad de red de NIC Seleccione Advanced (Avanzadas).
  6. Seleccione Revisar + crear.

  7. Seleccione Crear.

Establecimiento de variables de entorno

Establezca las siguientes variables de entorno.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Creación de una máquina virtual (VM)

Ejecute el siguiente comando:

az vm create \
    --resource-group $RESOURCE_GROUP \
    --name $VM_NAME \
    --image Win2022Datacenter \
    --public-ip-address "" \
    --vnet-name $VNET_NAME \
    --subnet $SUBNET_NAME \
    --admin-username $VM_ADMIN_USERNAME

Después de ejecutar este comando, se le pedirá una contraseña de administrador para la máquina virtual.

El nombre de usuario del administrador debe tener entre 1 y 20 caracteres.

La contraseña de administrador tiene los siguientes requisitos:

  • Debe tener entre 12 y 123 caracteres.
  • Debe tener 3 de los siguientes tipos de caracteres: 1 letra minúscula, 1 letra mayúscula, 1 número y 1 carácter especial.

Comprobación de la conexión

  1. Para empezar, inicie sesión en Azure Portal.

  2. Busque la máquina virtual que creó en la barra de búsqueda superior y selecciónela en los resultados de búsqueda.

  3. En la página Información general de la máquina virtual, seleccione Conectary, a continuación, seleccione Conectar a través de Bastion.

  4. En la página Bastion, seleccione Deploy Bastion.

  5. Establezca Nombre de usuario y contraseña de máquina virtual en el nombre de usuario y la contraseña que usó al crear la máquina virtual.

  6. Seleccione Conectar.

  7. Después de conectarse, ejecute PowerShell en la máquina virtual.

  8. En PowerShell, ejecute el siguiente comando. Reemplace los <PLACEHOLDERS> por sus valores.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    La salida es similar al ejemplo siguiente, con los valores que reemplazan los <PLACEHOLDERS>.

    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io
    
    Address:  10.0.0.4
    Aliases:  <CONTAINER_APP_ENDPOINT>
    
  9. Abra un explorador en la máquina virtual.

  10. Vaya al punto de conexión de la aplicación contenedora. Verá la salida de la imagen de la aplicación de contenedor de inicio rápido.

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