在 application.properties spring boot 应用程序中读取作为卷安装的 kubernetes 机密
Posted
技术标签:
【中文标题】在 application.properties spring boot 应用程序中读取作为卷安装的 kubernetes 机密【英文标题】:read kubernetes secrets mounted as volume in application.properties spring boot application 【发布时间】:2021-10-30 09:28:23 【问题描述】:我创建了 kubenertes 秘密
echo -n 'myusername' > username.txt
echo -n 'pa55word' > password.txt
kubectl create secret generic esb-database-secret-vol --from-file=username.txt --from-file=password.txt
我将 pod 清单创建为
spec:
containers:
- image: data-api-0.0.1.jar
ports:
- containerPort: 8080
name: esb-data-api
imagePullPolicy: Never
resources:
volumeMounts:
- name: esb-secret-vol
mountPath: "/etc/confidential"
readOnly: true
volumes:
- name: esb-secret-vol
secret:
secretName: esb-database-secret-vol
我验证了 pod /etc/confidential 文件夹中现在可以使用机密
这些值如何在 application.properties 中可用,以便我可以获得数据库连接
spring.datasource.url=jdbc:sqlserver://mycompany.com;databaseName=My_DB
# need to read from /etc/confidential/username.txt
spring.datasource.username=??????
# need to read from /etc/confidential/password.txt
spring.datasource.password=??????
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
【问题讨论】:
【参考方案1】:您有多种选择:
-
提供已在正确写入的属性文件中的数据
使用 init 容器来使用机密数据并使用 shell 脚本创建属性文件
第一种方法看起来像
echo 'spring.datasource.username=myusername' >> app.properties
echo 'spring.datasource.password=pa55word' >> app.properties
kubectl create secret generic esb-database-secret-vol --from-file=app.properties
您稍后将在容器中以application.properties
的形式安装秘密。
【讨论】:
以上是关于在 application.properties spring boot 应用程序中读取作为卷安装的 kubernetes 机密的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 配置文件: application.properties和application.yaml
Quarkus如何在application.properties中设置环境变量
如何在 application.properties 中设置文件夹位置?
springboot~application.properties和application.yml的使用