从Spring mvc应用程序中读取挂载卷的秘密值



我们在AKS中使用tomcat映像部署了一个spring MVC应用程序。如何从安装为卷的秘密中获取值?

大多数示例只指向spring引导

我正在从秘密存储

加载值
kind: Pod
apiVersion: v1
metadata:
name: nginx
namespace: default
labels:
aadpodidbinding: pod-mi
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: foo
mountPath: "/mnt/secrets"
readOnly: true
volumes:
- name: foo
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: spc.

可以看到秘密被正确地挂载:

kubectl -n default exec -it nginx -- bash
root@nginx:/# ls /mnt/secrets
service-one-secret
service-two-secret

Cat service-one-secret不返回任何东西

可以有人建议一种方法来读取其值从spring mvc应用程序?

当您将secret作为卷挂载到容器中时,它将在该路径中显示secret的数据。例如,您可以使用以下命令创建一个秘密:

kubectl create secret generic basic-secret 
--from-literal=username="jsmith" 
--from-literal=password="mysupersecurepassword"

然后将secret挂载为卷:

...
spec:
volumes:
- name: vol-secret
secret:
secretName: my-secret
containers:
...
volumeMounts:
- name: vol-secret
mountPath: /etc/app/secrets

在路径/etc/app/secrets中可以看到名为usernamepassword的文件,其值如下所示:

/ # ls /etc/app/secrets
password  user
/ # cat /etc/app/secrets/password
mysupersecurepassword
/ # cat /etc/app/secrets/username
jsmith

最新更新