附註
基本、標準和企業方案於 2025 年 3 月 17 日進入淘汰期。 如需詳細資訊,請參閱 Azure Spring 應用程式淘汰公告。
本文適用於:✅ 基本/標準 ✅ 企業
在 Azure Spring 應用程式中,您可以在受控虛擬網路內部署應用程式。 此設定可讓應用程式安全地與虛擬網路中的其他資源 (例如資料庫和其他服務) 進行通訊。 Azure 容器應用程式有提供類似功能,但有一些差異。 本文會探索這些差異,並指導您如何使用受控虛擬網路建立和管理 Azure 容器應用程式環境。
先決條件
- 有效的 Azure 訂用帳戶。 如果您沒有帳戶,您可以建立免費的 Azure 帳戶。
- Azure CLI。
使用虛擬網路建立 Azure 容器應用程式環境
在 Azure Spring 應用程式中,您必須在虛擬網路內設定兩個子網路:一個用於系統執行階段,另一個用於使用者應用程式。 這個設定可確保系統元件和使用者應用程式會保持隔離且安全。 另一方面,Azure 容器應用程式會讓虛擬網路內的基礎結構只需要一個子網路,因此能簡化網路設定。
在 Azure 容器應用程式中,基礎結構的虛擬網路會與客戶的虛擬網路隔開,因此不需要向服務授與虛擬網路權限,但 Azure Spring 應用程式則需要。 支援的環境類型有兩種。 如需詳細資訊,請參閱 Azure 容器應用程式環境的類型一節。 使用工作負載設定檔環境時,您必須更新虛擬網路,將子網路委派給 Microsoft.App/environments。 如需詳細資訊,請參閱提供虛擬網路給 Azure 容器應用程式環境 (部分機器翻譯) 的建立環境 (部分機器翻譯) 一節。
此外,這兩個服務對於較小子網路範圍的需求有所不同。
若要使用虛擬網路建立 Azure 容器應用程式環境,請使用下列 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 容器應用程式環境 (部分機器翻譯) 的建立環境 (部分機器翻譯) 一節。
選擇在 Azure Container Apps 中使用自定義虛擬網路並不表示您的容器應用程式無法接受公用要求。 如果您要完全限制只能存取客戶的虛擬網路,則必須將 --internal-only 參數設定為 true。 此設定可確保系統不會建立任何公用端點。 如需詳細資訊,請參閱 Azure Container Apps 環境中網路的輔助功能層級一節,以及將虛擬網路提供給內部 Azure Container Apps 環境。
將應用程式移轉至 Azure 容器應用程式
建立 Azure 容器應用程式環境之後,下一個步驟是將您的應用程式移轉至 Azure 容器應用程式。 如需詳細資訊,請參閱概念對應 (部分機器翻譯)。 若要移轉每個 Azure 容器應用程式,請參閱應用程式移轉概觀 (部分機器翻譯),並選取容器映像或成品來進行移轉流程。
變更輸入設定
相較於 Azure Spring 應用程式,Azure 容器應用程式提供了更多用於自訂輸入設定的選項。 如需詳細資訊,請參閱在 Azure Spring 應用程式中自訂輸入設定。
下表會對應兩個服務之間的設定屬性:
| 功能 | Azure Spring 應用程式 | 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 容器應用程式不允許使用者指定自訂逾時值。 相反地,其會針對 HTTP 要求強制執行內建的要求逾時,此值上限為 240 秒。 因此,如果要求超過這個持續時間,系統就會自動終止連線,以確保能有效率地管理資源,並防止長時間執行的要求壟斷系統。
Azure 容器應用程式未直接支援 session-max-age 設定項目。 不過,您可以透過其他相關設定來管理工作階段的持續時間和行為。 例如,您可以使用 設定中的 EasyAuth (部分機器翻譯) 設定來控制驗證工作階段的持續時間。 此設定可讓您指定驗證 Cookie 維持有效的持續時間。
若要詳細了解 Azure 容器應用程式所提供的輸入設定,請參閱 Azure 容器應用程式中的輸入 (部分機器翻譯)。
Azure Spring 應用程式和 Azure 容器應用程式都提供了方法供您產生可公開存取的端點。 在 Azure Spring 應用程式中,每個部署都有一個唯一的 URL,可在藍綠部署期間用於進行測試。 同樣地,在 Azure 容器應用程式中,修訂標籤會提供唯一的 URL,供您用來將流量路由傳送至標籤所指派到的特定修訂。 如需詳細資訊,請參閱在 Azure 容器應用程式中更新和部署變更 (部分機器翻譯) 的標籤 (部分機器翻譯) 一節。
在 Azure Spring 應用程式中,系統會自動探查連接埠 1025 (針對基本/標準方案中的應用程式) 和連接埠 8080 (針對企業方案中的應用程式)。 這些探查可協助判斷應用程式容器是否已準備好接受流量。 另一方面,Azure 容器應用程式則提供了更多彈性,其可讓使用者使用 --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 容器應用程式中為您的應用程式設定輸入 (部分機器翻譯) 的啟用輸入 (部分機器翻譯) 一節。
變更輸出設定 (UDR)
Azure Spring 應用程式和 Azure 容器應用程式都有辦法讓您使用 Azure 防火牆 (部分機器翻譯),透過「自備路由表」功能 (使用者定義的路由 (UDR)) 控制輸出流量。 不過,請記下以下差異:
- 不需要為 Azure 容器應用程式的資源提供者新增角色指派。
- 不需要為 Azure 容器應用程式的服務執行階段子網路使用專用的子網路。
- Azure 容器應用程式提供了更彈性的方式來支援 UDR。 在 Azure 容器應用程式中,不需要在佈建 Azure Spring 應用程式時將選項
--outbound-type明確設定為userDefinedRouting。
如需詳細資訊,請參閱 使用使用者定義的路由控制 Azure Container Apps 中的輸出流量。
在 Azure 容器應用程式中,只有「環境」類型的工作負載設定檔支援 UDR。 此外,Azure 容器應用程式支援透過 NAT 閘道輸出,也支援在容器應用程式環境中建立私人端點。
若要建立支援 UDR 的 Azure 容器應用程式環境,請使用下列命令:
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 應用程式和 Azure 容器應用程式都提供強大支援,可讓您使用網路安全性群組 (NSG) 有效地管理及保護輸出流量。 兩者的主要差異在於特定設定。
如需詳細資訊,請參閱使用網路安全性群組保護 Azure 容器應用程式中的自訂 VNet (部分機器翻譯)。
變更 DNS 設定
Azure Spring 應用程式和 Azure 容器應用程式都支援在客戶的虛擬網路中使用自訂 DNS 伺服器。 建議您新增 Azure DNS IP 168.63.129.16 來作為自訂 DNS 伺服器中的上游 DNS 伺服器。
如需詳細資訊,請參閱 Azure Container Apps 環境中的虛擬網路 DNS。
目前,僅限使用量環境類型的 Azure 容器應用程式不支援排清 DNS 設定變更,Azure Spring 應用程式則支援此操作。 如需詳細資訊,請參閱排清 Azure Spring 應用程式中的 DNS 設定變更 (部分機器翻譯)。 不過,環境的工作負載設定檔類型每隔 5 分鐘就會自動重新整理 DNS 設定。
Azure 容器應用程式支援使用私人 DNS 區域進行部署。 如需詳細資訊,請參閱提供虛擬網路給 Azure 容器應用程式環境 (部分機器翻譯) 的使用私人 DNS 進行部署 (部分機器翻譯) 一節。 比起使用 Azure Spring 應用程式,此方法能以更彈性的方式支援連結私人 DNS 區域。 如需詳細資訊,請參閱在虛擬網路中存取 Azure Spring 應用程式中的應用程式 (部分機器翻譯) 的連結私人 DNS 區域與 Azure Spring 應用程式 (部分機器翻譯) 一節。
在客戶的虛擬網路內存取 Azure 容器應用程式中的應用程式
Azure 容器應用程式同時提供了公用網路存取和私人端點 (英文) 功能,以向網際網路公開應用程式,或在私人網路內保護應用程式。 同樣地,Azure Spring 應用程式也支援這兩種功能,如下列文章所述:
- 在虛擬網路中存取 Azure Spring 應用程式中的應用程式 (部分機器翻譯)