Compartir vía


Creación de un vínculo privado a una aplicación de contenedor de Azure con Azure Front Door (versión preliminar)

En este artículo, aprenderá a conectarse directamente desde Azure Front Door a Azure Container Apps mediante un vínculo privado en lugar de la red pública de Internet. En este tutorial, se crea un entorno de perfiles de carga de trabajo de Azure Container Apps, una Azure Front Door, y se conectan de forma segura a través de un vínculo privado. A continuación, verifique la conectividad entre su aplicación de contenedor y Azure Front Door.

Requisitos previos

  • Cuenta de Azure con una suscripción activa.

  • Esta característica solo está disponible con CLI de Azure. Para asegurarse de que ejecuta la versión más reciente de la CLI de Azure, 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.

  • Esta característica solo se admite para entornos de perfil de carga de trabajo.

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"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"

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

  1. Creación del entorno de Container Apps.

    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.

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

Implementación de una aplicación de contenedor

  1. Ejecute el siguiente comando para implementar una aplicación de contenedor en su entorno.

    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
    
  2. Recupere el punto de conexión de la aplicación contenedora.

    ACA_ENDPOINT=$(az containerapp show \
        --name $CONTAINERAPP_NAME \
        --resource-group $RESOURCE_GROUP \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    

    Si va al punto de conexión de la aplicación contenedora, recibirá ERR_CONNECTION_CLOSED porque el entorno de la aplicación contenedora tiene deshabilitado el acceso público. En su lugar, se usa un punto de conexión de AFD para acceder a la aplicación de contenedor.

Creación de un perfil de Azure Front Door

Cree un perfil de AFD. El vínculo privado no se admite para orígenes en un perfil AFD con SKU Standard_AzureFrontDoor.

az afd profile create \
    --profile-name $AFD_PROFILE \
    --resource-group $RESOURCE_GROUP \
    --sku Premium_AzureFrontDoor

Creación de un punto de conexión de Azure Front Door

Agregue un punto de conexión al perfil de AFD.

az afd endpoint create \
    --resource-group $RESOURCE_GROUP \
    --endpoint-name $AFD_ENDPOINT \
    --profile-name $AFD_PROFILE \
    --enabled-state Enabled

Creación de un grupo de origen de Azure Front Door

Cree un grupo de origen de AFD.

az afd origin-group create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --profile-name $AFD_PROFILE \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 60 \
    --probe-path / \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

Cree un origen de Azure Front Door

Agregue un origen de AFD al grupo de origen.

az afd origin create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --origin-name $AFD_ORIGIN \
    --profile-name $AFD_PROFILE \
    --host-name $ACA_ENDPOINT \
    --origin-host-header $ACA_ENDPOINT \
    --priority 1 \
    --weight 500 \
    --enable-private-link true \
    --private-link-location $LOCATION \
    --private-link-request-message "AFD Private Link Request" \
    --private-link-resource $ENVIRONMENT_ID \
    --private-link-sub-resource-type managedEnvironments

Enumeración de conexiones de punto de conexión privado

  1. Ejecute el siguiente comando para enumerar las conexiones de punto de conexión privado para su entorno.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Registre el id. del recurso de conexión del punto de conexión privado de la respuesta. La conexión del punto de conexión privado tiene un properties.privateLinkServiceConnectionState.description valor de AFD Private Link Request. El id. de recurso de conexión del punto de conexión privado es similar al siguiente.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
    

    No confunda esto con el id. de punto de conexión privado, que es similar al siguiente.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
    

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

Ejecute el siguiente comando para aprobar la conexión. Reemplace <MARCADOR DE POSICIÓN> por el id. de recurso de conexión de punto de conexión privado que registró en la sección anterior.

az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>

Agregar una ruta

Ejecute el siguiente comando para asignar el punto de conexión que creó anteriormente al grupo de origen. Los puntos de conexión privados en Azure Container Apps solo admiten el tráfico HTTP entrante. No se admite el tráfico TCP.

az afd route create \
    --resource-group $RESOURCE_GROUP \
    --profile-name $AFD_PROFILE \
    --endpoint-name $AFD_ENDPOINT \
    --forwarding-protocol MatchRequest \
    --route-name $AFD_ROUTE \
    --https-redirect Enabled \
    --origin-group $AFD_ORIGIN_GROUP \
    --supported-protocols Http Https \
    --link-to-default-domain Enabled

Acceso a la aplicación de contenedor desde Azure Front Door

  1. Recupere el nombre de host del punto de conexión de AFD.

    az afd endpoint show \
        --resource-group $RESOURCE_GROUP \
        --profile-name $AFD_PROFILE \
        --endpoint-name $AFD_ENDPOINT \
        --query hostName \
        --output tsv
    

    El nombre de host es similar al siguiente ejemplo.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Vaya al nombre de host. Verá la salida de la imagen de la aplicación de contenedor de inicio rápido.

    El perfil de AFD tarda unos minutos en implementarse globalmente, por lo que si no ve el resultado esperado al principio, espere unos minutos y luego actualice.

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