Sdílet prostřednictvím


Vytvoření privátního odkazu na aplikaci kontejneru Azure pomocí služby Azure Front Door (Preview)

V tomto článku se dozvíte, jak se připojit přímo ze služby Azure Front Door ke službě Azure Container Apps pomocí privátního propojení místo veřejného internetu. V tomto kurzu vytvoříte prostředí profilů úloh Azure Container Apps, službu Azure Front Door a bezpečně je připojíte prostřednictvím privátního propojení. Pak ověříte připojení mezi vaší aplikací kontejneru a službou Azure Front Door.

Požadavky

  • Účet Azure s aktivním předplatným.

  • Tato funkce je dostupná jenom v Azure CLI. Pokud chcete zajistit, že používáte nejnovější verzi Azure CLI, spusťte následující příkaz.

    az upgrade
    
  • Nejnovější verze rozšíření Azure Container Apps pro Azure CLI Pokud chcete zajistit, že používáte nejnovější verzi, spusťte následující příkaz.

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

    Poznámka:

    Od května 2024 už rozšíření Azure CLI ve výchozím nastavení nepovolují funkce ve verzi Preview. Pokud chcete získat přístup k funkcím Container Apps ve verzi Preview, nainstalujte rozšíření Container Apps pomocí --allow-preview truenástroje .

  • Tato funkce je podporovaná jenom pro prostředí profilu úloh.

Další informace o požadavcích a nastavení najdete v tématu Rychlý start: Nasazení první aplikace kontejneru s využitím containerapp upu.

Nastavení proměnných prostředí

Nastavte následující proměnné prostředí.

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"

Vytvoření skupiny prostředků Azure

Vytvořte skupinu prostředků pro uspořádání služeb souvisejících s nasazením aplikace kontejneru.

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

Vytvořit prostředí

  1. Vytvořte prostředí Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Načtěte ID prostředí. Použijete ho ke konfiguraci prostředí.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Zakažte přístup k veřejné síti pro prostředí.

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

Nasazení aplikace typu kontejner

  1. Spuštěním následujícího příkazu nasaďte aplikaci kontejneru ve vašem prostředí.

    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. Načtěte koncový bod aplikace kontejneru.

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

    Pokud přejdete ke koncovému bodu aplikace kontejneru, obdržíte ERR_CONNECTION_CLOSED , protože prostředí aplikace kontejneru má zakázaný veřejný přístup. Místo toho použijete koncový bod AFD pro přístup k vaší aplikaci kontejneru.

Vytvoření profilu služby Azure Front Door

Vytvořte profil AFD. Private Link není podporován pro původy v profilu AFD s SKU Standard_AzureFrontDoor.

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

Vytvoření koncového bodu služby Azure Front Door

Přidejte koncový bod do profilu AFD.

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

Vytvoření skupiny původu služby Azure Front Door

Vytvořte skupinu původu 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

Vytvoření zdroje služby Azure Front Door

Přidejte zdroj AFD do skupiny původu.

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

Výpis připojení privátních koncových bodů

  1. Spuštěním následujícího příkazu zobrazte seznam připojení privátního koncového bodu pro vaše prostředí.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Poznamenejte si ID prostředku připojení privátního koncového bodu z odpovědi. Připojení privátního koncového AFD Private Link Requestbodu má properties.privateLinkServiceConnectionState.description hodnotu . ID prostředku připojení privátního koncového bodu vypadá takto.

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

    Nezaměňujte ho s ID privátního koncového bodu, které vypadá takto.

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

Schválení připojení privátního koncového bodu

Spuštěním následujícího příkazu schvalte připojení. <Zástupný symbol nahraďte> ID prostředku připojení privátního koncového bodu, které jste si poznamenali v předchozí části.

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

Přidat trasu

Spuštěním následujícího příkazu namapujte koncový bod, který jste vytvořili dříve, na skupinu původu. Privátní koncové body v Azure Container Apps podporují pouze příchozí provoz HTTP. Provoz TCP není podporován.

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

Přístup k aplikaci kontejneru z Azure Front Dooru

  1. Načtěte název hostitele vašeho koncového bodu AFD.

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

    Název hostitele vypadá jako v následujícím příkladu.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Přejděte na název hostitele. Zobrazí se výstup image kontejnerové aplikace pro rychlý start.

    Globální nasazení profilu AFD trvá několik minut, takže pokud zpočátku nevidíte očekávaný výstup, počkejte několik minut a pak aktualizujte.

Vyčištění prostředků

Pokud tuto aplikaci nebudete dál používat, můžete odebrat skupinu prostředků my-container-apps . Tím se odstraní instance Azure Container Apps a všechny přidružené služby. Odstraní také skupinu prostředků, kterou služba Container Apps automaticky vytvořila a která obsahuje vlastní síťové komponenty.

Upozornění

Následující příkaz odstraní zadanou skupinu prostředků a všechny prostředky obsažené v ní. Pokud prostředky mimo rozsah tohoto průvodce existují v zadané skupině prostředků, odstraní se také.

az group delete --name $RESOURCE_GROUP