如何在OpenShift的playground项目中隐藏默认模板,仅用自定义模板?
如何隐藏OpenShift项目中的默认模板并仅允许自定义模板?
我来给你梳理几个靠谱的方案,帮你实现只让用户用自定义模板、隐藏默认模板的需求。核心思路是通过权限控制或者自定义项目模板来限制用户对默认模板的访问,下面分步骤说明:
方案一:通过集群权限控制隐藏默认模板
OpenShift的默认模板都存放在openshift命名空间下,普通用户默认能看到这些模板是因为system:authenticated组被赋予了system:openshift:templates:viewer集群角色。我们只需要移除这个权限,就能让用户看不到默认模板:
先确认当前的权限绑定情况:
oc describe clusterrolebinding system:openshift:templates:viewer你会看到
system:authenticated组在这个绑定里。移除该组的模板查看权限:
oc adm policy remove-cluster-role-from-group system:openshift:templates:viewer system:authenticated
这样操作后,普通用户在创建资源时就看不到openshift命名空间下的任何默认模板了。
方案二:自定义项目请求模板(针对新创建的项目)
如果希望从根源上控制新创建的项目不关联默认模板,可以替换OpenShift的默认项目请求模板:
导出默认的项目请求模板到本地:
oc export template project-request -n openshift > custom-project-request.yaml编辑这个YAML文件,修改权限配置:
- 移除模板中对
openshift命名空间模板的访问权限配置 - 可以添加对自定义模板所在命名空间的访问权限(比如你把自定义模板放在
custom-templates命名空间)
- 移除模板中对
创建自定义的项目请求模板:
oc create -f custom-project-request.yaml -n openshift配置OpenShift集群使用这个自定义模板:
oc patch project.config.openshift.io/cluster --type merge -p '{"spec":{"projectRequestTemplate":{"name":"custom-project-request"}}}'这里的
custom-project-request是你自定义模板的名称,记得替换成实际名称。
方案三:为现有项目调整权限(可选)
如果你已经有一些创建好的项目,需要让这些项目里的用户也看不到默认模板,可以针对每个项目执行:
oc adm policy remove-role-from-group view system:authenticated -n <你的项目名称>
如果项目数量多,也可以用脚本批量处理。
补充:确保自定义模板可被访问
别忘了给用户开放自定义模板所在命名空间的访问权限,比如你的模板在custom-templates命名空间:
oc adm policy add-role-to-group view system:authenticated -n custom-templates
注意事项
- 不建议直接删除
openshift命名空间下的默认模板,因为OpenShift升级时可能会自动恢复这些模板,权限控制是更安全的方式。 - 操作前最好在测试环境验证,避免影响正常业务。
内容的提问来源于stack exchange,提问作者himanshu_mps
相关产品推荐
相关产品推荐

