OpenShift 4.3 - 在没有特权访问的情况下将 PVC 附加到 pod
OpenShift 4.3 - Attach PVC to pod without privileged access
我正在尝试在没有特权访问的情况下将 PVC 安装到 MongoDB 部署。
我尝试通过以下方式为 pods 设置 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 目录更改任何配置,这是同样的问题。
感谢您的帮助。
临时解决方案是使用具有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 的工具。它可以为容器生成 SELinux 安全策略:https://github.com/containers/udica
我正在尝试在没有特权访问的情况下将 PVC 安装到 MongoDB 部署。
我尝试通过以下方式为 pods 设置 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 目录更改任何配置,这是同样的问题。
感谢您的帮助。
临时解决方案是使用具有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 的工具。它可以为容器生成 SELinux 安全策略:https://github.com/containers/udica