如何更改configmap数据的用户?

时间:2019-05-21 13:55:51

标签: kubernetes configmap

我创建了以非root用户身份运行的映像,但是当我对卷使用configmap时,volume附带的文件是root用户。我想更改用户,但不知道如何更改用户。

我从Google和stackoverflow搜索,但是对此一无所获。

   volumeMounts:
      - name: test
        mountPath: /opt/KOBIL/SSMS/home/configutil
  volumes:
    - name: test
      configMap:
        name: slaveconfig




Actual:
lrwxrwxrwx. 1 root root 17 May 21 12:53 config.xml -> ..data/config.xml
lrwxrwxrwx. 1 root root 18 May 21 12:53 modules.xml -> ..data/modules.xml

Expected:
lrwxrwxrwx. 1 xxuser xxuser 17 May 21 12:53 config.xml -> ..data/config.xml
lrwxrwxrwx. 1 xxuser xxuser 18 May 21 12:53 modules.xml -> ..data/modules.xml

1 个答案:

答案 0 :(得分:0)

当您必须以非root用户身份在容器内运行进程时,这成为Kubernetes部署/状态集的挑战之一。但是,将卷挂载到Pod时,必须始终在root:root的许可下挂载它。因此,非root用户必须有权访问要在其中读取和写入数据的文件夹。

请按照以下步骤操作。

创建用户组并在Dockerfile中分配groudID。 使用userid创建用户并添加到Dockerfile中的组。 递归地更改用户进程要读取/写入的文件夹的所有权。 在pod spec上下文中的Deployment / Statefulset中添加以下行。

规格:   securityContext:     runAsUser:1099     runAsGroup:1099     fsGroup:1099

runAsUser:指定对于Pod中的任何容器,所有进程以用户ID 1099运行 runAsGroup:为Pod的任何容器中的所有进程指定主要组ID 1099.(如果省略此字段,则容器的主要组ID将为root(0),创建的任何文件也将由用户1099和指定runAsGroup时,组1099) fsGroup:指定附加的任何卷的所有者将是GroupId 1099的所有者,并且在该卷下创建的任何文件将具有nonrootgroup:nonrootgroup的许可。