kubernetes - 如何更改 configmap 数据的用户?
问题描述
我创建了以非 root 用户运行的映像,但是当我将 configmap 用于卷时,卷附带的文件是 root 用户。我想更改用户,但我不知道如何更改用户。
我从谷歌和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
解决方案
当您必须以非 root 用户身份在容器内运行进程时,这是 Kubernetes 部署/状态集的挑战之一。但是,当您将卷挂载到 pod 时,它总是在 root:root 的权限下挂载。因此,非 root 用户必须有权访问要读取和写入数据的文件夹。
请按照以下步骤进行操作。
在 Dockerfile 中创建用户组并分配 groudID。使用 userid 创建用户并添加到 Dockerfile 中的组。递归更改用户进程想要读/写的文件夹的所有权。在 pod 规范上下文中的 deployment/Statefulset 中添加以下行。
规格:securityContext:runAsUser:1099 runAsGroup:1099 fsGroup:1099
runAsUser:指定对于 Pod 中的任何 Container,所有进程都以用户 ID 1099 运行 runAsGroup:指定 Pod 中任何容器内的所有进程的主组 ID 为 1099。(如果省略此字段,则该字段的主组 ID容器将是 root(0),当指定 runAsGroup 时,创建的任何文件也将归用户 1099 和组 1099 所有非根组:非根组。
推荐阅读
- sql-server - 在另一个会话中执行代码时运行并行事务
- windows - 安装时 Inno Setup 在目标目录中创建的临时 tmp 文件
- python - 极小极大算法理解
- awk - 对于列中的每个唯一值,提取行并单独保存
- reactjs - VS 代码格式化会意外破坏 .js 文件中的代码
- php - PHP在多维数组中的特定索引上查找重复项
- g1ant - 轻松在 G1ant 软件中编写代码
- asterisk - 找到对应的中继通道
- python - 适用于 Linux (WSL 2) 和 Jupyter Lab 的 Windows 子系统:在 Linux 而不是 Windows 的文件系统下保存新的 Jupyter Notebook
- eigen - 特征动态大小的矩阵垂直/水平Linspaced?