Kubernetes卷装入权限秘密不正确

时间:2020-05-11 10:56:35

标签: kubernetes kubernetes-secrets

我正在将k8s机密作为卷装入,并且吊舱中的文件具有错误的权限。

在我的Deployment中,我在volumes数组中有此条目:

        - name: ssh-host-keys
          secret:
            secretName: ftp-ssh-host-keys
            defaultMode: 0600

然后像这样安装:

            - mountPath: /etc/ssh/ssh_host_rsa_key
              name: ssh-host-keys
              subPath: ssh_host_rsa_key
              readOnly: true

但是,当我查看Pod中的文件时,文件权限不正确:

rw-r--r-- 1 root root 553122 Aug 21  2018 moduli
-rw-r--r-- 1 root root   1723 Aug 21  2018 ssh_config
-rw-r----- 1 root 1337    410 May 11 10:33 ssh_host_ed25519_key
-rw-r----- 1 root 1337   3242 May 11 10:33 ssh_host_rsa_key
-rw-r--r-- 1 root 1337    465 May 11 10:33 sshd_config

即键的权限为0644,而不是0600。

我不知道为什么会这样。

2 个答案:

答案 0 :(得分:1)

我认为常见的混淆是文件是链接的,因此ls将默认显示链接权限。查看更多详细信息here

只需添加-L:ls -laL /path/to/directory/即可取消引用链接

如果这不能解决问题,则可能您正面临this bug

答案 1 :(得分:0)

根据documentation,由于JSON的限制,您必须以十进制表示法指定模式。

请参阅文档中提供的示例:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      defaultMode: 256

256个十进制等于八进制的0400。在您的特定情况下,您应该使用defaultMode: 384来获得0600以获得所需的权限。

您可以转换八进制权限here