我正在尝试将PVC挂载到MongoDB部署中,而没有特权访问。
我尝试通过以下方式为广告连播设置anyuid
:
oc adm policy add-scc-to-user anyuid -z default --as system:admin
在部署中,我使用securityContext
配置。我尝试了fsGroup
等的几种组合:
spec:
securityContext:
runAsUser: 99
runAsGroup: 99
supplementalGroups:
- 99
fsGroup: 99
当我转到pod uid并正确设置guid时:
bash-4.2$ id
uid=99(nobody) gid=99(nobody) groups=99(nobody)
bash-4.2$ whoami
nobody
bash-4.2$ cd /var/lib/mongodb/data
bash-4.2$ touch test.txt
touch: cannot touch 'test.txt': Permission denied
但是pod无法写入pvc目录:
ERROR: Couldn't write into /var/lib/mongodb/data
CAUSE: current user doesn't have permissions for writing to /var/lib/mongodb/data directory
DETAILS: current user id = 99, user groups: 99 0
DETAILS: directory permissions: drwxr-xr-x owned by 0:0, SELinux: system_u:object_r:container_file_t:s0:c234,c491
我也尝试用PVC实例化MySQL模板,而没有从OpenShift目录中进行任何配置更改,这是同样的问题。
感谢您的帮助。
答案 0 :(得分:0)
临时解决方案是使用具有root特权的init容器来更改安装路径的所有者:
initContainers:
- name: mongodb-init
image: alpine
command: ["sh", "-c", "chown -R 99 /var/lib/mongodb/data"]
volumeMounts:
- mountPath: /var/lib/mongodb/data
name: mongodb-pvc
但是我也正在寻找名为Udica的工具。它可以为容器https://github.com/containers/udica
生成SELinux安全策略。