使用 Azure Front Door 建立 Azure Container App 的私人連結 (預覽)
在本文中,您將瞭解如何使用私人連結,而不是公用因特網,直接從 Azure Front Door 連線到您的 Azure Container Apps。 在本教學課程中,您會建立 Azure Container Apps 工作負載配置文件環境、Azure Front Door,並透過私人連結安全地連線它們。 然後,確認容器應用程式與 Azure Front Door 之間的連線能力。
必要條件
具有有效訂用帳戶的 Azure 帳戶。
- 如果您沒有,可以免費建立一個。
此功能僅適用於 Azure CLI。 若要確保您執行最新版的 Azure CLI,請執行下列命令。
az upgrade
Azure CLI 最新版的 Azure Container Apps 擴充功能。 若要確保您執行最新版本,請執行下列命令。
az extension add --name containerapp --upgrade --allow-preview true
注意
從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用
--allow-preview true
安裝容器應用程式延伸模組。此功能僅支援工作負載配置文件環境。
如需必要條件和設定的詳細資訊,請參閱 快速入門:使用 containerapp up 部署您的第一個容器應用程式。
設定環境變數
設定下列環境變數。
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"
建立 Azure 資源群組
建立資源群組,以組織與容器應用程式部署相關的服務。
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
建立環境
建立 Container Apps 環境。
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
擷取環境標識碼。 您可以使用此選項來設定環境。
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)
停用環境的公用網路存取。
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
部署容器應用程式
執行下列命令,在您的環境中部署容器應用程式。
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
擷取您的容器應用程式端點。
ACA_ENDPOINT=$(az containerapp show \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.configuration.ingress.fqdn \ --output tsv)
如果您瀏覽至容器應用程式端點,您會收到
ERR_CONNECTION_CLOSED
,因為容器應用程式環境已停用公用存取。 相反地,您會使用 AFD 端點來存取容器應用程式。
建立 Azure Front Door 設定檔
建立 AFD 設定檔。 在具有 SKU Standard_AzureFrontDoor
的 AFD 配置檔中,不支援私人連結。
az afd profile create \
--profile-name $AFD_PROFILE \
--resource-group $RESOURCE_GROUP \
--sku Premium_AzureFrontDoor
建立 Azure Front Door 端點
將端點新增至 AFD 配置檔。
az afd endpoint create \
--resource-group $RESOURCE_GROUP \
--endpoint-name $AFD_ENDPOINT \
--profile-name $AFD_PROFILE \
--enabled-state Enabled
建立 Azure Front Door 原始群組
建立 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
建立 Azure Front Door 來源
將 AFD 來源新增至您的原始群組。
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
列出私人端點連線
執行下列命令以列出您環境的私人端點連線。
az network private-endpoint-connection list \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --type Microsoft.App/managedEnvironments
從回應中記錄私人端點連線資源標識碼。 私人端點連線的值
AFD Private Link Request
為properties.privateLinkServiceConnectionState.description
。 私人端點聯機資源標識碼如下所示。/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
請勿將此與私人端點標識符混淆,如下所示。
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
核准私人端點連線
執行下列命令以核准連線。 將 <PLACEHOLDER> 取代為您在上一節中記錄的私人端點連線資源識別碼。
az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>
新增路由
執行下列命令,將您稍早建立的端點對應至原始群組。 Azure Container Apps 上的私人端點僅支援輸入 HTTP 流量。 不支援 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
從 Azure Front Door 存取您的容器應用程式
擷取 AFD 端點的主機名。
az afd endpoint show \ --resource-group $RESOURCE_GROUP \ --profile-name $AFD_PROFILE \ --endpoint-name $AFD_ENDPOINT \ --query hostName \ --output tsv
您的主機名看起來像下列範例。
my-afd-endpoint.<HASH>.b01.azurefd.net
流覽至主機名。 您會看到快速入門容器應用程式映像的輸出。
您的 AFD 設定檔需要幾分鐘的時間才能全域部署,因此如果您一開始看不到預期的輸出,請稍候幾分鐘再重新整理。
清除資源
如果您不打算繼續使用此應用程式,可以移除 my-container-apps 資源群組。 這會刪除 Azure 容器應用程式執行個體和所有相關聯的服務。 也會刪除容器應用程式服務自動建立,且其中包含自訂網路元件的資源群組。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本指南範圍以外的資源存在於指定的資源群組中,則也會一併刪除。
az group delete --name $RESOURCE_GROUP