iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0
Software Development

.Net微服務輕旅行30天系列 第 14

Day 14 Steeltoe OSS提供的Config Server(1)

  • 分享至 

  • xImage
  •  

統一的組態設定管理

對分散式系統來說若是要一個個設定系統參數或環境不只耗時耗力,隨著數量越來越多,手動設定或是管理出錯的機會也相對提高,藉由將所有的設定參數集中於一處方便管理設定,個別服務啟動的時候依據自身的環境變數設定自動讀取對應的設定檔,不只免去了針對個別系統設定的耗時耗力,也免去了管理個別系統設定檔的麻煩。

SteeltoeOSS Configuration提供了利用key-value pair在服務啟動時,從指定位置(ex:檔案或遠端位置)讀取設定參數的能力,裡面提供了兩種configuration provider:

  • Cloud Foundry
  • Spring Cloud Config Server
    這邊選擇可以在localhost跑的Config Server來體驗一下

先把Config Server跑起來

依照http://steeltoe.io/docs/steeltoe-configuration/#2-0-config-server-provider/ 的指示
git clone https://github.com/SteeltoeOSS/configserver.git
執行mvnw spring-boot:run

要是出現錯誤 JAVA_HOME未設定,代表沒有安裝JDK或是沒有設定環境變數JAVA_HOME
https://ithelp.ithome.com.tw/upload/images/20180102/20107867hjbvUXquGt.png

https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/
依照這篇文章下載JDK,然後設定環境變數JAVA_HOME={JDK安裝目錄}
Ps:我使用JDK 9.0.1時會跑mvnw出現錯誤,改用JDK 8u152正常

再跑一次mvnw spring-boot:run ,開瀏覽器輸入localhost:8888後出現下面畫面就是成功啟動configserver了
https://ithelp.ithome.com.tw/upload/images/20180102/20107867MUgq1X7qCH.png

接著跑sample code

接下來從這個步驟開始 http://steeltoe.io/docs/steeltoe-configuration/#2-1-2-get-sample
git clone https://github.com/SteeltoeOSS/Samples.git
cd Samples/Configuration/src/AspDotNetCore/SimpleCloudFoundry
dotnet restore --configfile nuget.config
dotnet run -f netcoreapp2.0

出現以下訊息就是成功了
https://ithelp.ithome.com.tw/upload/images/20180102/20107867xFJclKz8vu.png

打開localhost:5000可以看到網頁
切換到http://localhost:5000/Home/ConfigServer 會看到從外部Github來源讀取的設定
https://ithelp.ithome.com.tw/upload/images/20180102/20107867F5h5rY8MT1.png

可以藉由環境變數來切換讀取的來源

中斷上一步驟的程式,將ASPNETCORE_ENVIRONMENT設成Development,
再跑一次dotnet run -f netcoreapp2.0
切換到http://localhost:5000/Home/ConfigServer ,會看到變數值有改變
https://ithelp.ithome.com.tw/upload/images/20180102/20107867dFfcHkcw5R.png

由VS2017或是dotnet CLI啟動程式會有不同

由VS2017啟動網頁的話,會從launchSettings.json讀入ASPNETCORE_ENVIRONMENT變數,
利用dotnet run啟動網頁的話,會讀取全域或是該terminal的ASPNETCORE_ENVIRONMENT變數環境變數,如果更改ASPNETCORE_ENVIRONMENT變數後讀取的變數值沒有改變,可以稍微看一下是不是這邊的問題

讀取的檔案來源在哪邊?

在這個例子中,所有相關的設定檔都放在下面的Github repo
https://github.com/steeltoeoss/config-repo


上一篇
Day 13 Spring Cloud in .NET: SteeltoeOSS框架
下一篇
Day 15 Steeltoe OSS提供的Config Server(2)
系列文
.Net微服務輕旅行30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言