在虛擬網路中部署 Azure Spring Apps
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於:✅ Java ✅ C#
本文適用於: ❎基本 ✅ 標準 ✅ 企業
本教學課程說明如何在虛擬網路中部署 Azure Spring Apps 執行個體。 此部署有時稱為「VNet 插入」。
此部署可實現下列目標:
- 讓 Azure Spring Apps 應用程式和服務執行階段可以與公司網路上的網際網路分隔開來。
- 讓 Azure Spring Apps 可以與內部部署資料中心內的系統或其他虛擬網路中的 Azure 服務互動。
- 讓客戶得以控制 Azure Spring Apps 的輸入和輸出網路通訊。
下列影片描述如何使用受控虛擬網路保護 Spring Boot 應用程式。
注意
只有在您建立新的 Azure Spring Apps 服務執行個體時,才能選取您的 Azure 虛擬網路。 在建立了 Azure Spring Apps 之後,您無法變更為使用另一個虛擬網路。
必要條件
根據在 Azure 入口網站上註冊資源提供者中的指示或執行下列 Azure CLI 命令,註冊 Azure Spring Apps 資源提供者 Microsoft.AppPlatform
和 Microsoft.ContainerService
:
az provider register --namespace Microsoft.AppPlatform
az provider register --namespace Microsoft.ContainerService
虛擬網路需求
您作為 Azure Spring Apps 執行個體部署目的地的虛擬網路必須符合下列需求:
- 位置:虛擬網路必須位於與 Azure Spring Apps 執行個體相同的位置。
- 訂用帳戶:虛擬網路必須位於與 Azure Spring Apps 執行個體相同的訂用帳戶。
- 子網路:虛擬網路必須包含兩個專用於 Azure Spring Apps 執行個體的子網路:
- 一個用於服務執行階段。
- 一個用於您的 Spring 應用程式。
- 這些子網路與 Azure Spring Apps 執行個體之間有一對一的關聯性。 針對您部署的每個服務執行個體使用新的子網路。 每個子網路只能包含單一服務執行個體。
- 位址空間:最高 /28 的 CIDR 區塊用於服務執行階段子網路和 Spring 應用程式子網路。
- 路由表:依預設,子網路不需要相關聯的現有路由表。 您可以攜帶自己的路由表。
使用下列步驟來設定虛擬網路以包含 Azure Spring Apps 執行個體。
建立虛擬網路
如果您已經有可裝載 Azure Spring Apps 執行個體的虛擬網路,請略過步驟 1、2 和 3。 您可以從步驟 4 開始,以準備虛擬網路的子網路。
在 Azure 入口網站功能表上,選取 [建立資源]。 從 Azure Marketplace 選取 [網路]>[虛擬網路]。
在 [建立虛擬網路] 對話方塊中,輸入或選取下列資訊:
設定 值 訂用帳戶 選取您的訂用帳戶。 資源群組 選取您的資源群組,或建立新的資源群組。 名稱 輸入 azure-spring-apps-vnet。 Location 選取 [美國東部]。 選取 [下一步:IP 位址]。
在 IPv4 位址空間中,輸入 10.1.0.0/16。
選取 [新增子網路]。 接著輸入 service-runtime-subnet 作為子網路名稱,並輸入 10.1.0.0/24 作為子網路位址範圍。 然後選取 [新增]。
再次選取 [新增子網路],然後輸入子網路名稱和子網路位址範圍。 例如,輸入 apps-subnet 和 10.1.1.0/24。 然後選取 [新增]。
選取 [檢閱 + 建立]。 將其他項目保留為預設值,然後選取 [建立]。
將服務權限授與給虛擬網路
本節說明如何在您的虛擬網路上向 Azure Spring Apps 授與使用者存取系統管理員和網路參與者權限。 此權限可讓您在虛擬網路上授與專用和動態服務主體,以進行進一步的部署和維護。
注意
如果您使用自己的路由表或使用者定義的路由功能,您也需要授與 Azure Spring Apps 與您的路由表相同的角色指派。 如需詳細資訊,請參閱自備路由表一節和控制 Azure Spring Apps 執行個體的輸出流量。
使用下列步驟來授與權限:
選取您先前已建立的虛擬網路
azure-spring-apps-vnet
。選取 [存取控制 (IAM)],然後選取 [新增]>[新增角色指派]。
將
Network Contributor
和User Access Administrator
角色指派給 Azure Spring Cloud 資源提供者。 如需詳細資訊,請參閱使用 Azure 入口網站指派 Azure 角色。注意
角色
User Access Administrator
屬於特殊權限系統管理員角色,而Network Contributor
屬於工作職能角色。
部署 Azure Spring Apps 執行個體
使用下列步驟在虛擬網路中部署 Azure Spring Apps 執行個體:
開啟 Azure 入口網站。
在上方搜尋方塊中,搜尋 Azure Spring Apps。 從結果中選取 [Azure Spring Apps]。
在 [Azure Spring Apps] 頁面上,選取 [新增]。
填寫 Azure Spring Apps [建立] 頁面上的表單。
選取與虛擬網路相同的資源群組和區域。
針對 [服務詳細資料] 底下的 [名稱],選取 [azure-spring-apps-vnet]。
選取 [網路] 索引標籤,然後選取下列值:
設定 值 在您自己的虛擬網路中部署 選取 [是]。 虛擬網路 選取 azure-spring-apps-vnet。 服務執行階段子網路 選取 [service-runtime-subnet]。 Spring Boot 微服務應用程式子網路 選取 [apps-subnet]。 選取 [檢閱和建立]。
確認規格,然後選取 [建立]。
部署後,會在您的訂用帳戶中建立另外兩個資源群組,以裝載 Azure Spring Apps 執行個體的網路資源。 移至 [首頁],然後從頂端功能表項目選取 [資源群組],以尋找下列新資源群組。
名為 ap-svc-rt_{service instance name}_{service instance region}
的資源群組包含了服務執行個體的服務執行階段所需的網路資源。
名為 ap-app_{service instance name}_{service instance region}
的資源群組包含了服務執行個體的 Spring 應用程式所需的網路資源。
這些網路資源會連線到您在先前映像中建立的虛擬網路。
重要
資源群組是由 Azure Spring Apps 完全管理。 「請勿」手動刪除或修改其中的任何資源。
使用較小的子網路範圍
下表顯示 Azure Spring Apps 支援使用較小子網路範圍的應用程式執行個體數目上限。
應用程式子網路 CIDR | IP 總數 | 可用的 IP | 應用程式執行個體上限 |
---|---|---|---|
/28 | 16 | 8 | 具有 0.5 個核心的應用程式:192 |
/27 | 32 | 24 | 具有 0.5 個核心的應用程式:456 |
/26 | 64 | 56 | 具有 0.5 個核心的應用程式:500 |
/25 | 128 | 120 | 具有 0.5 個核心的應用程式:500 |
/24 | 256 | 248 | 具有 0.5 個核心的應用程式:500 |
對於子網路,Azure 保留了 5 個 IP 位址,而 Azure Spring Apps 至少需要 3 個 IP 位址。 至少需要八個 IP 位址,因此 /29 和 /30 無法使用。
服務執行階段子網路的最低大小為 /28。
注意
小型的子網路範圍會影響您可以用於輸入控制器等系統元件的基礎資源。 Azure Spring Apps 會使用基礎輸入控制器來處理應用程式流量管理。 輸入控制器執行個體的數目會隨著應用程式流量增加而自動增加。 如果應用程式流量在未來可能會增加,請保留更大的虛擬網路子網路 IP 範圍。 您通常會為每秒 10000 個要求的流量保留一個 IP 位址。
攜帶您自己的路由表
Azure Spring Apps 支援使用現有的子網路和路由表。
如果您的自訂子網路不包含路由表,Azure Spring Apps 會為每個子網路建立路由表,並在整個執行個體生命週期將規則新增至其中。 如果您的自訂子網路包含路由表,Azure Spring Apps 會在執行個體作業期間認可現有的路由表,並據以新增/更新和/或規則以進行作業。
警告
自訂規則可以新增至自訂路由表並更新。 不過,規則是由 Azure Spring Apps 新增,而且這些規則不得更新或移除。 0.0.0.0/0 等規則必須一律存在於指定的路由表中,並對應至您網際網路閘道的目標,例如 NVA 或其他輸出閘道。 更新規則時請小心,因為只會修改您的自訂規則。
路由表需求
與自訂虛擬網路相關聯的路由表必須符合下列需求:
- 只有在建立新的 Azure Spring Apps 服務執行個體時,才可以將 Azure 路由表與虛擬網路建立關聯。 建立 Azure Spring Apps 執行個體後,您無法變更為使用另一個路由表。
- Spring 應用程式子網路和服務執行階段子網路都必須與不同的路由表建立關聯,或不與它們建立關聯。
- 必須先指派權限,才能建立執行個體。 請務必將您的路由表上的
User Access Administrator
和Network Contributor
權限授與 Azure Spring Cloud 資源提供者。 - 叢集建立後,您無法更新相關聯的路由表資源。 雖然您無法更新路由表資源,但您可以在路由表上修改自訂規則。
- 您無法重複使用具有多個執行個體的路由表,因為可能與路由規則發生衝突。
使用自訂 DNS 伺服器
Azure Spring Apps 支援在您的虛擬網路中使用自訂 DNS 伺服器。
如果您未在 DNS 伺服器虛擬網路設定中指定自訂 DNS 伺服器,Azure Spring Apps 預設會使用 Azure DNS 來解析 IP 位址。 如果您的虛擬網路設定了自訂 DNS 設定,請將 Azure DNS IP 168.63.129.16
新增為自訂 DNS 伺服器中的上游 DNS 伺服器。 Azure DNS 可以解析「在虛擬網路中執行 Azure Spring 應用程式的客戶責任」中所提及的所有公用 FQDN 的 IP 位址。 它也可以解析您的虛擬網路中 *.svc.private.azuremicroservices.io
的 IP 位址。
如果您的自訂 DNS 伺服器無法將 Azure DNS IP 168.63.129.16
新增為上游 DNS 伺服器,請使用下列步驟:
- 請確定您的自訂 DNS 伺服器可以解析所有公用 FQDN 的 IP 位址。 如需詳細資訊,請參閱「在虛擬網路中執行 Azure Spring 應用程式的客戶責任」。
- 將 DNS 記錄
*.svc.private.azuremicroservices.io
新增至您的應用程式的 IP。 如需詳細資訊,請參閱「在虛擬網路中存取 Azure Spring Apps 的應用程式」的「尋找您的應用程式的 IP 位址」一節。