Freigeben über


Erstellen einer privaten Verbindung mit einer Azure-Container-App mit Azure Front Door (Vorschau)

In diesem Artikel erfahren Sie, wie Sie über eine private Verbindung anstelle des öffentlichen Internets eine direkte Verbindung von Azure Front Door mit Azure Container Apps herstellen. In diesem Tutorial erstellen Sie eine Umgebung für Azure Container Apps-Workloadprofile und eine Azure Front Door-Instanz und verbinden sie sicher über eine private Verbindung. Anschließend überprüfen Sie die Konnektivität zwischen Ihrer Container-App und Azure Front Door.

Voraussetzungen

  • Azure-Konto mit einem aktiven Abonnement.

  • Dieses Feature ist nur mit der Azure CLI verfügbar. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie die aktuelle Version der Azure CLI ausführen.

    az upgrade
    
  • Die aktuelle Version der Azure Container Apps-Erweiterung für die Azure CLI. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie die aktuelle Version ausführen.

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

    Hinweis

    Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true.

  • Dieses Feature wird nur für Workloadprofilumgebungen unterstützt.

Weitere Informationen zu Voraussetzungen und Setup finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App mit „containerapp up“.

Festlegen von Umgebungsvariablen

Legen Sie die folgenden Umgebungsvariablen fest.

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"

Erstellen einer Azure-Ressourcengruppe

Erstellen Sie eine Ressourcengruppe, um die Dienste im Zusammenhang mit der Bereitstellung Ihrer Container-App zu organisieren.

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

Erstellen einer Umgebung

  1. Erstellen Sie die Container Apps-Umgebung.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Rufen Sie die Umgebungs-ID ab. Sie verwenden diese zum Konfigurieren der Umgebung.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Deaktivieren Sie den Zugriff über öffentliche Netzwerke für die Umgebung.

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

Bereitstellen einer Container-App

  1. Führen Sie den folgenden Befehl aus, um eine Container-App in der Umgebung bereitzustellen.

    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. Rufen Sie den Container-App-Endpunkt ab.

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

    Wenn Sie zum Container-App-Endpunkt navigieren, wird ERR_CONNECTION_CLOSED angezeigt, da für die Container-App-Umgebung der öffentliche Zugriff deaktiviert ist. Stattdessen verwenden Sie einen AFD-Endpunkt, um auf Ihre Container-App zuzugreifen.

Erstellen eines Azure Front Door-Profils

Erstellen Sie ein AFD-Profil. Eine private Verbindung wird für Ursprünge in einem AFD-Profil mit der SKU Standard_AzureFrontDoor nicht unterstützt.

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

Erstellen eines Azure Front Door-Endpunkts

Fügen Sie Ihrem AFD-Profil einen Endpunkt hinzu.

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

Erstellen einer Azure Front Door-Ursprungsgruppe

Erstellen Sie eine AFD-Ursprungsgruppe.

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

Erstellen eines Azure Front Door-Ursprungs

Fügen Sie Ihrer Ursprungsgruppe einen AFD-Ursprung hinzu.

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

Listet Verbindungen mit privaten Endpunkten auf.

  1. Führen Sie den folgenden Befehl aus, um die privaten Endpunktverbindungen für Ihre Umgebung aufzulisten.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Notieren Sie die Ressourcen-ID der privaten Endpunktverbindung aus der Antwort. Die private Endpunktverbindung hat den properties.privateLinkServiceConnectionState.description-Wert AFD Private Link Request. Die Ressourcen-ID der privaten Endpunktverbindung sieht wie folgt aus.

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

    Verwechseln Sie sie nicht mit der ID des privaten Endpunkts, die wie folgt aussieht.

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

Genehmigen der Verbindung mit einem privaten Endpunkt

Führen Sie den folgenden Befehl aus, um die Verbindung zu genehmigen. Ersetzen Sie <PLACEHOLDER> durch die Ressourcen-ID der privaten Endpunktverbindung, die Sie im vorherigen Abschnitt notiert haben.

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

Hinzufügen einer Route

Führen Sie den folgenden Befehl aus, um den zuvor erstellten Endpunkt der Ursprungsgruppe zuzuordnen. Private Endpunkte in Azure Container Apps unterstützen nur eingehenden HTTP-Datenverkehr. TCP-Datenverkehr wird nicht unterstützt.

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

Zugreifen auf Ihre Container-App über Azure Front Door

  1. Rufen Sie den Hostnamen des AFD-Endpunkts ab.

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

    Der Hostname sieht in etwa wie das folgende Beispiel aus.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Navigieren Sie zum Hostnamen. Die Ausgabe für das Container-App-Image des Schnellstarts wird angezeigt.

    Es dauert ein paar Minuten, bis Ihr AFD-Profil global bereitgestellt wird. Wenn die erwartete Ausgabe also zunächst nicht angezeigt wird, warten Sie einige Minuten, und aktualisieren Sie dann die Anzeige.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiter verwenden möchten, können Sie die Ressourcengruppe my-container-apps entfernen. Dadurch werden die Azure Container Apps-Instanz und alle zugehörigen Dienste gelöscht. Außerdem wird die Ressourcengruppe gelöscht, die der Container Apps-Dienst automatisch erstellt hat und die die benutzerdefinierten Netzwerkkomponenten enthält.

Achtung

Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Falls in der angegebenen Ressourcengruppe Ressourcen enthalten sind, die nicht zum Umfang dieses Leitfadens gehören, werden sie ebenfalls gelöscht.

az group delete --name $RESOURCE_GROUP