我必须在JAVA SpringBoot应用程序中传递环境变量。
我创建了k8s秘密。我在k8s部署YAML中将它们作为环境变量USER_NAME和USER_PWD传递。
但是如何在application.properties文件中读取这些环境变量。 我已经尝试过$ {USER_NAME},但无法正常工作。
例如来自application.properties文件。
spring.datasource.username=${USER_NAME}
答案 0 :(得分:1)
谢谢,现在解决了。
我还需要在运行JAR时传递变量。
例如来自application.properties文件。
spring.datasource.username=${USER_NAME}
和Dockerfile中
ENTRYPOINT exec java -DUSER_NAME=$USER_NAME -DUSER_PWD=$USER_PWD -jar jar-name.jar
答案 1 :(得分:0)
您的部署yml应该是这样的
kind: Deployment
apiVersion: apps/v1
metadata:
name:
spec:
...
spec:
containers:
...
env:
- name: spring.datasource.password
valueFrom:
secretKeyRef:
name: your-secret-name
key: your-secret-key
Kubernetes会将您的spring.datasource.password及其值添加到pod环境变量中。
要使用Spring Boot,您应该在application.properties或application.yml中添加属性spring.datasource.password。