阅读部署在Kubernetes上的Springboot中的秘密

时间:2019-01-14 14:07:51

标签: spring-boot kubernetes

我在config / yaml文件中配置了许多秘密。有一个引起麻烦的秘密。我只想打印出该秘密注入了什么价值。

apiVersion: v1
kind: ConfigMap
metadata:
name: myapplication-config
data:
  config.yaml: |
    'mysecret1': ${DB_PASSWORD}
    'mysecret2': ${ANOTHER_SECRET}

当我的应用程序全部启动时,我有一个控制器,在该控制器上发出GET请求,然后尝试打印出秘密:

@Autowired
Environment env;

@GetMapping("/test")
public String print(){
  System.out.println(env.getProperty("mysecret2"));
}

我有意在控制器中进行了检查,因此应用程序已完全启动并运行,并且已设置并解决了所有依赖项,等等。

当我打印它时,它会引发错误:

  

原因:java.lang.IllegalArgumentException:无法解析值“ $ {mysecret2}”中的占位符“ mysecret2”       在org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172)

有什么想法可以检查config / env / dev / config.yaml中应用程序中发送的秘密吗?

1 个答案:

答案 0 :(得分:1)

我能够通过环境变量读取它们:

@Autowired 
private org.springframework.core.env.Environment env;

//inside some method
@GetMapping("/test")
public String print(){
  System.out.println(env.getProperty("mysecret2"));
}

我尝试使用下面的方法,但这没用。

@Value("${mysecret2})
private String mySecret2; //didn't work

....

System.getEnv("mySecret2"); //didn't work
System.getProperty("mySecret2"); //didn't work