Share via


Azure Container Apps 環境中的網路功能

Azure Container Apps 會以自己的虛擬網路 (VNet) 在環境的內容中執行。

根據預設,容器應用程式環境會使用自動為您產生的 VNet 來建立。 若要進一步控制網路,您可以在建立環境時提供現有的 VNet。 建立具有已產生或現有 VNet 的環境後,便無法變更網路類型。

產生的 VNet 會採用下列特性。

畫面如下:

  • 您無法在 Microsoft 租使用者中建立它們時存取
  • 透過因特網公開存取
  • 只能連線到因特網可存取的端點

此外,它們只支援有限的網路功能子集,例如輸入IP限制和容器應用程式層級輸入控件。

如果您需要更多 Azure 網路功能,請使用現有的 VNet,例如:

  • 與 應用程式閘道整合
  • 網路安全性群組
  • 與虛擬網路中私人端點背後的資源通訊

可用的 VNet 功能取決於您的環境選擇。

環境選擇

容器應用程式有兩種不同的 環境類型,其共用許多相同的網路特性,但有一些主要差異。

環境類型 描述 支援的方案類型
工作負載配置檔 支援使用者定義的路由(UDR)和透過 NAT 閘道的輸出。 所需的子網大小下限為 /27 耗用量、專用
僅限取用 不支援使用者定義的路由 (UDR)、透過 NAT 閘道輸出、透過遠端閘道對等互連或其他自訂輸出。 所需的子網大小下限為 /23 耗用

輔助功能層級

您可以設定容器應用程式是否只允許在環境層級的 VNet 內公開輸入或輸入。

輔助功能層級 描述
外部 可讓您的容器應用程式接受公用要求。 外部環境是以外部公開IP位址上的虛擬IP進行部署。
內部 內部環境沒有公用端點,且會部署與對應至內部IP位址的虛擬IP(VIP)。 內部端點是 Azure 內部負載平衡器(ILB),而 IP 位址是從自定義 VNet 的私人 IP 位址清單發出。

自定義 VNet 組態

當您建立自定義 VNet 時,請記住下列情況:

  • 如果您想要讓容器應用程式限制所有外部存取,請建立 內部 Container Apps 環境

  • 如果您使用自己的 VNet,您必須提供專用於您所部署容器應用程式環境的子網。 此子網無法供其他服務使用。

  • 網路位址會從您定義為環境建立的子網範圍指派。

注意

當您提供自己的虛擬網路時,會建立其他 受控資源 。 這些資源會以相關聯的費率產生成本。

當您開始設計容器應用程式周圍的網路時,請參閱 規劃虛擬網路

Diagram of how Azure Container Apps environments use an existing V NET, or you can provide your own.

注意

如果容器應用程式環境正在使用 VNet,則不允許在不同資源群組或訂用帳戶之間移動 VNet。

HTTP Edge Proxy 行為

Azure Container Apps 使用 Envoy Proxy 作為邊緣 HTTP Proxy。 傳輸層安全性 (TLS) 會在邊緣終止,而要求會根據其流量分割規則路由傳送,並將流量路由傳送至正確的應用程式。

HTTP 應用程式會根據 HTTP 要求和連線數目進行調整。 Envoy 會路由傳送叢集內部流量。

下游連線支援 HTTP1.1 和 HTTP2 和 Envoy,如果用戶端連線需要升級,則會自動偵測並升級連線。

上游連接是藉由在輸入物件上設定 transport 屬性來定義。

輸入組態

在 [ 輸入 ] 區段底下,您可以設定下列設定:

  • 輔助功能層級:您可以在環境中將容器應用程式設定為外部或內部存取。 環境變數 CONTAINER_APP_ENV_DNS_SUFFIX 可用來自動解析您環境的完整功能變數名稱 (FQDN) 後綴。 在相同環境內的容器應用程式之間進行通訊時,您也可以使用應用程式名稱。 如需如何存取應用程式的詳細資訊,請參閱 Azure Container Apps 中的輸入。

  • 流量分割規則:您可以在應用程式的不同修訂之間定義流量分割規則。 如需詳細資訊,請參閱 流量分割

如需不同網路案例的詳細資訊,請參閱 Azure Container Apps 中的輸入。

入口網站相依性

對於 Azure Container Apps 中的每個應用程式,都有兩個 URL。

Container Apps 執行時間一開始會產生用來存取應用程式的完整功能變數名稱 (FQDN)。 在容器應用程式的 FQDN Azure 入口網站 中,查看容器應用程式的 [概觀] 視窗中的應用程式 URL

也會為您產生第二個 URL。 此位置會授與記錄串流服務和控制台的存取權。 如有必要,您可能需要將 新增 https://azurecontainerapps.dev/ 至防火牆或 Proxy 的允許清單。

埠和IP位址

下列埠會針對輸入連線公開。

通訊協定 連接埠
HTTP/HTTPS 80、443

IP 位址分成下列型態:

類型 描述
公用輸入IP位址 用於外部部署中的應用程式流量,以及內部和外部部署中的管理流量。
輸出公用IP 做為離開虛擬網路的輸出連線的「來自」IP。 這些連線不會路由傳送至 VPN。 輸出 IP 可能會隨著時間而變更。 只有在工作負載配置文件環境中才支援 使用 NAT 閘道或其他 Proxy 從 Container Apps 環境的輸出流量。
內部負載平衡器 IP 位址 此位址只存在於 內部環境中

子網路

虛擬網路整合取決於專用子網。 如何在子網中配置IP位址,以及支援哪些子網大小,取決於您在 Azure Container Apps 中使用哪個 方案

請仔細選取您的子網大小。 建立容器應用程式環境之後,就無法修改子網大小。

不同的環境類型有不同的子網需求:

  • /27 是虛擬網路整合所需的最小子網大小。

  • 您的子網必須委派給 Microsoft.App/environments

  • 搭配外部輸入使用外部環境時,輸入流量會透過基礎結構的公用IP而不是透過子網路由傳送。

  • Container Apps 會自動保留 12 個 IP 位址,以便與子網整合。 基礎結構整合所需的IP位址數目不會根據環境的規模需求而有所不同。 根據您使用更多IP位址的工作負載配置檔類型,根據環境工作負載配置檔而定,會根據下列規則來配置其他IP位址:

    • 專用工作負載配置檔:當容器應用程式相應放大時,每個節點都會指派一個IP位址。

    • 取用工作負載配置檔:每個IP位址都可以在多個複本之間共用。 規劃應用程式所需的IP位址數目時,請針對每個10個複本規劃1個IP位址。

  • 當您在單一 修訂模式中變更修訂 時,所需的位址空間會在短時間內加倍,以支援零停機時間部署。 這會影響指定子網大小的實際可用支持複本或節點。 下表顯示每個 CIDR 區塊的最大可用位址,以及水準小數位數的影響。

    子網大小 可用的IP位址1 最大節點 (專用工作負載配置檔)2 最大複本 (取用工作負載配置檔)2
    23/ 500 250 2,500
    /24 244 122 1,220
    /25 116 58 580
    /26 52 26 260
    /27 20 10 100

    1 可用的IP位址是子網大小減去 Azure Container Apps 基礎結構所需的12個IP位址。
    2 這是單一修訂模式中的應用程式。

子網位址範圍限制

子網位址範圍無法與 Azure Kubernetes Services 保留的下列範圍重疊:

  • 169.254.0.0/16
  • 172.30.0.0/16
  • 172.31.0.0/16
  • 192.0.2.0/24

此外,工作負載配置文件環境會保留下列位址:

  • 100.100.0.0/17
  • 100.100.128.0/19
  • 100.100.160.0/19
  • 100.100.192.0/19

使用 CLI 的子網組態

建立 Container Apps 環境時,您會為單一子網提供資源識別符。

如果您使用 CLI,定義子網資源識別碼的參數為 infrastructure-subnet-resource-id。 子網會裝載基礎結構元件和使用者應用程式容器。

如果您使用 Azure CLI 搭配僅耗用量環境,而且 已定義 platformReservedCidr 範圍,則這兩個子網不得與 中所 platformReservedCidr定義的 IP 範圍重疊。

路由

使用者定義的路由 (UDR)

在工作負載設定檔環境中支援透過使用者定義的路由 (UDR) 和透過 NAT 閘道的受控制輸出。 在僅限使用量環境中,不支援這些功能。

注意

在 Azure Container Apps 中搭配 Azure 防火牆 使用 UDR 時,您必須將特定的 FQDN 和服務標籤新增至防火牆的允許清單。 若要深入瞭解,請參閱使用 Azure 防火牆 設定 UDR。

  • 您可以搭配工作負載設定檔環境使用 UDR,以透過 Azure 防火牆或其他網路設備限制來自容器應用程式的輸出流量。

  • UDR 設定作業是在容器應用程式環境範圍外完成。

Diagram of how UDR is implemented for Container Apps.

Azure 會在建立時為您的虛擬網路建立預設路由表。 藉由實作使用者定義的路由表,您可以控制流量在虛擬網路內路由的方式。 例如,您可以建立 UDR,將所有流量路由傳送至防火牆。

使用 Azure 防火牆 設定UDR

只有在工作負載配置檔環境中才支援使用者定義的路由。 根據您使用的資源,下列應用程式和網路規則必須新增至防火牆的allowlist。

注意

如需如何使用容器應用程式設定 UDR 以限制輸出流量與 Azure 防火牆 的指南,請流覽容器應用程式和 Azure 防火牆 的方式。

應用程式規則

應用程式規則會根據應用層允許或拒絕流量。 根據案例,需要下列輸出防火牆應用程式規則。

案例 FQDN 描述
所有案例 mcr.microsoft.com, *.data.mcr.microsoft.com Azure Container Apps 會使用這些適用於 Microsoft Container Registry (MCR) 的 FQDN,而且這些應用程式規則或 MCR 的網路規則必須在搭配 Azure 防火牆 使用 Azure Container Apps 時新增至允許清單。
Azure Container Registry (ACR) Your-ACR-address*.blob.core.windows.netlogin.microsoft.com 搭配 ACR 和 Azure 防火牆 使用 Azure Container Apps 時,需要這些 FQDN。
Azure Key Vault Your-Azure-Key-Vault-addresslogin.microsoft.com 除了 Azure 金鑰保存庫 網路規則所需的服務標籤之外,還需要這些 FQDN。
受控識別 *.identity.azure.net、 、 login.microsoftonline.com*.login.microsoftonline.com*.login.microsoft.com 在 Azure Container Apps 中使用受控識別搭配 Azure 防火牆 時,需要這些 FQDN。
Docker Hub 登錄 hub.docker.com、 、 registry-1.docker.ioproduction.cloudflare.docker.com 如果您使用 Docker Hub 登錄 並想要透過防火牆存取它,則必須將這些 FQDN 新增至防火牆。
網路規則

網路規則會根據網路和傳輸層來允許或拒絕流量。 根據案例,需要下列輸出防火牆網路規則。

案例 服務標籤 描述
所有案例 MicrosoftContainerRegistry, AzureFrontDoorFirstParty Azure Container Apps 會使用這些適用於 Microsoft Container Registry (MCR) 的服務卷標,而且這些網路規則或 MCR 的應用程式規則必須在搭配 Azure 防火牆 使用 Azure Container Apps 時新增至允許清單。
Azure Container Registry (ACR) AzureContainerRegistry, AzureActiveDirectory 搭配 Azure Container Apps 使用 ACR 時,您必須設定 Azure Container Registry 所使用的這些應用程式規則。
Azure Key Vault AzureKeyVault, AzureActiveDirectory 除了 Azure 金鑰保存庫 應用程式規則的 FQDN 之外,還需要這些服務標籤。
受控識別 AzureActiveDirectory 搭配 Azure Container Apps 使用受控識別時,您必須設定受控識別所使用的這些應用程式規則。

注意

針對您搭配 Azure 防火牆 未列於本文中的 Azure 資源,請參閱服務標籤檔

NAT 閘道整合

您可以使用 NAT 閘道,簡化工作負載配置檔環境中虛擬網路中輸出因特網流量的輸出連線。

當您在子網上設定 NAT 閘道時,NAT 閘道會為您的環境提供靜態公用 IP 位址。 來自容器應用程式的所有輸出流量都會透過NAT閘道的靜態公用IP位址路由傳送。

環境安全性

Diagram of how to fully lock down your network for Container Apps.

您可以採取下列動作,完全保護您的輸入和輸出網路流量工作負載設定檔環境:

  • 在工作負載配置檔環境中建立您的內部容器應用程式環境。 如需步驟,請參閱 使用 Azure CLI 管理工作負載配置檔。

  • 將容器應用程式與 應用程式閘道整合。

  • 設定 UDR 以透過 Azure 防火牆 路由傳送所有流量。

環境層級網路加密 (預覽)

Azure Container Apps 支援使用相互傳輸層安全性 (mTLS) 的環境層級網路加密。 需要端對端加密時,mTLS 會加密在環境內應用程式之間傳輸的數據。

容器應用程式環境內的應用程式會自動驗證。 不過,Container Apps 運行時間不支援使用內建 mTLS 的應用程式之間進行訪問控制的授權。

當您的應用程式與環境外部的用戶端通訊時,支援使用 mTLS 進行雙向驗證。 若要深入瞭解,請參閱 設定客戶端憑證

注意

為您的應用程式啟用 mTLS 可能會增加回應延遲,並減少高負載案例中的最大輸送量。

您可以使用下列命令來啟用 mTLS。

建立時:

az containerapp env create \
    --name <environment-name> \
    --resource-group <resource-group> \
    --location <location> \
    --enable-mtls

針對現有的容器應用程式:

az containerapp env update \
    --name <environment-name> \
    --resource-group <resource-group> \
    --enable-mtls

DNS

  • 自訂 DNS:如果您的 VNet 使用自訂 DNS 伺服器,而不是預設的 Azure 提供的 DNS 伺服器,請將 DNS 伺服器設定為將未解析的 DNS 查詢轉送至 168.63.129.16Azure 遞歸解析程式 會使用此 IP 位址來解析要求。 設定 NSG 或防火牆時,請勿封鎖 168.63.129.16 地址,否則您的 Container Apps 環境將無法正常運作。

  • VNet 範圍輸入:如果您打算在內部環境中使用 VNet 範圍 輸入 ,請使用下列其中一種方式來設定網域:

    1. 非自定義網域:如果您不打算使用自定義網域,請建立私人 DNS 區域,將 Container Apps 環境的預設網域解析為 Container Apps 環境的靜態 IP 位址。 您可以使用 Azure 私用 DNS 或您自己的 DNS 伺服器。 如果您使用 Azure 私用 DNS,請使用記錄建立名為 的私人 DNS 區域作為容器應用程式環境的預設網域 (<UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io)。A 記錄 A 包含 Container Apps 環境的名稱 *<DNS Suffix> 和靜態 IP 位址。

    2. 自定義網域:如果您打算使用自定義網域並使用外部 Container Apps 環境,請使用可公開解析的網域,將 自定義網域和憑證 新增至容器應用程式。 如果您使用內部容器應用程式環境,則 DNS 繫結沒有驗證,因為叢集只能從虛擬網路記憶體存取。 此外,建立私人 DNS 區域,將頂點網域解析為容器應用程式環境的靜態 IP 位址。 您可以使用 Azure 私用 DNS 或您自己的 DNS 伺服器。 如果您使用 Azure 私用 DNS,請使用指向 Container Apps 環境的靜態 IP 位址的記錄,A建立名為 的 私用 DNS 區域作為頂點網域。

Container Apps 環境的靜態 IP 位址可在容器應用程式頁面的自定義 DNS 後綴或使用 Azure CLI az containerapp env list 命令的 Azure 入口網站 中使用。

受控資源

當您將內部或外部環境部署到您自己的網路時,會在裝載環境的 Azure 訂用帳戶中建立新的資源群組。 此資源群組包含 Azure 容器應用程式平台所管理的基礎結構元件。 請勿修改此群組中的服務或資源群組本身。

工作負載配置文件環境

在裝載環境的 Azure 訂用帳戶中建立的資源群組名稱預設會加上前置ME_詞,而且您可以在建立容器應用程式環境時自定義資源組名

針對外部環境,資源群組包含公用IP位址,專門用來連往外部環境和負載平衡器進行輸入連線。 針對內部環境,資源群組只會包含 Load Balancer

除了標準 Azure Container Apps 計費之外,您也會向您收取下列費用:

  • 如果使用內部或外部環境,則輸出的標準靜態 公用IP ,如果使用外部環境,則為輸入加上一個標準靜態 公用IP 。 如果您需要更多因 SNAT 問題而輸出的公用 IP, 請開啟支援票證以要求覆寫

  • 一個標準 負載平衡器

  • 處理的數據成本(以 GB 為單位)包括管理作業的輸入和輸出。

僅限耗用量環境

在裝載環境的 MC_ Azure 訂用帳戶中建立的資源群組名稱預設會加上前置詞,而且當您建立容器應用程式時,無法自定義資源組名。 資源群組包含公用IP位址,專門用來從環境和負載平衡器輸出連線。

除了標準 Azure Container Apps 計費之外,您也會向您收取下列費用:

  • 輸出的標準靜態 公用IP 。 如果您需要更多因來源網路位址轉換 (SNAT) 問題而輸出的IP, 請開啟支援票證以要求覆寫

  • 如果使用內部環境,則為兩個標準 負載平衡器 ,如果使用外部環境,則為一個標準 負載平衡器 。 每個負載平衡器都有少於六個規則。 處理的數據成本(以 GB 為單位)包括管理作業的輸入和輸出。

下一步