docker - Kubernetes VolumeMount 路径包含时间戳

标签 docker kubernetes continuous-integration kubernetes-helm argocd

我正在使用以下技术:

  • 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/

相关文章:

c# - Microsoft Code Contracts 和 CI 构建服务器

linux - golang.org/x/sys/unix 缺少函数体的问题

r - 在 docker 中挂载 R/RStudio 可以访问的本地卷 (tidyverse)

nginx - Kubernetes NGINX 入口 Controller 404 未找到/未找到对象

java - Bamboo VS。 Hudson(又名 Jenkins)与任何其他 CI 系统

kubernetes - 如何在 istio kubernetes 集群中拒绝默认但允许 HTTP 和 TCP 流量?

kubernetes - kustomize 编辑集图像不适用于 kustomize multibases 和 common base

Composer 文件中的 Docker 健康检查

docker - Docker 容器中的时间与主机不同步

docker - 运行 docker traefik v2.0 以使用自签名证书的问题