如何配置Spring Boot从挂载的K8s密钥读取数据库密码
Spring Boot读取K8s挂载密钥文件的数据库密码配置方法
有三种实用方式可以实现,根据你的场景选择即可:
方法一:直接在application.properties中读取文件内容
Spring原生支持通过${file:文件路径}语法读取本地文件内容作为配置值,直接修改你的application.properties:
spring.datasource.password=${file:/mnt/secrets-store/dbpassword}
应用启动时,Spring会自动读取指定路径下的文件内容,赋值给spring.datasource.password配置项。
方法二:通过环境变量中转
如果更倾向于用环境变量传递配置,可以先在Kubernetes的Deployment配置中,把密钥文件内容导出为环境变量:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: your-app-image:tag env: # 从挂载的密钥文件读取内容,设置为环境变量DB_PASSWORD - name: DB_PASSWORD value: "$(cat /mnt/secrets-store/dbpassword)" volumeMounts: - name: secrets-store mountPath: /mnt/secrets-store readOnly: true volumes: - name: secrets-store csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "your-secret-provider-class"
然后修改application.properties,读取这个环境变量:
spring.datasource.password=${DB_PASSWORD}
方法三:使用Spring Cloud Kubernetes(进阶)
如果你的应用已经集成Spring Cloud,可以引入Spring Cloud Kubernetes依赖,直接从K8s Secret中读取配置,无需手动挂载卷。不过这种方式需要额外引入依赖并配置,适合大规模微服务场景。
内容的提问来源于stack exchange,提问作者priyam
相关产品推荐
相关产品推荐

