Spring Boot Config Client for Server with vault backend
Spring Boot Config Serverでvaultの設定ファイルを取得し、そのserverに対して設定ファイルを取得しにいくclientのサンプルです。
- イメージ図
- vaultのtokenをbootstrap.ymlファイルに追加
spring: cloud: config: token: your-vault-token
- controllerクラスでvaultに保管しているファイルの値をconfig server 経由で取得
package com.example.configclient.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RefreshScope public class ConfigController { @Value("${foo}") private String vaultFoo; @Value("${baz}") private String vaultBaz; @RequestMapping("/show/vaultconfig") @ResponseBody public String getVaultConfig() { String config = String.format("vault:foo=[%s], baz=[%s]", vaultFoo, vaultBaz); return config; } }
- serverで取得した時のvaultの値
{"name":"app-config","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"vault:app-config","source":{"foo":"bar"}},{"name":"vault:application","source":{"baz":"bam","foo":"bar"}}]}
- clientから設定ファイルを取得
コードは、アップ
github.com