分享方式:


使用 Azure Front Door 建立 Azure 容器應用程式的私人連結

在本文中,您將瞭解如何使用私人連結,而不是公用因特網,直接從 Azure Front Door 連線到您的 Azure Container Apps。 在本教學課程中,您會建立 Azure Container Apps 工作負載配置文件環境、Azure Front Door,並透過私人連結安全地連線它們。 然後,確認容器應用程式與 Azure Front Door 之間的連線能力。

必要條件

  • 具有有效訂用帳戶的 Azure 帳戶。

  • 此功能僅支援工作負載配置文件環境。

  • 請確定 Microsoft.Cdn 資源提供者已註冊到您的訂閱帳戶中。

    1. 登入 Azure 入口網站後即可開始。
    2. 流覽至您的訂用帳戶頁面,然後選取 [ 設定>資源提供者]。
    3. 從提供者清單中選取 [Microsoft.Cdn ]。
    4. 選取 註冊

建立容器應用程式

建立資源群組,以組織與容器應用程式部署相關的服務。

  1. 在頂端搜尋列中搜尋容器應用程式

  2. 在搜尋結果中選取容器應用程式

  3. 選擇建立按鈕。

  4. 在 [ 建立容器應用程式] 頁面的 [ 基本] 索引標籤中,執行下列動作。

    設定 行動
    訂閱 選取您的 Azure 訂用帳戶。
    資源群組 選取 [ 建立新的資源群組] 鏈接,然後輸入 my-container-apps
    容器應用程式名稱 輸入 my-container-app
    部署來源 選取 [容器映像]
    區域 選取 [美國中部]
  5. 在 [ 建立容器應用程式環境] 字段中,選取 [ 建立新的環境] 連結。

  6. 在 [ 建立容器應用程式環境] 頁面的 [ 基本] 索引標籤中,輸入下列值:

    設定 價值觀
    環境名稱 輸入 my-environment
    區域備援 選取 [停用]
  7. 選擇 網路 標籤。

  8. [公用網络存取] 設定為 [停用]:封鎖來自公用因特網的所有連入流量。

  9. 將 [使用您自己的虛擬網络] 保留為 []。

  10. [啟用私人端點 ] 保留為 [否]。

  11. 選取 ,創建

  12. 在 [ 建立容器應用程式] 頁面中,選取 [容器] 索引卷標。

  13. 選取 [使用快速入門映像]

部署容器應用程式

  1. 選取頁面底部的 [檢閱和建立]

    如果沒有找到任何錯誤,即會啟用 [建立] 按鈕。

    如果發生錯誤,則包含錯誤的任何索引標籤都會以紅點標示。 瀏覽至適當的索引標籤。含有錯誤的欄位會以紅色醒目提示。 修正所有錯誤之後,請再次選取 [檢閱及建立]

  2. 選取 ,創建

    即會顯示含有「部署正在進行中」訊息的頁面。 部署成功完成之後,您會看到訊息:「您的部署已完成」

確認部署

  1. 選取 [移至資源],以檢視您新的容器應用程式。

  2. 選取 [應用程式 URL] 旁的連結,以檢視您的應用程式。

  1. 當您瀏覽至容器應用程式端點時,您會看到下列訊息:

    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 配置檔和端點

  1. 在頂端搜尋列中搜尋 Front Door

  2. 選取搜尋結果中的 Front Door 和 CDN 配置檔

  3. 選取 Azure Front Door快速建立

  4. 選取 [ 繼續] 以建立 Front Door 按鈕。

  5. 建立 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 請求
  6. 選擇 檢閱 + 創建

  7. 選取 ,創建

  8. 部署完成之後,選取 [移至資源]。

  9. Front Door 和 CDN 配置檔 概觀頁面中,尋找 您的端點主機名。 它看起來像下列範例。 記下此主機名。

    my-afd-endpoint.<HASH>.b01.azurefd.net
    

核准私人端點連線要求

  1. 流覽至您先前建立的環境 my-environment 的概覽頁面。

  2. 展開 設定>網路

  3. 您會看到私人端點連線要求的連結。 例如: 1 private endpoint 。 選取此連結。

  4. 在 [ 私人端點連線 ] 頁面中,使用描述 AFD Private Link Request核准每個私人端點連線要求。

    注意

    Azure Front Door 有一個已知問題,其中可能會建立多個私人端點連線要求。

從 Azure Front Door 存取您的容器應用程式

流覽至您先前記錄的 Azure Front Door 端點主機名。 您會看到快速入門容器應用程式映像的輸出。 全域部署可能需要幾分鐘的時間才能部署,因此如果您沒有看到預期的輸出,請等候幾分鐘再重新整理。

清除資源

如果您不打算繼續使用此應用程式,可以移除資源群組來刪除容器應用程式和所有相關聯的服務。

  1. 從 [概觀] 區段中選取 [my-container-apps] 資源群組。

  2. 選取資源群組 [概觀] 頂端的 [刪除資源群組] 按鈕。

  3. 在 [確定要刪除「my-container-apps」] 確認對話方塊中,輸入資源組名稱 my-container-apps

  4. 選擇 刪除

    刪除資源群組的流程可能需要幾分鐘的時間才能完成。

必要條件

  • 具有有效訂用帳戶的 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

建立環境

  1. 建立 Container Apps 環境。

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. 擷取環境標識碼。 您可以使用此識別碼來設定環境。

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. 停用環境的公用網路存取。

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

部署容器應用程式

  1. 執行下列命令,在您的環境中部署容器應用程式。

    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. 擷取您的容器應用程式端點。

    ACA_ENDPOINT=$(az containerapp show \
        --name $CONTAINERAPP_NAME \
        --resource-group $RESOURCE_GROUP \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    
  3. 當您瀏覽至容器應用程式端點時,您會收到 ERR_CONNECTION_CLOSED ,因為容器應用程式環境已停用公用存取。 相反地,您會使用 AFD 端點來存取容器應用程式。

建立 Azure Front Door 設定檔

  1. 請確定 Microsoft.Cdn 資源提供者已註冊到您的訂閱帳戶中。

    az provider register --namespace Microsoft.Cdn
    
  2. 建立 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

列出私人端點連線

  1. 執行下列命令以列出您環境的私人端點連線。

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. 從回應中記錄私人端點連線資源標識碼。 私人端點連線的值properties.privateLinkServiceConnectionState.descriptionAFD 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 存取您的容器應用程式

  1. 擷取 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
    
  2. 流覽至主機名。 您會看到快速入門容器應用程式映像的輸出。

    如果您一開始看不到預期的輸出,請稍候幾分鐘,然後重新整理。

清除資源

如果您不打算繼續使用此應用程式,可以移除 my-container-apps 資源群組。 此動作會刪除 Azure Container Apps 實例和所有相關聯的服務。 也會刪除容器應用程式服務自動建立,且其中包含自訂網路元件的資源群組。

警告

下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本指南範圍以外的資源存在於指定的資源群組中,也會予以刪除。

az group delete --name $RESOURCE_GROUP

小提示

有問題嗎? 在 Azure 容器應用程式存放庫 (英文) 中提出問題,讓我們在 GitHub 上了解該問題。