Share via


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

下列範例示範如何在現有的虛擬網路中建立 Container Apps 環境。

從登入 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. 選取 [確定]。

注意

您可以使用現有的虛擬網路,但使用僅限取用環境時,需要使用 CIDR 範圍 /23 或更大範圍的專用子網來搭配 Container Apps 使用。 使用工作負載設定檔環境時,需要或 /27 更大的 。 若要深入瞭解子網大小調整,請參閱 網路環境概觀

  1. 選取 [ 網络] 索引 標籤以建立 VNET。

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

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

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

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

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

  7. 在 [虛擬IP] 底下,選取 [內部]。

  8. 選取 建立

部署容器應用程式

  1. 選取 [檢閱],然後在頁面底部建立

    如果找不到錯誤,則會啟用 [ 建立] 按鈕。

    如果發生錯誤,任何包含錯誤的索引標籤都會以紅點標示。 流覽至適當的索引標籤。包含錯誤的欄位會以紅色反白顯示。 修正所有錯誤之後,請選取 [ 檢閱並重新建立 ]。

  2. 選取 建立

    顯示 [部署進行中] 訊息的頁面。 部署成功完成之後,您會看到訊息: 您的部署已完成

必要條件

設定

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

az login

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

az upgrade

接下來,安裝或更新 CLI 的 Azure Container Apps 擴充功能。

az extension add --name containerapp --upgrade

現在已安裝目前的擴充功能或模組,請註冊 Microsoft.AppMicrosoft.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-cidrdocker-bridge-cidr 位址範圍無法彼此衝突,或與其中一個提供的子網範圍衝突。 此外,請確定這些範圍不會與 VNET 中的其他任何位址範圍衝突。

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

清除資源

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

警告

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

az group delete --name $RESOURCE_GROUP

其他資源

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

下一步