java - 读取部署在 Kubernetes 上的 Springboot 中的秘密
问题描述
我在 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:无法在 org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) 中解析值“${mysecret2}”中的占位符“mysecret2”
知道如何检查从 config/env/dev/config.yaml 发送到应用程序中的秘密吗?
解决方案
我能够通过环境变量读取它们:
@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
推荐阅读
- docker - 使用不同的用户运行无根 docker 容器
- apache - 限制对 IP 地址的直接访问给出错误
- elasticsearch - 一个来源->多个过滤器->logstash中的多个接收器配置
- python - 从字符串列表中删除子字符串
- asp.net - 剃刀页面 - 输入更改时更新标签
- sql-server - PowerBuilder 应用程序出现“SQL 错误 16945 未声明游标”
- vb.net - 对于每个循环都在销售订单部分重复
- css - HTML 上的 Tailwind 类不起作用,而 CSS 文件中的 Tailwind 类起作用
- weka - 在 Mac 上安装 WEKA 应用程序导致“无法验证作者”。任何解决方案?
- python - 比较两个带有侧板窗口的列表