在Java spring application.properties中将k8s机密读取为环境变量

时间:2020-07-01 13:33:32

标签: java spring-boot kubernetes environment-variables

我必须在JAVA SpringBoot应用程序中传递环境变量。

我创建了k8s秘密。我在k8s部署YAML中将它们作为环境变量USER_NAME和USER_PWD传递。

但是如何在application.properties文件中读取这些环境变量。 我已经尝试过$ {USER_NAME},但无法正常工作。

例如来自application.properties文件。

spring.datasource.username=${USER_NAME}

2 个答案:

答案 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。