共用方式為


為 Azure 容器應用程式環境提供虛擬網路

下列範例示範如何在現有的虛擬網路 (VNet) 建立容器應用程式環境。

登入 Azure 入口網站後即可開始。

建立容器應用程式

若要建立容器應用程式,請從 Azure 入口網站首頁開始操作。

  1. 在頂端搜尋列中搜尋容器應用程式
  2. 在搜尋結果中選取容器應用程式
  3. 選取 [建立] 按鈕。

[基本] 索引標籤

[基本] 索引標籤執行下列動作。

  1. [專案詳細資訊] 輸入下列值。

    設定 動作
    訂用帳戶 選取 Azure 訂用帳戶。
    資源群組 選取 [新建],然後輸入 my-container-apps
    容器應用程式名稱 輸入 my-container-app
    部署來源 選取 [容器映像]

建立環境

接下來,為您的容器應用程式建立環境。

  1. 選取適當的區域。

    設定
    區域 選取 [美國中部]
  2. [建立容器應用程式環境] 欄位,選取 [新建] 連結。

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

    設定
    環境名稱 輸入 my-environment
    環境類型 選取 [工作負載設定檔]
    區域備援 選取 [停用]
  4. 選取 [監控] 索引標籤以建立 Log Analytics 工作區。

  5. [Azure Log Analytics] 選為 [記錄目的地]

  6. [Log Analytics 工作區] 欄位選取 [新建] 連結,然後輸入下列值。

    設定
    名稱 輸入 my-container-apps-logs

    [位置] 欄位會預先填入「美國中部」

  7. 選取確定

您也可以選擇為容器應用程式環境部署私人 DNS。 如需詳細資訊,請參閱建立和設定 Azure 私人 DNS 區域

建立虛擬網路

附註

若要使用 VNet 搭配容器應用程式,VNet 必須有一個專用子網路,且在使用預設工作負載設定檔環境時,CIDR 範圍 /27 為或更大;在使用僅限舊有的 Consumption 環境時,CIDR 範圍 /23 必須達到或更大。 若要深入了解子網路大小調整,請參閱網路結構概觀 (部分機器翻譯)。

  1. 選取網路索引標籤。

  2. [使用您自己的虛擬網路] 旁選取 [是]

  3. [虛擬網路] 方塊旁,選取 [新建] 連結,然後輸入下列值。

    設定
    名稱 輸入 my-custom-vnet
  4. 選取確定按鈕。

  5. [基礎結構子網路] 方塊旁選取 [新建] 連結,然後輸入下列值:

    設定
    子網路名稱 輸入 infrastructure-subnet
    虛擬網路位址區塊 保留預設值。
    子網路位址區塊 保留預設值。
  6. 選取確定按鈕。

  7. [虛擬 IP] 底下,為外部環境選取 [外部],或為內部環境選取 [內部]

  8. 選取 建立

部署容器應用程式

  1. 在頁面底部,選擇 「評論+創建」。

    • 如果沒有發現錯誤,則會開啟 建立 按鈕。
    • 若有錯誤,任何包含錯誤的分頁會標示紅點。 去每個分頁看看。 包含錯誤的欄位會以紅色標示或以紅色 X 標示。修正所有錯誤後,再次選擇 檢視 + 建立
  2. 選取 建立

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

驗證部署

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

  2. 申請網址旁,點選連結以查看您的申請。

先決條件

  • 具有作用中訂用帳戶的 Azure 帳戶。
  • 安裝 Azure CLI 2.28.0 版或更新版本。

安裝程式

若要從 CLI 登入 Azure,請執行下列命令並遵循提示來完成驗證流程。

az login

若要確定您執行的是最新版本 CLI,請執行升級命令。

az upgrade

接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。

如果您在 Azure CLI 中執行 az containerapp 命令或在 PowerShell 中從 Az.App 模組執行 Cmdlet 時收到有關缺少參數的錯誤,請確定您已安裝最新版的 Azure 容器應用程式延伸模組。

az extension add --name containerapp --upgrade

附註

從 2024 年 5 月開始,Azure CLI 擴充功能預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true 安裝容器應用程式延伸模組。

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

現在已安裝目前的延伸模組或模組,請註冊 Microsoft.AppMicrosoft.OperationalInsights 命名空間。

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

設定環境變數

設定下列環境變數。 <PLACEHOLDERS> 將取代為您的值:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

建立 Azure 資源群組

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

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

建立環境

容器應用程式的環境會建立群組周圍的安全界限。 部署至相同環境的容器應用程式會部署在相同的虛擬網路中,並將記錄寫入相同的 Log Analytics 工作區。

註冊 Microsoft.ContainerService 提供者。

az provider register --namespace Microsoft.ContainerService

宣告變數以保存 VNet 名稱。

VNET_NAME="my-custom-vnet"

接下來,建立虛擬網路以便與容器應用程式環境建立關聯。 虛擬網路必須有子網路供環境部署使用。

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/23

使用工作負載設定檔環境時,您必須更新 VNet,以便將子網路委派給 Microsoft.App/environments。 使用僅限使用量的環境時,請勿委派子網路。

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

建立虛擬網路後,您接著就可以查詢基礎結構子網路 ID。

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

最後,使用自訂 VNet 建立容器應用程式環境。

若要建立環境,請執行下列命令。 若要建立內部環境,請新增 --internal-only

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET

下表說明搭配 containerapp env create 使用的參數。

參數 描述
name 容器應用程式環境的名稱。
resource-group 資源群組的名稱。
logs-workspace-id (選擇性) 現有 Log Analytics 工作區的 ID。 如果省略,系統會為您建立工作區。
logs-workspace-key Log Analytics 用戶端密碼。 如果使用現有工作區,則為必填。
location 要部署環境的 Azure 位置。
infrastructure-subnet-resource-id 基礎結構元件和使用者應用程式容器的子網路資源 ID。
internal-only (選擇性) 環境不會使用公用靜態 IP,只會使用可在自訂 VNet 取得的內部 IP 位址。 (需要基礎結構子網路資源 ID。)

選用組態

您可以選擇部署私人 DNS,並定義容器應用程式環境的自訂網路 IP 範圍。

使用私人 DNS 進行部署

如果您想要使用私人 DNS 部署容器應用程式,請執行下列命令。

首先,擷取環境的可識別資訊。

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

接下來,設定私人 DNS。

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

網路參數

使用傳統的純消費環境時,呼叫containerapp env create時可以選擇定義三個可選的網路參數。 如果您的對等互連 VNet 分別使用個別位址範圍,請使用這些選項。 請明確設定這些範圍,才可確保容器應用程式環境所使用的位址不會與網路基礎結構的其他範圍發生衝突。

附註

這些參數僅適用於舊有的純消費環境類型。 預設的工作負載設定檔環境類型不需要這些參數。

您必須提供全部三個屬性的值,或全都不提供。 如果不提供,系統會為您產生值。

參數 描述
platform-reserved-cidr 用於環境基礎結構服務內部的位址範圍。 使用僅限使用量環境時,大小必須介於 /23/12
platform-reserved-dns-ip 用於內部 DNS 伺服器的 platform-reserved-cidr 範圍的 IP 位址。 該位址不能是範圍中的第一個位址或網路位址。 舉例來說,如果 platform-reserved-cidr 設為 10.2.0.0/16,則 platform-reserved-dns-ip 不能是 10.2.0.0 (網路位址) 或 10.2.0.1 (基礎結構需保留使用此 IP)。 在此情況下,DNS 的第一個可用 IP 是 10.2.0.2
docker-bridge-cidr 指派給 Docker 橋接器網路的位址範圍。 此範圍的大小必須介於 /28/12
  • platform-reserved-cidrdocker-bridge-cidr 位址範圍不能彼此衝突,或與其中一者提供的子網路範圍發生衝突。 此外,請確保這些範圍不會與 VNet 的其他任何位址範圍衝突。

  • 如果未提供這些屬性,CLI 會根據 VNet 的位址範圍自動產生範圍值,以避免發生範圍衝突。

清除資源

如果您不打算繼續使用該應用程式,您可以刪除 my-container-apps 資源群組。 這麼做會刪除 Azure 容器應用程式執行個體和所有相關聯服務。 也會刪除容器應用程式服務自動建立,且其中包含自訂網路元件的資源群組。

注意

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

az group delete --name $RESOURCE_GROUP

其他資源

  • 若要使用 VNet 範圍的輸入,您必須設定 DNS

後續步驟