教學課程:連線 Azure Container Apps 中 Spring 的受控設定伺服器 (預覽)
Config Server for Spring 提供集中式位置,讓設定數據可供多個應用程式使用。 在本文中,您將瞭解如何將裝載在 Azure Container Apps 中的應用程式連線到適用於 Spring 實例的 Java Config Server。
Spring 元件的設定伺服器會使用 GitHub 存放庫作為組態設定的來源。 組態值可透過元件與容器應用程式之間的系結提供給容器應用程式。 當組態伺服器中的值變更時,它們會自動流向您的應用程式,而不需要您重新編譯或重新部署應用程式。
在本教學課程中,您將了解:
- 建立 Spring Java 元件的設定伺服器
- 將 Spring 的設定伺服器系結至您的容器應用程式
- 觀察將組態伺服器連線到應用程式之前和之後的組態值
- 使用對稱金鑰加密和解密組態值
重要
本教學課程所使用的服務,可能會影響您的 Azure 帳單。 如果您決定依照逐步操作,請務必刪除本文中精選的資源,以避免非預期的計費。
必要條件
若要完成此專案,您需要下列項目:
需求 | 指示 |
---|---|
Azure 帳戶 | 需要有效的訂用帳戶。 如果您沒有,可以免費建立一個。 |
Azure CLI | 安裝 Azure CLI。 |
考量
在 Azure Container Apps 的 Spring 設定伺服器中執行時,請注意下列詳細數據:
項目 | 說明 |
---|---|
Scope | Spring 的 Config Server 會在與連線的容器應用程式相同的環境中執行。 |
調整大小 | 為了維護單一事實來源,Spring 的 Config Server 不會進行調整。 調整屬性 minReplicas 與 maxReplicas 設定為 1 。 |
資源 | Config Server for Spring 的容器資源配置是固定的,CPU 核心的數目是 0.5,記憶體大小為 1Gi。 |
定價 | Spring 計費的設定伺服器低於以使用量為基礎的定價。 受控 Java 元件所耗用的資源會以使用/閑置費率計費。 您可以刪除不再用來停止計費的元件。 |
繫結 | 容器應用程式會透過系結連線到 Spring 的 Config Server。 系結會將組態插入容器應用程式環境變數。 建立系結之後,容器應用程式就可以從環境變數讀取組態值。 |
設定
開始使用 Spring 的 Config Server 之前,您必須先建立必要的資源。
執行下列命令來建立您的資源群組和 Container Apps 環境。
建立變數以支援您的應用程式設定。 這些值是針對本課程的目的而向您提供的。
export LOCATION=eastus export RESOURCE_GROUP=my-spring-cloud-resource-group export ENVIRONMENT=my-spring-cloud-environment export JAVA_COMPONENT_NAME=myconfigserver export APP_NAME=my-config-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest" export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
變數 描述 LOCATION
您在其中建立容器應用程式和 Java 元件的 Azure 區域位置。 ENVIRONMENT
適用於您示範應用程式的 Azure 容器應用程式環境名稱。 RESOURCE_GROUP
示範應用程式的 Azure 資源組名。 JAVA_COMPONENT_NAME
為容器應用程式建立的 Java 元件名稱。 在此情況下,您會建立 Spring Java 元件的設定伺服器。 IMAGE
容器應用程式中所使用的容器映像。 URI
如果 URI 是私人的,您可以將 URI 取代為 git 存放庫 URL,請新增相關的驗證組態,例如 spring.cloud.config.server.git.username
和spring.cloud.config.server.git.password
。使用 Azure CLI 登入 Azure。
az login
建立資源群組。
az group create --name $RESOURCE_GROUP --location $LOCATION
建立您的容器應用程式環境。
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
此環境可用來裝載 Spring 元件的 Config Server 和容器應用程式。
使用 Config Server for Spring Java 元件
現在您已擁有 Container Apps 環境,您可以建立容器應用程式,並將它系結至適用於 Spring 的 Config Server 元件。 當您系結容器應用程式時,組態值會自動從 Config Server 元件同步至您的應用程式。
建立 Spring Java 元件的設定伺服器。
az containerapp env java-component config-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --configuration spring.cloud.config.server.git.uri=$URI
更新 Spring Java 元件的設定伺服器。
az containerapp env java-component config-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
在這裡,您會告訴元件在哪裡尋找可透過
uri
屬性保存組態資訊的存放庫。 屬性refresh-rate
會告知 Container Apps 檢查 Git 存放庫中是否有變更的頻率。建立取用設定數據的容器應用程式。
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --query properties.configuration.ingress.fqdn
此命令會傳回取組態數據之容器應用程式的URL。 將URL複製到文字編輯器,讓您可以在下一個步驟中使用。
如果您在瀏覽器中瀏覽您的應用程式,
connectTimeout
傳回的值是 的預設值0
。系結至 Spring 的組態伺服器。
現在已建立容器應用程式和組態伺服器,您可以將它們與
update
命令系結至容器應用程式。az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $JAVA_COMPONENT_NAME
參數
--bind $JAVA_COMPONENT_NAME
會建立容器應用程式與組態元件之間的連結。一旦容器應用程式和 Config Server 元件系結在一起,組態變更就會自動同步處理至容器應用程式。
當您再次瀏覽應用程式的網址時,的值
connectTimeout
現在是10000
。 此值來自原本設定為元件來源之變數中的$URI
git 存放庫。 具體而言,此值是從connectionTimeout
存放庫application.yml檔案中的 屬性繪製。系結要求會將組態設定插入應用程式作為環境變數。 從組態伺服器擷取組態設定時,應用程式程式代碼現在可以使用這些值。
在此情況下,應用程式可以使用下列環境變數:
SPRING_CLOUD_CONFIG_URI=http://$JAVA_COMPONENT_NAME:80 SPRING_CLOUD_CONFIG_COMPONENT_URI=http://$JAVA_COMPONENT_NAME:80 SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI
如果您要自訂自己的
SPRING_CONFIG_IMPORT
,您可以參考環境變數SPRING_CLOUD_CONFIG_COMPONENT_URI
,例如,您可以覆寫命令行自變數,例如Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true
。您也可以從應用程式中移除繫結。
解除系結 Spring Java 元件的元件的元件的元件伺服器。
若要從容器應用程式中移除繫結,請使用
--unbind
選項。az containerapp update \ --name $APP_NAME \ --unbind $JAVA_COMPONENT_NAME \ --resource-group $RESOURCE_GROUP
當您再次瀏覽應用程式的網址時,會將的值
connectTimeout
變更回0
。
清除資源
本教學課程中建立的資源會影響您的 Azure 帳單。 如果您不會長期使用這些服務,請執行下列命令來刪除本教學課程中建立的所有內容。
az group delete \
--resource-group $RESOURCE_GROUP
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應