注意
基本、標準和企業方案於 2025 年 3 月 17 日進入淘汰期。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
本文適用於: ❎基本/標準 ✅ 企業
本文說明如何在 Azure Container Apps 中將應用程式組態服務 (ACS) 和設定伺服器移轉至 Spring 的設定伺服器。 Azure Container Apps 會管理 Spring 的組態伺服器,其功能與 Azure Spring Apps 中的 ACS 或 Spring Cloud Config Server 類似。
必要條件
- 已啟用應用程式組態服務的 Azure Spring Apps 企業版方案實例。
- Config Server 和 Azure Container Apps 實例的 Azure Container Apps 環境。
布建組態伺服器
下列步驟說明如何在 Azure Container Apps 中布建 Spring 的 Config Server:
流覽至 Azure 入口網站 中的 Azure Container Apps 環境。
在功能表中,選取 [服務服務>]。
開啟 [設定] 下拉式列表,然後選取 [Java 元件]。
在 [ 設定 Java 元件 ] 面板中,輸入下列值:
屬性 值 JAVA 元件類型 選取 [適用於 Spring 的 Config Server]。 JAVA 元件名稱 輸入 configserver。 在 [Git 存放庫] 區段中,選取 [新增],然後將值從應用程式組態服務移轉至此處,如下表所示。 選擇一個存放庫作為 Spring 設定伺服器的預設存放庫。
屬性 值 類型 選取 [ 預設值]。 URI 輸入存放庫 URI 的值。 分支名稱 輸入存放庫標籤的值。 搜尋路徑 輸入存放庫的搜尋路徑值。 驗證 選取存放庫的驗證類型,然後輸入對應的資訊。 保留其餘欄位的預設值,然後選取 [ 新增]。
如果您有多個存放庫,請選取 [ 新增 ] 以移轉其他存放庫。 針對 [ 類型],選取 [其他],然後移轉其他屬性,如上一個步驟和下表所示:
屬性 值 類型 選取 [ 預設值]。 模式 以或 格式輸入存放 {application}值。在 [系 結] 區段中,開啟下拉式清單以選取要系結至 Spring 的 Config Server 的應用程式。
選取 [下一步]。
若要設定 Config Server,請在 [ 檢閱 ] 索引標籤上選取 [ 設定],然後遵循組態區段中的指示。
成功建立之後,您可以看到 Spring 的 Config Server 布建狀態 為 Succeeded。
資源配置
Azure Container Apps 中受控設定伺服器的容器資源配置已修正為下列值:
- CPU:0.5 vCPU
- 記憶體:1 Gi
若要設定 Spring 的 Config Server 實體計數,您必須以相同的值更新參數 --min-replicas 和 --max-replicas 。 此組態可確保實例計數維持固定狀態。 目前,系統不支援動態調整的自動調整設定。
設定組態伺服器
從應用程式組態服務 (ACS) 中選取一個 Git 存放庫作為 Config Server 中的預設存放庫,以及其他存放庫作為其他存放庫。
下表提供 ACS 中屬性與 Config Server 中對應組態之間的對應:
| ACS 中的屬性名稱 | CONFIGURATION_KEY |
CONFIGURATION_VALUE |
|---|---|---|
name |
您不需要將此值對應至 Config Server。 | |
pattern |
您不需要將此值對應至 Config Server。 | |
uri |
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
遠端存放庫的 URI。 |
search path |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
要在本機工作複本中使用的搜尋路徑。 根據預設,只會搜尋根目錄。 |
label |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
用於 Git 的標籤。 |
username |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
如果驗證類型為 ,則為使用遠端存放庫進行驗證的用戶名稱 HTTP Basic。 |
password |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
如果驗證類型為 HTTP Basic,則為使用遠端存放庫進行驗證的密碼。 |
private key |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
如果驗證類型為 ,則為 SSH有效的 SSH 私鑰。 |
host key |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
如果驗證類型為 ,則為 SSH有效的 SSH 主機金鑰。 如果 host-key-algorithm 也已設定,則必須設定 。 |
host key algorithm |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
如果驗證類型為 ssh-dss,則為、ssh-rsassh-ed25519、ecdsa-sha2-nistp256ecdsa-sha2-nistp384、 ecdsa-sha2-nistp521或 SSH 的其中一個 。 如果 host-key 也已設定,則必須設定 。 |
如需更多 Config Server 屬性,請參閱連線到 Azure Container Apps 中 Spring 受控設定伺服器的組態選項一節。
例如,假設您在 ACS 中有下列設定:
"settings": {
"gitProperty": {
"repositories": [
{
"name": "r1",
"patterns": [
"application"
],
"label": "master",
"uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
},
{
"name": "r2",
"patterns": [
"customers-service"
],
"label": "master",
"uri": "https://github.com/Azure-Samples/spring-petclinic-microservices-config"
},
{
"name": "r3",
"patterns": [
"payment"
],
"label": "main",
"uri": "https://github.com/Azure-Samples/acme-fitness-store-config"
}
]
}
}
使用此 ACS 組態,您可以使用下列設定移轉至 Spring 的 Config Server:
spring.cloud.config.server.git.uri=https://github.com/Azure-Samples/spring-petclinic-microservices-config
spring.cloud.config.server.git.default-label=master
spring.cloud.config.server.git.repos.repo1.uri=https://github.com/Azure-Samples/acme-fitness-store-config
spring.cloud.config.server.git.repos.repo1.default-label=main
變更應用程式組態
布建及設定 Spring 的 Config Server 之後,請使用下列步驟來調整應用程式組態以有效地使用它:
更新 Spring Boot 相依性。 將下列 Spring Cloud Config 相依性新增至 Maven 的pom.xml或 Gradle 的 build.gradle。
設定設定檔。 ACS 的配置檔會在 Azure Spring Apps 部署中以模式的形式提供,而在 Config Server 中,配置檔是在應用程式的原始碼中設定。
請確定您的應用程式使用正確的設定檔 -
dev、prod等 - ,讓 Config Server 可以提供環境特定的組態。使用 正確的組態屬性更新應用程式中的bootstrap.yml 或 application.yml 檔案,以指向 Config Server,如下列範例所示:
spring: cloud: config: profile: dev設定重新整理間隔。 如果您在 ACS 中設定重新整理間隔,也可以在設定 Spring 的 Config Server 中
spring.cloud.config.server.git.refreshRate指定對應的值。 此值會決定 Spring 的設定伺服器從 Git 後端擷取更新組態數據的頻率。若要使用下列步驟載入應用程式程式代碼中的屬性變更:
- 註冊排程的工作,以在指定的間隔中重新整理內容。
- 在您的application.yml
autorefresh啟用並設定適當的重新整理間隔。 - 將 新增
@RefreshScope至您的程序代碼。
如需詳細資訊,請參閱 重新整理設定伺服器。
將應用程式部署至 Azure Container Apps
在本機測試應用程式之後,您可以將新的映像部署至 Azure Container Apps 應用程式。
使用下列步驟來部署:
- 流覽至 Azure 入口網站 中的 Azure Container Apps 應用程式。
- 在功能表中,選取 [應用程式>容器]。
- 選取 [編輯並部署 ] 以開啟 [ 建立並部署新的修訂 ] 頁面。
- 在 [ 容器映射] 區段中,選取映像,然後選取 [ 編輯]。
- 在 [ 編輯容器 ] 區段的 [屬性 ] 索引標籤上,選擇應用程式的新映像。
- 在 [環境變數] 索引標籤上,針對 [名稱] 指定 spring.application.name。 然後,針對 [來源] 選擇 [手動] 專案 ,然後指定應用程式取用組態的組態檔名稱。
- 選取 [ 儲存 ] 以部署新的修訂。
疑難排解
您可以使用 Log Analytics 檢視 Azure Container Apps 中 Spring 受控設定伺服器的記錄。 使用下列步驟:
流覽至 Azure 入口網站 中的 Azure Container Apps 環境。
選取 [監視記錄>] 功能表。
若要檢視記錄,請在數據表的查詢編輯器
ContainerAppSystemLogs_CL中輸入查詢,如下列範例所示:ContainerAppSystemLogs_CL | where ComponentType_s == "SpringCloudConfig" | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s | take 100
如需查詢記錄的詳細資訊,請參閱 Azure Container Apps 中受控 Java 元件的可檢視性。
已知的限制
將 ACS 移轉至 Spring 的設定伺服器僅適用於 Java 應用程式。 因為 ACS 會使用 Kubernetes 原生 ConfigMap來管理組態。 此方法可在 Kubernetes 環境中啟用動態組態更新,使其適用於具有多個程式設計語言的不同應用程式。 雖然 Spring Cloud Config Server 主要是針對 Java 應用程式而設計,但使用 Spring Framework 功能,因此只支援 Java 的組態管理。