【发布时间】:2018-02-06 15:35:25
【问题描述】:
我定义了一个 SCC,它允许 developer 用户以 UID 1015 运行容器:
kind: SecurityContextConstraints
apiVersion: v1
metadata:
name: developer
allowPrivilegedContainer: false
runAsUser:
type: MustRunAs
uid: 1015
seLinuxContext:
type: MustRunAs
uid: 1015
users:
- developer
当我直接以developer 用户身份创建 pod 时,此 SCC 工作正常:
apiVersion: v1
kind: Pod
metadata:
name: test-1-0
spec:
securityContext:
runAsUser: 1015
containers:
- name: test-1-0
image: test-image:1.0
imagePullPolicy: "Always"
volumeMounts:
- name: secret-dir
mountPath: "/secrets"
readOnly: true
volumes:
- name: secret-dir
secret:
secretName: test-1.0-configs
但是,当我将此转换为部署时,我收到了错误消息。这是我的 YAML:
kind: "DeploymentConfig"
apiVersion: "v1"
metadata:
name: "test-1-0"
spec:
template:
metadata:
labels:
name: "test-1-0"
spec:
securityContext:
runAsUser: 1015
containers:
- name: test-1-0
image: test-image:1.0
imagePullPolicy: "Always"
volumeMounts:
- name: secret-dir
mountPath: "/secrets"
readOnly: true
volumes:
- name: secret-dir
secret:
secretName: test-1.0-configs
replicas: 2
selector:
name: "test-1-0"
我收到的错误:
Error creating: pods "test-1-0-1-" is forbidden: unable to validate against any security context constraint: [securityContext.runAsUser: Invalid value: 1015: UID on container test-1-0 does not match required range. Found 1015, required min: 1000050000 max: 1000059999]
就好像部署正在部署 pod,而不是我创建部署时使用的用户。有什么办法可以解决吗?
【问题讨论】:
-
你已经试过了吗?:docs.openshift.com/enterprise/3.1/admin_guide/… + 通过 SSH 或登录到你的 OpenShift 主机 $ docker exec -i -t origin /bin/bash su - oc edit scc restricted # 更改 runAsUser。键入策略 RunAsAny
-
@FrancoRondini 您应该避免编辑原始的
restrictedSCC,因为您正在更改很多东西所依赖的默认值。 SCC 的原因是允许您创建不同的权限集并有选择地将它们应用于特定的服务帐户。覆盖系统提供的默认值总是一个坏主意。 -
没关系,但 scc.seLinuxContext.uid 不是有效字段。
-
@GrahamDumpleton 好点!我写的内容是在介绍示例的一些教程/git repo 中提出的,但是您的说明非常有用。顺便说一句,我还打开了this question,我看到了你的评论,如果你能找到完整答案的时间,我将不胜感激。再次感谢。
-
如果在其他问题中您在运行命令时遇到问题而没有明确引用配置文件,那么我可以提供帮助。通常你不需要关心主配置文件。如果您真的想了解它们的用途,最好阅读 docs.openshift.org/latest/welcome/index.html 上的 OpenShift 文档,因为除了它们决定集群的全局配置之外,没有简单的答案。
标签: deployment kubernetes openshift