You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift集群部署Helm Chart触发安全上下文约束报错求解决方案

OpenShift部署MongoDB Helm Chart安全上下文报错解决方案

报错说明

在OpenShift集群中通过Helm Chart部署MongoDB时触发安全上下文约束(SCC)校验不通过报错,报错信息如下:

is forbidden: unable to validate against any security context constraint: [provider restricted: .spec.securityContext.fsGroup: Invalid value: []int64{999}: 999 is not an allowed group spec.containers[0].securityContext.runAsUser: Invalid value: 999: must be in the ranges: [1000640000, 1000649999]]

关联配置

Deployment模板片段

spec:
  serviceAccountName: {{ template "mongodb.fullname" . }}
  securityContext:
    runAsNonRoot: true
    runAsUser: {{ .Values.mongo.securityContext.uid | default 999 }}
    runAsGroup: {{ .Values.mongo.securityContext.gid | default 999 }}
    fsGroup: {{ .Values.mongo.securityContext.fsGroup | default 999 }}

Values配置的安全上下文参数

securityContext:
  gid: 999
  uid: 999
  fsGroup: 999

错误原因

OpenShift默认的restricted安全上下文约束会为每个命名空间自动分配一段唯一的高UID/GID范围,禁止使用自定义的低位UID/GID(如本例的999),避免容器权限逃逸风险。

解决方案

方案一(推荐:符合OpenShift默认安全规则)

直接删除Values中自定义的securityContext配置,或者在部署时覆盖该配置为空,让OpenShift自动为MongoDB容器分配当前命名空间允许范围内的UID/GID,无需修改其他权限配置。
覆盖部署命令示例:

helm install mongodb <你的Chart路径> --set mongo.securityContext=null

方案二(特殊场景需要保留999用户时使用)

为MongoDB绑定的ServiceAccount授权允许使用任意UID的SCC,操作步骤如下:

  1. 替换命名空间和ServiceAccount名称为实际值,执行绑定命令:
oc adm policy add-scc-to-user anyuid -z <mongodb-serviceaccount-name> -n <部署的命名空间>
  1. 重新部署Helm Chart即可生效。
    注意:该方案会放宽容器权限限制,非必要不建议使用。

内容的提问来源于stack exchange,提问作者gopinath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:48:02