读取作为卷挂载在应用程序中的kubernetes秘密.属性弹簧引导应用程序



我创建了kubenertes secret

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 manifest为

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文件夹

这些值如何在应用程序中可用。属性,以便我可以获得DB连接

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. 提供已经在正确写入的属性文件中的数据
  2. 使用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挂载到容器中。

相关内容

  • 没有找到相关文章

最新更新