共用方式為


將應用程式組態服務移轉至 Azure Container Apps 中 Spring 的設定伺服器

注意

基本標準和企業方案於 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:

  1. 流覽至 Azure 入口網站 中的 Azure Container Apps 環境。

  2. 在功能表中,選取 [服務服務>]。

  3. 開啟 [設定] 下拉式列表,然後選取 [Java 元件]。

  4. 在 [ 設定 Java 元件 ] 面板中,輸入下列值:

    屬性
    JAVA 元件類型 選取 [適用於 Spring 的 Config Server]
    JAVA 元件名稱 輸入 configserver
  5. 在 [Git 存放庫] 區段中,選取 [新增],然後將值從應用程式組態服務移轉至此處,如下表所示。 選擇一個存放庫作為 Spring 設定伺服器的預設存放庫。

    屬性
    類型 選取 [ 預設值]。
    URI 輸入存放庫 URI 的值
    分支名稱 輸入存放庫標籤的值。
    搜尋路徑 輸入存放庫的搜尋路徑
    驗證 選取存放庫的驗證類型,然後輸入對應的資訊。

    保留其餘欄位的預設值,然後選取 [ 新增]。

  6. 如果您有多個存放庫,請選取 [ 新增 ] 以移轉其他存放庫。 針對 [ 類型],選取 [其他],然後移轉其他屬性,如上一個步驟和下表所示:

    屬性
    類型 選取 [ 預設值]。
    模式 以或 格式輸入存放{application} 值。
  7. 在 [系 結] 區段中,開啟下拉式清單以選取要系結至 Spring 的 Config Server 的應用程式。

  8. 選取 [下一步]。

  9. 若要設定 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-ed25519ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521SSH 的其中一個 。 如果 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 之後,請使用下列步驟來調整應用程式組態以有效地使用它:

  1. 更新 Spring Boot 相依性。 將下列 Spring Cloud Config 相依性新增至 Maven 的pom.xml或 Gradle 的 build.gradle

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
  2. 設定設定檔。 ACS 的配置檔會在 Azure Spring Apps 部署中以模式的形式提供,而在 Config Server 中,配置檔是在應用程式的原始碼中設定。

    請確定您的應用程式使用正確的設定檔 - devprod等 - ,讓 Config Server 可以提供環境特定的組態。

    使用 正確的組態屬性更新應用程式中的bootstrap.ymlapplication.yml 檔案,以指向 Config Server,如下列範例所示:

    spring:
      cloud:
        config:
          profile: dev
    
  3. 設定重新整理間隔。 如果您在 ACS 中設定重新整理間隔,也可以在設定 Spring 的 Config Server 中 spring.cloud.config.server.git.refreshRate 指定對應的值。 此值會決定 Spring 的設定伺服器從 Git 後端擷取更新組態數據的頻率。

    若要使用下列步驟載入應用程式程式代碼中的屬性變更:

    1. 註冊排程的工作,以在指定的間隔中重新整理內容。
    2. 在您的application.ymlautorefresh啟用並設定適當的重新整理間隔。
    3. 將 新增 @RefreshScope 至您的程序代碼。

    如需詳細資訊,請參閱 重新整理設定伺服器

將應用程式部署至 Azure Container Apps

在本機測試應用程式之後,您可以將新的映像部署至 Azure Container Apps 應用程式。

使用下列步驟來部署:

  1. 流覽至 Azure 入口網站 中的 Azure Container Apps 應用程式。
  2. 在功能表中,選取 [應用程式>容器]。
  3. 選取 [編輯並部署 ] 以開啟 [ 建立並部署新的修訂 ] 頁面。
  4. 在 [ 容器映射] 區段中,選取映像,然後選取 [ 編輯]。
  5. 在 [ 編輯容器 ] 區段的 [屬性 ] 索引標籤上,選擇應用程式的新映像。
  6. 在 [環境變數] 索引標籤上,針對 [名稱] 指定 spring.application.name。 然後,針對 [來源] 選擇 [手動] 專案 ,然後指定應用程式取用組態的組態檔名稱。
  7. 選取 [ 儲存 ] 以部署新的修訂。

疑難排解

您可以使用 Log Analytics 檢視 Azure Container Apps 中 Spring 受控設定伺服器的記錄。 使用下列步驟:

  1. 流覽至 Azure 入口網站 中的 Azure Container Apps 環境。

  2. 選取 [監視記錄>] 功能表。

  3. 若要檢視記錄,請在數據表的查詢編輯器 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 的組態管理。