OpenShift 4.3-将PVC连接到Pod,没有特权访问

时间:2020-07-16 15:25:23

标签: openshift

我正在尝试将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目录中进行任何配置更改,这是同样的问题。

感谢您的帮助。

1 个答案:

答案 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安全策略。