【问题标题】:Openshift pod runnning with user id not matching with user in DockerfileOpenshift pod 运行时用户 ID 与 Dockerfile 中的用户不匹配
【发布时间】:2021-02-22 02:38:52
【问题描述】:
我们在 Dockerfile 和入口点 shell 脚本中有“默认”用户,需要在运行时执行。当我们将它部署到 Openshift 集群(4.6)中时,pod 有不同的用户,并且由于这个入口点 shell 脚本失败,因此应用程序没有出现。请求您建议如何在 POD 中使用用户来执行这些 shell 脚本
【问题讨论】:
标签:
kubernetes
openshift
operator-sdk
【解决方案1】:
Openshift 提供安全上下文约束 (SCC) 来控制 Pod 的权限。使用它们,您可以控制 pod 或容器集合可以执行的权限/操作以及它们可以访问的资源。
SCC 允许管理员控制的几件事:
- pod 是否可以运行特权容器。
- 容器的 SELinux 上下文。
- 容器用户 ID。
- 分配一个拥有 pod 卷的
FSGroup。
- 允许的补充组的配置。
- 容器是否需要使用只读根文件系统。
- 卷类型的使用。
SCC 由控制 pod 可以访问的安全功能的设置和策略组成。如果我正确理解您的问题,您想查看RunAsUser 策略:
-
MustRunAs - 需要配置 runAsUser。使用配置的runAsUser 作为默认值。根据配置的runAsUser 进行验证。
-
MustRunAsRange - 如果不使用预分配值,则需要定义最小值和最大值。使用最小值作为默认值。针对整个允许范围进行验证。
-
MustRunAsNonRoot - 要求使用非零 runAsUser 提交 pod 或在映像中定义 USER 指令。没有提供默认值。
-
RunAsAny - 未提供默认值。允许指定任何runAsUser。
更多信息请查看official openshift docs。