為內部 Azure 容器應用程式環境提供虛擬網路
下列範例示範如何在現有的虛擬網路中建立容器應用程式環境。
登入 Azure 入口網站後即可開始。
建立容器應用程式
若要建立容器應用程式,請從 Azure 入口網站首頁開始。
- 在頂端搜尋列中搜尋容器應用程式。
- 在搜尋結果中選取容器應用程式。
- 選取建立按鈕。
[基本] 索引標籤
在 [基本] 索引標籤中,執行下列動作。
在 [專案詳細資料] 區段中輸入下列值。
設定 動作 訂用帳戶 選取 Azure 訂閱。 資源群組 選取 [新建],然後輸入 my-container-apps。 容器應用程式名稱 輸入 my-container-app。 部署來源 選取 [容器映像]。
建立環境
接下來,為您的容器應用程式建立環境。
選取適當的區域。
設定 值 區域 選取 [美國中部]。 在 [建立容器應用程式環境] 欄位中,選取 [新建] 連結。
在 [基本] 索引標籤上的 [建立容器應用程式環境] 頁面中,輸入下列值:
設定 值 環境名稱 輸入 my-environment。 環境類型 選取 [工作負載設定檔]。 區域備援 選取 [停用] 選取 [監視] 索引標籤以建立 Log Analytics 工作區。
選取 [Azure Log Analytics] 作為 [記錄目的地]。
在 [Log Analytics 工作區] 欄位中選取 [新建] 連結,然後輸入下列值。
設定 值 名稱 輸入 my-container-apps-logs。 系統會在 [位置] 欄位中預先填入 [美國中部]。
選取 [確定]。
注意
使用 [限使用量] 環境時,您可以使用現有的虛擬網路,但需要具有 /23
或更大 CIDR 範圍的專用子網路與容器應用程式搭配使用。 使用工作負載設定檔環境時,需要 /27
或更大。 若要深入了解子網路大小調整,請參閱網路環境概觀。
選取 [網路] 索引標籤以建立 VNET。
選取 [使用您自己的虛擬網路] 旁的 [是]。
在 [虛擬網路] 方塊旁,選取 [新建] 連結,然後輸入下列值。
設定 值 名稱 輸入 my-custom-vnet。 選取 [確定] 按鈕。
在 [基礎結構子網路] 方塊旁選取 [新建] 連結,然後輸入下列值:
設定 值 子網路名稱 輸入 infrastructure-subnet。 虛擬網路位址區塊 請保留預設值。 子網路位址區塊 請保留預設值。 選取 [確定] 按鈕。
在 [虛擬 IP] 下方,選取 [內部]。
選取 建立。
部署容器應用程式
選取頁面底部的 [檢閱和建立]。
如果沒有找到任何錯誤,即會啟用 [建立] 按鈕。
如果發生錯誤,則包含錯誤的任何索引標籤都會以紅點標示。 瀏覽至適當的索引標籤。含有錯誤的欄位會以紅色醒目提示。 修正所有錯誤之後,請再次選取 [檢閱及建立]。
選取 建立。
即會顯示含有「部署正在進行中」訊息的頁面。 部署成功完成之後,您會看到訊息:「您的部署已完成」。
必要條件
設定
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證流程。
az login
若要確定您執行的是最新版本 CLI,請執行升級命令。
az upgrade
接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。
如果您在 Azure CLI 中執行 az containerapp
命令或 Azure PowerShell 模組中的 Cmdlet Az.App
時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure 容器應用程式延伸模組。
az extension add --name containerapp --upgrade
注意
從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true
安裝容器應用程式延伸模組。
az extension add --name containerapp --upgrade --allow-preview true
現在已安裝目前的延伸模組或模組,請註冊 Microsoft.App
和 Microsoft.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"
建立環境
Azure 容器應用程式中的環境會在容器應用程式群組周圍建立安全界限。 部署至相同環境的容器應用程式會部署在相同的虛擬網路中,並將記錄寫入相同的 Log Analytics 工作區。
註冊 Microsoft.ContainerService
提供者。
az provider register --namespace Microsoft.ContainerService
宣告變數以保存 VNET 名稱。
VNET_NAME="my-custom-vnet"
現在建立虛擬網路的執行個體,與容器應用程式環境建立關聯。 虛擬網路必須有兩個子網路可供容器應用程式執行個體使用。
注意
使用 [限使用量] 環境時,網路子網路位址前置詞需要 /23
的最低 CIDR 範圍,才能與容器應用程式搭配使用。 使用工作負載設定檔環境時,需要 /27
或更大。 若要深入了解子網路大小調整,請參閱網路環境概觀。
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
建立 VNET 之後,您現在可以查詢基礎結構子網路識別碼。
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 和子網路建立容器應用程式環境。
az containerapp env create \
--name $CONTAINERAPPS_ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
--internal-only
下表說明 containerapp env create
中使用的參數。
參數 | 描述 |
---|---|
name |
容器應用程式環境的名稱。 |
resource-group |
資源群組的名稱。 |
logs-workspace-id |
(選擇性) 現有 Log Analytics 工作區的識別碼。 如果省略,將會為您建立工作區。 |
logs-workspace-key |
Log Analytics 用戶端秘密。 如果使用現有的工作區,則為必填項目。 |
location |
環境要部署的 Azure 位置。 |
infrastructure-subnet-resource-id |
基礎結構元件和使用者應用程式容器的子網路資源識別碼。 |
internal-only |
(選擇性) 環境不會使用公用靜態 IP,在自訂 VNET 中僅可以使用內部 IP 位址。 (需要基礎結構子網路資源識別碼。) |
透過使用自訂虛擬網路所建立的環境,您可以使用 az containerapp create
命令,將容器應用程式部署至環境。
選用設定
您可以選擇部署私人 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 |
platform-reserved-cidr 範圍中用於內部 DNS 伺服器的 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-cidr
和docker-bridge-cidr
位址範圍不能彼此衝突,或與其中一個提供的子網路範圍發生衝突。 此外,請確定這些範圍不會與 VNET 中的其他任何位址範圍發生衝突。如果未提供這些屬性,CLI 會根據 VNET 的位址範圍自動產生範圍值,以避免發生範圍衝突。
清除資源
如果您不打算繼續使用此應用程式,可以移除 my-container-apps 資源群組來刪除 Azure 容器應用程式執行個體和所有相關聯的服務。 刪除此資源群組會移除容器應用程式服務自動建立的資源群組,其中包含自訂網路元件。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本指南範圍以外的資源存在於指定的資源群組中,則也會一併刪除。
az group delete --name $RESOURCE_GROUP
其他資源
- 若要使用 VNET 範圍輸入,您必須設定 DNS。