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.
- Falls Sie keins haben, können Sie kostenlos eins erstellen.
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
Erstellen Sie die Container Apps-Umgebung.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
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)
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
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
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.
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
Notieren Sie die Ressourcen-ID der privaten Endpunktverbindung aus der Antwort. Die private Endpunktverbindung hat den
properties.privateLinkServiceConnectionState.description
-WertAFD 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
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
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