移轉自定義虛擬網路
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於:✅ 基本/標準 ✅ 企業
在 Azure Spring Apps 中,您可以在受控虛擬網路內部署應用程式。 此設定可讓您在虛擬網路中的應用程式與其他資源之間進行安全通訊,例如資料庫和其他服務。 Azure Container Apps 提供類似的功能,但有一些差異。 本文會探索這些差異,並提供使用受控虛擬網路建立和管理 Azure Container Apps 環境的指引。
必要條件
- 有效的 Azure 訂閱。 如果您沒有帳戶,您可以 建立免費的 Azure 帳戶。
- Azure CLI。
使用虛擬網路建立 Azure Container Apps 環境
在 Azure Spring Apps 中,您必須在虛擬網路內設定兩個子網:一個用於系統運行時間,另一個用於使用者應用程式。 這個設定可確保系統元件和使用者應用程式的隔離和安全性。 另一方面,Azure Container Apps 只需要虛擬網路內基礎結構的一個子網,即可簡化網路設定。
在 Azure Container Apps 中,基礎結構虛擬網路會與客戶虛擬網路隔離,而不需要在 Azure Spring Apps 中視需要將服務許可權授與虛擬網路。 支援兩種類型的環境。 如需詳細資訊,請參閱 Azure Container Apps 環境的類型一節。 使用工作負載設定檔環境時,您必須更新虛擬網路,將子網委派給 Microsoft.App/environments
。 如需詳細資訊,請參閱為 Azure Container Apps 環境提供虛擬網路的<建立環境>一節。
此外,較小子網範圍的需求在兩個服務之間有所不同。
若要使用虛擬網路建立 Azure Container Apps 環境,請使用下列 Azure CLI 命令:
az containerapp env create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT \
--location "$LOCATION" \
--internal-only true \
--infrastructure-subnet-resource-id "$INFRASTRUCTURE_SUBNET"
變數 $INFRASTRUCTURE_SUBNET
是客戶虛擬網路中子網的資源標識碼,適用於基礎結構元件和使用者應用程式容器。 如需詳細資訊,請參閱為 Azure Container Apps 環境提供虛擬網路的<建立環境>一節。
選擇在 Azure Container Apps 中使用客戶虛擬網路並不表示您的容器應用程式無法接受公用要求。 如果您要只完全限制對客戶虛擬網路的存取,您必須將 --internal-only
參數設定為 true
。 此設定可確保不會建立任何公用端點。 如需詳細資訊,請參閱 Azure Container Apps 環境中的網路和將虛擬網路提供給內部 Azure Container Apps 環境的虛擬 IP 一節。
將應用程式遷移至 Azure Container Apps
建立 Azure Container Apps 環境之後,下一個步驟是將您的應用程式遷移至 Azure Container Apps。 如需詳細資訊,請參閱 概念對應。 若要移轉每個 Azure Container App,請參閱 應用程式移 轉概觀,並選取容器映射或移轉程式的成品。
變更輸入設定
相較於 Azure Spring Apps,Azure Container Apps 提供更多選項來自定義輸入設定。 如需詳細資訊,請參閱在 Azure Spring 應用程式中自訂輸入設定。
下表對應兩個服務之間的組態屬性:
功能 | Azure Spring Apps | Azure 容器應用程式 |
---|---|---|
工作階段親和性 | ingressSettings.sessionAffinity |
ingress.stickySessions.affinity |
會話 Cookie 最大存留期 | ingressSettings.sessionCookieMaxAge |
EasyAuthConfig.login.cookieExpiration.timeToExpiration |
後端通訊協定 | ingressSettings.backendProtocol |
ingress.transport |
用戶端驗證 | ingressSettings.clientAuth |
ingress.clientCertificateMode |
輸入讀取逾時 | ingressSettings.readTimeoutInSeconds |
240 |
輸入傳送逾時 | ingressSettings.sendTimeoutInSeconds |
240 |
Azure Container Apps 不允許使用者指定自定義逾時值。 相反地,它會針對 HTTP 要求強制執行內建要求逾時,其上限為 240 秒。 因此,如果要求超過此持續時間,系統會自動終止連線,以確保有效率的資源管理,並防止長時間執行的要求壟斷系統。
Azure Container Apps 不支援直接支援設定 session-max-age
專案。 不過,您可以透過其他相關設定來管理會話持續時間和行為。 例如,您可以使用組態中的 EasyAuth
cookieExpiration設定來控制驗證會話持續多久。 此設定可讓您指定驗證 Cookie 維持有效的持續時間。
如需 Azure Container Apps 所提供的輸入設定詳細資訊,請參閱 Azure Container Apps 中的輸入。
Azure Spring Apps 和 Azure Container Apps 都提供方法來產生可公開存取的端點。 在 Azure Spring Apps 中,每個部署都有唯一的 URL,以在藍綠色部署期間進行測試。 同樣地,在 Azure Container Apps 中,修訂標籤會提供唯一 URL,可用來將流量路由傳送至指派標籤的特定修訂。 如需詳細資訊,請參閱更新和部署 Azure Container Apps 中的變更的標籤一節。
在 Azure Spring Apps 中,系統會自動探查企業方案中應用程式的基本/ 標準方案和應用程式埠的埠1025
8080
。 這些探查可協助判斷應用程式容器是否準備好接受流量。 另一方面,Azure Container Apps 可讓使用者使用 --target-port
參數來指定探查埠本身,以提供更大的彈性。 此設定可讓使用者更充分掌控其應用程式的組態和行為。
若要更新容器應用程式輸入的目標埠,您可以使用下列 Azure CLI 命令:
az containerapp ingress update \
--resource-group <resource-group> \
--name <app-name> \
--target-port <target-port>
下列清單說明每個參數:
-
--name
:容器應用程式的名稱。 -
--resource-group
:包含容器應用程式的資源群組。 -
--target-port
:容器應用程式正在接聽的埠。
如需詳細資訊,請參閱在 Azure Container Apps 中為您的應用程式設定輸入的啟用輸入一節。
變更輸出設定 (UDR)
Azure Spring Apps 和 Azure Container Apps 都提供透過攜帶您自己的路由表功能 - 使用者定義的路由 (UDR) 來控制輸出流量的方式,Azure 防火牆。 不過,請記下下列差異:
- 不需要為 Azure Container Apps 資源提供者新增角色指派。
- 不需要 Azure Container Apps 服務運行時間子網的專用子網。
- Azure Container Apps 提供更有彈性的方式來支援 UDR。 在 Azure Container Apps 中,不需要在布建 Azure Spring Apps 時明確設定 選項
--outbound-type
userDefinedRouting
。
如需詳細資訊,請參閱使用 CLI 設定子網的路由一節,以及使用使用者定義的路由控制 Azure Container Apps 中的輸出流量。
在 Azure Container Apps 中,只有環境類型的工作負載配置檔支援 UDR。 此外,Azure Container Apps 支援透過 NAT 閘道輸出,以及在容器應用程式環境中建立私人端點。
若要建立支援 UDR 的 Azure Container Apps 環境,請使用下列命令:
az containerapp env create \
--resource-group $RESOURCE_GROUP \
--name $ENVIRONMENT \
--location "$LOCATION" \
--enable-workload-profiles \
--infrastructure-subnet-resource-id "$INFRASTRUCTURE_SUBNET"
將參數 --enable-workload-profiles
設定為 true
以啟用工作負載配置檔。
使用網路安全組保護虛擬網路
Azure Spring Apps 和 Azure Container Apps 都提供強大的支援,可讓您使用網路安全組 (NSG) 有效地管理及保護輸出流量。 主要差異在於特定組態。
如需詳細資訊,請參閱 使用網路安全組保護 Azure Container Apps 中的自定義 VNET。
變更 DNS 設定
Azure Spring Apps 和 Azure Container Apps 都支援在客戶虛擬網路中使用自定義 DNS 伺服器。 我們建議將 Azure DNS IP 168.63.129.16
新增為自定義 DNS 伺服器中的上游 DNS 伺服器。
如需詳細資訊,請參閱 Azure Container Apps 環境中的網路功能 DNS 一節。
目前,僅限耗用量環境類型的 Azure Container Apps 不支援排清 DNS 設定變更,就像 Azure Spring Apps 一樣。 如需詳細資訊,請參閱 排清 Azure Spring Apps 中的 DNS 設定變更。 不過,環境工作負載配置檔類型每隔 5 分鐘會自動重新整理 DNS 設定。
Azure Container Apps 支援使用私人 DNS 區域進行部署。 如需詳細資訊,請參閱將虛擬網路提供給 Azure Container Apps 環境的<使用私人 DNS 部署>一節。 此方法提供比使用 Azure Spring Apps 更彈性的方式來支持連結私人 DNS 區域。 如需詳細資訊,請參閱在虛擬網路中存取 Azure Spring Apps 中應用程式的私人 DNS 區域與 Azure Spring Apps 一節。
存取客戶虛擬網路內 Azure Container Apps 中的應用程式
Azure Container Apps 同時 提供公用網路存取 和 私人端點 功能,以向因特網公開應用程式,或在專用網內保護它們。 同樣地,Azure Spring Apps 也支持這些功能,如下列文章所述: