$ oc adm create-bootstrap-project-template -o yaml > template.yaml
AWS 上的 Red Hat OpenShift 服务 API 服务器会根据集群项目配置资源中由projectRequestTemplate
参数标识的项目模板自动配置新项目。如果未定义该参数,则 API 服务器将创建一个默认模板,该模板将创建一个具有请求名称的项目,并将请求用户分配到该项目的admin
角色。
提交项目请求时,API 会将以下参数替换到模板中
参数 | 描述 |
---|---|
|
项目的名称。必填。 |
|
项目的显示名称。可以为空。 |
|
项目的描述。可以为空。 |
|
管理员用户的用户名。 |
|
请求用户的用户名。 |
具有self-provisioner
角色和self-provisioners
集群角色绑定的开发人员可以访问 API。默认情况下,所有已认证的开发人员都可以使用此角色。
作为集群管理员,您可以修改默认项目模板,以便使用您的自定义要求创建新项目。
要创建您自己的自定义项目模板
您可以使用具有dedicated-admin
权限的帐户访问 AWS 上的 Red Hat OpenShift 服务集群。
以具有cluster-admin
权限的用户身份登录。
生成默认项目模板
$ oc adm create-bootstrap-project-template -o yaml > template.yaml
使用文本编辑器修改生成的template.yaml
文件,方法是添加对象或修改现有对象。
必须在openshift-config
命名空间中创建项目模板。加载修改后的模板
$ oc create -f template.yaml -n openshift-config
使用 Web 控制台或 CLI 编辑项目配置资源。
使用 Web 控制台
导航到管理→集群设置页面。
单击配置以查看所有配置资源。
找到项目的条目,然后单击编辑 YAML。
使用 CLI
编辑project.config.openshift.io/cluster
资源
$ oc edit project.config.openshift.io/cluster
更新spec
部分以包含projectRequestTemplate
和name
参数,并设置已上传项目模板的名称。默认名称为project-request
。
apiVersion: config.openshift.io/v1
kind: Project
metadata:
# ...
spec:
projectRequestTemplate:
name: <template_name>
# ...
保存更改后,创建一个新项目以验证更改是否已成功应用。
您可以阻止已认证的用户组自助配置新项目。
以具有cluster-admin
权限的用户身份登录。
通过运行以下命令查看self-provisioners
集群角色绑定的使用情况
$ oc describe clusterrolebinding.rbac self-provisioners
Name: self-provisioners
Labels: <none>
Annotations: rbac.authorization.kubernetes.io/autoupdate=true
Role:
Kind: ClusterRole
Name: self-provisioner
Subjects:
Kind Name Namespace
---- ---- ---------
Group system:authenticated:oauth
查看self-provisioners
部分中的主题。
从组system:authenticated:oauth
中删除self-provisioner
集群角色。
如果self-provisioners
集群角色绑定仅将self-provisioner
角色绑定到system:authenticated:oauth
组,请运行以下命令
$ oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'
如果self-provisioners
集群角色绑定将self-provisioner
角色绑定到多于system:authenticated:oauth
组的用户、组或服务帐户,请运行以下命令
$ oc adm policy \
remove-cluster-role-from-group self-provisioner \
system:authenticated:oauth
编辑self-provisioners
集群角色绑定以防止角色自动更新。自动更新会将集群角色重置为默认状态。
要使用 CLI 更新角色绑定
运行以下命令
$ oc edit clusterrolebinding.rbac self-provisioners
在显示的角色绑定中,将rbac.authorization.kubernetes.io/autoupdate
参数值设置为false
,如下例所示
apiVersion: authorization.openshift.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "false"
# ...
要使用单个命令更新角色绑定
$ oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'
以已认证的用户身份登录,并验证它是否不再能够自助配置项目。
$ oc new-project test
Error from server (Forbidden): You may not request a new project via this API.
考虑自定义此项目请求消息,以提供更具体的、针对您组织的有用说明。
当无法自助配置项目的开发人员或服务帐户使用 Web 控制台或 CLI 发出项目创建请求时,默认情况下会返回以下错误消息
You may not request a new project via this API.
集群管理员可以自定义此消息。考虑对其进行更新,以提供有关如何根据您的组织请求新项目的更多说明。例如
要请求项目,请联系您的系统管理员[email protected]
。
要请求新项目,请填写位于https://internal.example.com/openshift-project-request
的项目请求表单。
要自定义项目请求消息
使用 Web 控制台或 CLI 编辑项目配置资源。
使用 Web 控制台
导航到管理→集群设置页面。
单击配置以查看所有配置资源。
找到项目的条目,然后单击编辑 YAML。
使用 CLI
以具有cluster-admin
权限的用户身份登录。
编辑project.config.openshift.io/cluster
资源
$ oc edit project.config.openshift.io/cluster
更新spec
部分以包含projectRequestMessage
参数,并将值设置为您的自定义消息
apiVersion: config.openshift.io/v1
kind: Project
metadata:
# ...
spec:
projectRequestMessage: <message_string>
# ...
例如
apiVersion: config.openshift.io/v1
kind: Project
metadata:
# ...
spec:
projectRequestMessage: To request a project, contact your system administrator at [email protected].
# ...
保存更改后,尝试以无法自助配置项目的开发人员或服务帐户的身份创建新项目,以验证更改是否已成功应用。