首页 > 解决方案 > 在 Java spring application.properties 中将 k8s 机密读取为 env 变量

问题描述

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

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

但是如何在 application.properties 文件中读取这些环境变量。我试过 ${USER_NAME} 但它不起作用。

前任。来自 application.properties 文件。

spring.datasource.username=${USER_NAME}

标签: javaspring-bootkubernetesenvironment-variables

解决方案


您的部署 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。


推荐阅读