我正在使用以下技术:
- Helm
- argocd
- k8s
我创建了一个 secret :
╰ kubectl create secret generic my-secret --from-file=my-secret=/Users/superduper/project/src/main/resources/config-file.json --dry-run=client -o yaml
apiVersion: v1
data:
my-secret: <content>
kind: Secret
metadata:
creationTimestamp: null
name: my-secret
然后我通过卷挂载将 secret 添加到我的 pod 中:
volumeMounts:
- mountPath: "/etc/config"
name: config
readOnly: true
volumes:
- name: config
secret:
secretName: my-secret
但问题是,当我查看/etc/config 目录时,内容在时间戳目录下显示 my-secret
:
directory:/etc/config/..2021_07_10_20_14_55.980073047
file:/etc/config/..2021_07_10_20_14_55.980073047/my-secret
这正常吗?无论如何我可以摆脱那个时间戳,这样我就可以以编程方式获取配置 secret 吗?
最佳答案
这是 Kubernetes 默认挂载 Secrets 和 ConfigMap 的方式,以便在上游发生更改时将更改向下传播到这些卷挂载。如果您不想使用符号链接(symbolic link)并希望放弃该功能,请使用 subPath
指令,您的挂载将如您所愿。
volumeMounts:
- mountPath: /etc/config/my-secret
name: config
subPath: my-secret
readOnly: true
volumes:
- name: config
secret:
secretName: my-secret
$ k exec alpine -it -- /bin/ash
/ # ls -lah /etc/config/
total 12K
drwxr-xr-x 2 root root 4.0K Jul 10 22:58 .
drwxr-xr-x 1 root root 4.0K Jul 10 22:58 ..
-rw-r--r-- 1 root root 9 Jul 10 22:58 my-secret
/ # cat /etc/config/my-secret
hi there
关于docker - Kubernetes VolumeMount 路径包含时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68331724/