如何将SpringBootapplication.properties文件链接到Kubernetes ConfigMaps和Secrets

7eumitmz  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(2)|浏览(154)

我必须将DB URL,DB Username和Password变量注入Java Sping Boot 应用程序。我知道这些属性位于application.propertiesres/文件夹下的www.example.com文件中。
现在,作为设计变更,我想采用K8s ConfigMaps和Secrets来代替www.example.com文件中的硬编码application.properties。
如何将K8s中的CM和Secrets链接到应用程序。如何在www.example.com文件中设置占位符application.properties?
在application deployment.yaml中定义CM和Secret依赖关系是否可以完成所有工作?

bgtovc5b

bgtovc5b1#

您有两种选择:一个可以在没有额外依赖的情况下实现,另一个可以通过Sping Boot Cloud实现。

平铺直叙

application.yml中定义环境变量占位符:

spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
    username: ${DB_USER}
    password: ${DB_PASSWORD}

然后在k8s部署中定义环境变量:

env:
    - name: DB_HOST
      valueFrom:
        configMapKeyRef:
          name: your-config-map
          key: dbHost
    - name: DB_PORT
      valueFrom:
        configMapKeyRef:
          name: your-config-map
          key: dbPort
    - name: DB_NAME
      valueFrom:
        configMapKeyRef:
          name: your-config-map
          key: dbName
    - name: DB_USER
      valueFrom:
        secretKeyRef:
          name: your-secret
          key: dbUser
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: your-secret
          key: dbPassword

关于为容器定义环境变量的更多信息可以在k8s documentation中找到。

Sping Boot 云Kubernetes

参考资料中有一整节叫做使用ConfigMap PropertySource和Secrets PropertySource。我建议你去那里看看。

k75qkfdt

k75qkfdt2#

首先,您需要启用spring.cloud.kubernetes.secrets.enabled,然后您可以通过SecretsPropertySource使用Kubernetes Secrets。
您可以通过以下方式使用机密名称:-Dspring.cloud.kubernetes.secrets.name=my-secret其中my-sercret是在kubernetes中定义的秘密的名称。或者您可以通过Documentation中描述的多个其他方法访问它。

相关问题