在本文中,您將瞭解如何使用私人連結,而不是公用因特網,直接從 Azure Front Door 連線到您的 Azure Container Apps。 在本教學課程中,您會建立 Azure Container Apps 工作負載配置文件環境、Azure Front Door,並透過私人連結安全地連線它們。 然後,確認容器應用程式與 Azure Front Door 之間的連線能力。
必要條件
具有有效訂用帳戶的 Azure 帳戶。
- 如果您沒有,可以免費建立一個。
此功能僅支援工作負載配置文件環境。
請確定
Microsoft.Cdn
資源提供者已註冊到您的訂閱帳戶中。- 登入 Azure 入口網站後即可開始。
- 流覽至您的訂用帳戶頁面,然後選取 [ 設定>資源提供者]。
- 從提供者清單中選取 [Microsoft.Cdn ]。
- 選取 註冊。
建立容器應用程式
建立資源群組,以組織與容器應用程式部署相關的服務。
在頂端搜尋列中搜尋容器應用程式。
在搜尋結果中選取容器應用程式。
選擇建立按鈕。
在 [ 建立容器應用程式] 頁面的 [ 基本] 索引標籤中,執行下列動作。
設定 行動 訂閱 選取您的 Azure 訂用帳戶。 資源群組 選取 [ 建立新的資源群組] 鏈接,然後輸入 my-container-apps。 容器應用程式名稱 輸入 my-container-app。 部署來源 選取 [容器映像]。 區域 選取 [美國中部]。 在 [ 建立容器應用程式環境] 字段中,選取 [ 建立新的環境] 連結。
在 [ 建立容器應用程式環境] 頁面的 [ 基本] 索引標籤中,輸入下列值:
設定 價值觀 環境名稱 輸入 my-environment。 區域備援 選取 [停用] 選擇 網路 標籤。
將 [公用網络存取] 設定為 [停用]:封鎖來自公用因特網的所有連入流量。
將 [使用您自己的虛擬網络] 保留為 [否]。
將 [啟用私人端點 ] 保留為 [否]。
選取 ,創建。
在 [ 建立容器應用程式] 頁面中,選取 [容器] 索引卷標。
選取 [使用快速入門映像]。
部署容器應用程式
選取頁面底部的 [檢閱和建立]。
如果沒有找到任何錯誤,即會啟用 [建立] 按鈕。
如果發生錯誤,則包含錯誤的任何索引標籤都會以紅點標示。 瀏覽至適當的索引標籤。含有錯誤的欄位會以紅色醒目提示。 修正所有錯誤之後,請再次選取 [檢閱及建立]。
選取 ,創建。
即會顯示含有「部署正在進行中」訊息的頁面。 部署成功完成之後,您會看到訊息:「您的部署已完成」。
確認部署
選取 [移至資源],以檢視您新的容器應用程式。
選取 [應用程式 URL] 旁的連結,以檢視您的應用程式。
當您瀏覽至容器應用程式端點時,您會看到下列訊息:
The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
相反地,您會使用 Azure Front Door 端點來存取容器應用程式。
建立 Azure Front Door 配置檔和端點
在頂端搜尋列中搜尋 Front Door 。
選取搜尋結果中的 Front Door 和 CDN 配置檔 。
選取 Azure Front Door 和 快速建立。
選取 [ 繼續] 以建立 Front Door 按鈕。
在 建立 Front Door 配置檔 頁面的 基本 分頁標籤中,執行下列動作。
設定 行動 資源群組 選取 my-container-apps。 名稱 輸入 my-afd-profile。 等級 選取 Premium。 標準層上 Azure Front Door 的來源不支援私人連結。 端點名稱 輸入 my-afd-endpoint。 原始類型 選取 [容器應用程式]。 原點主機名稱 輸入容器應用程式的主機名。 您的主機名看起來像下列範例: my-container-app.orangeplant-77e5875b.centralus.azurecontainerapps.io
。啟用私人連結服務 啟用此設定。 區域 選取 美國中部。 目標子資源 選取 managedEnvironments。 要求訊息 輸入 AFD Private Link 請求。 選擇 檢閱 + 創建。
選取 ,創建。
部署完成之後,選取 [移至資源]。
在 Front Door 和 CDN 配置檔 概觀頁面中,尋找 您的端點主機名。 它看起來像下列範例。 記下此主機名。
my-afd-endpoint.<HASH>.b01.azurefd.net
核准私人端點連線要求
流覽至您先前建立的環境 my-environment 的概覽頁面。
展開 設定>網路。
您會看到私人端點連線要求的連結。 例如:
1 private endpoint
。 選取此連結。在 [ 私人端點連線 ] 頁面中,使用描述
AFD Private Link Request
核准每個私人端點連線要求。注意
Azure Front Door 有一個已知問題,其中可能會建立多個私人端點連線要求。
從 Azure Front Door 存取您的容器應用程式
流覽至您先前記錄的 Azure Front Door 端點主機名。 您會看到快速入門容器應用程式映像的輸出。 全域部署可能需要幾分鐘的時間才能部署,因此如果您沒有看到預期的輸出,請等候幾分鐘再重新整理。
清除資源
如果您不打算繼續使用此應用程式,可以移除資源群組來刪除容器應用程式和所有相關聯的服務。
從 [概觀] 區段中選取 [my-container-apps] 資源群組。
選取資源群組 [概觀] 頂端的 [刪除資源群組] 按鈕。
在 [確定要刪除「my-container-apps」] 確認對話方塊中,輸入資源組名稱 my-container-apps。
選擇 刪除。
刪除資源群組的流程可能需要幾分鐘的時間才能完成。
必要條件
具有有效訂用帳戶的 Azure 帳戶。
- 如果您沒有,可以免費建立一個。
若要確保您執行最新版的 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 設定檔
請確定
Microsoft.Cdn
資源提供者已註冊到您的訂閱帳戶中。az provider register --namespace Microsoft.Cdn
建立 AFD 設定檔。 在 AFD 配置檔中具有 SKU
Standard_AzureFrontDoor
的來源,不支援私有連結。
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
從回應中記錄私人端點連線資源標識碼。 私人端點連線的值
properties.privateLinkServiceConnectionState.description
為AFD Private Link Request
。 私人端點聯機資源標識碼如下所示。/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
流覽至主機名。 您會看到快速入門容器應用程式映像的輸出。
如果您一開始看不到預期的輸出,請稍候幾分鐘,然後重新整理。
清除資源
如果您不打算繼續使用此應用程式,可以移除 my-container-apps 資源群組。 此動作會刪除 Azure Container Apps 實例和所有相關聯的服務。 也會刪除容器應用程式服務自動建立,且其中包含自訂網路元件的資源群組。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本指南範圍以外的資源存在於指定的資源群組中,也會予以刪除。
az group delete --name $RESOURCE_GROUP
小提示
有問題嗎? 在 Azure 容器應用程式存放庫 (英文) 中提出問題,讓我們在 GitHub 上了解該問題。