為內部 Azure 容器應用程式環境提供虛擬網路
下列範例示範如何在現有的虛擬網路中建立 Container Apps 環境。
從登入 Azure 入口網站 開始。
建立容器應用程式
若要建立容器應用程式,請從 Azure 入口網站 首頁開始。
- 在頂端搜尋列中搜尋 容器應用程式 。
- 在搜尋結果中選取 [容器應用程式 ]。
- 選取建立按鈕。
[基本] 索引標籤
在 [ 基本] 索引 標籤中,執行下列動作。
在 [項目詳細數據 ] 區段中輸入下列值。
設定 動作 訂用帳戶 選取 Azure 訂閱。 資源群組 選取 [ 新建 ],然後輸入 my-container-apps。 容器應用程式名稱 輸入 my-container-app。
建立環境
接下來,為您的容器應用程式建立環境。
選取適當的區域。
設定 值 區域 選取 [美國中部]。 在 [ 建立容器應用程式環境] 字段中,選取 [ 建立新 連結]。
在 [基本] 索引標籤上的 [建立容器應用程式環境] 頁面中,輸入下列值:
設定 值 環境名稱 輸入 my-environment。 環境類型 僅選取 [取用]。 區域備援 選取 [停用] 選取 [ 監視] 索引標籤以建立Log Analytics 工作區。
選取 [Azure Log Analytics ] 作為 [ 記錄目的地]。
選取 [Log Analytics 工作區] 字段中的 [建立新連結],然後輸入下列值。
設定 值 名稱 輸入 my-container-apps-logs。 [ 位置] 欄位已為您預先填入 [美國 中部]。
選取 [確定]。
注意
您可以使用現有的虛擬網路,但使用僅限取用環境時,需要使用 CIDR 範圍 /23
或更大範圍的專用子網來搭配 Container Apps 使用。 使用工作負載設定檔環境時,需要或 /27
更大的 。 若要深入瞭解子網大小調整,請參閱 網路環境概觀。
選取 [ 網络] 索引 標籤以建立 VNET。
選取 [使用您自己的虛擬網络] 旁的 [是]。
在 [ 虛擬網络 ] 方塊旁,選取 [ 建立新 連結],然後輸入下列值。
設定 值 名稱 輸入 my-custom-vnet。 選取 [確定] 按鈕。
在 [ 基礎結構子網 ] 方塊旁,選取 [ 建立新 連結],然後輸入下列值:
設定 值 子網路名稱 輸入 infrastructure-subnet。 虛擬網絡 位址區塊 保留預設值。 子網路位址區塊 保留預設值。 選取 [確定] 按鈕。
在 [虛擬IP] 底下,選取 [內部]。
選取 建立。
部署容器應用程式
選取 [檢閱],然後在頁面底部建立 。
如果找不到錯誤,則會啟用 [ 建立] 按鈕。
如果發生錯誤,任何包含錯誤的索引標籤都會以紅點標示。 流覽至適當的索引標籤。包含錯誤的欄位會以紅色反白顯示。 修正所有錯誤之後,請選取 [ 檢閱並重新建立 ]。
選取 建立。
顯示 [部署進行中] 訊息的頁面。 部署成功完成之後,您會看到訊息: 您的部署已完成。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。
- 如果您沒有,可以免費建立一個。
- 安裝 Azure CLI 2.28.0 版或更高版本。
設定
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證程序。
az login
若要確保您執行最新版的 CLI,請執行升級命令。
az upgrade
接下來,安裝或更新 CLI 的 Azure Container Apps 擴充功能。
az extension add --name containerapp --upgrade
現在已安裝目前的擴充功能或模組,請註冊 Microsoft.App
和 Microsoft.OperationalInsights
命名空間。
注意
Azure 容器應用程式資源已從 Microsoft.Web
命名空間移轉至 Microsoft.App
命名空間。 如需詳細資訊,請參閱 2022 年 3 月將命名空間從 Microsoft.Web 移轉至 Microsoft.App。
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"
現在,建立虛擬網路的實例,以與 Container Apps 環境產生關聯。 虛擬網路必須有兩個子網可供容器應用程式實例使用。
注意
使用僅限取用環境時,網路子網位址前置詞需要最少的 /23
CIDR 範圍,才能與 Container Apps 搭配使用。 使用工作負載配置文件環境時,需要或 /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 之後,您現在可以查詢基礎結構子網標識符。
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 和子網建立 Container Apps 環境。
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 |
Container Apps 環境的名稱。 |
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 時,請使用這些選項。 明確設定這些範圍可確保 Container Apps 環境所使用的位址不會與網路基礎結構中的其他範圍衝突。
您必須提供這三個屬性的值,或其中沒有任何一個。 如果未提供這些值,則會為您產生值。
參數 | 描述 |
---|---|
platform-reserved-cidr |
內部用於環境基礎結構服務的位址範圍。 使用僅限取用環境時,必須在和 /12 之間/23 有大小 |
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 網橋網路的位址範圍。 此範圍在和 /12 之間/28 必須有一個大小。 |
platform-reserved-cidr
和docker-bridge-cidr
位址範圍無法彼此衝突,或與其中一個提供的子網範圍衝突。 此外,請確定這些範圍不會與 VNET 中的其他任何位址範圍衝突。如果未提供這些屬性,CLI 會根據 VNET 的位址範圍自動產生範圍值,以避免範圍衝突。
清除資源
如果您不打算繼續使用此應用程式,您可以移除 my-container-apps 資源群組來刪除 Azure Container Apps 實例和所有相關聯的服務。 刪除此資源群組會移除 Container Apps 服務自動建立的資源群組,其中包含自定義網路元件。
警告
下列命令會刪除指定的資源群組和其中包含的所有資源。 如果本指南範圍以外的資源存在於指定的資源群組中,也會刪除它們。
az group delete --name $RESOURCE_GROUP
其他資源
- 若要使用 VNET 範圍輸入,您必須設定 DNS。