我创建了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
您有几个选择:
- 提供已经在正确写入的属性文件中的数据
- 使用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
挂载到容器中。