2.3. 配置项目创建
				在 OpenShift Container Platform 中,项目用于对相关对象进行分组和隔离。使用 Web 控制台或 oc new-project 命令请求创建新项目时,系统会根据可自定义的模板来使用 OpenShift Container Platform 中的端点置备项目。
			
作为集群管理员,您可以允许开发人员和服务帐户创建或自助置备其自己的项目,并且配置具体的方式。
2.3.1. 关于项目创建
					OpenShift Container Platform API 服务器根据项目模板自动置备新的项目,模板通过集群的项目配置资源中的 projectRequestTemplate 参数来标识。如果没有定义该参数,API 服务器会创建一个默认模板,该模板将以请求的名称创建项目,并将请求用户分配至该项目的 admin 角色。
				
提交项目请求时,API 会替换模板中的以下参数:
| 参数 | 描述 | 
|---|---|
| 
									 | 项目的名称。必需。 | 
| 
									 | 项目的显示名称。可以为空。 | 
| 
									 | 项目的描述。可以为空。 | 
| 
									 | 管理用户的用户名。 | 
| 
									 | 请求用户的用户名。 | 
					API 访问权限将授予具有 self-provisioner 角色和 self-provisioners 集群角色绑定的开发人员。默认情况下,所有通过身份验证的开发人员都可获得此角色。
				
2.3.2. 为新项目修改模板
作为集群管理员,您可以修改默认项目模板,以便使用自定义要求创建新项目。
创建自己的自定义项目模板:
先决条件
- 
							可以使用具有 cluster-admin权限的账户访问 OpenShift Container Platform 集群。
流程
- 
							以具有 cluster-admin特权的用户身份登录。
- 生成默认项目模板: - oc adm create-bootstrap-project-template -o yaml > template.yaml - $ oc adm create-bootstrap-project-template -o yaml > template.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							使用文本编辑器,通过添加对象或修改现有对象来修改生成的 template.yaml文件。
- 项目模板必须创建在 - openshift-config命名空间中。加载修改后的模板:- oc create -f template.yaml -n openshift-config - $ oc create -f template.yaml -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 Web 控制台或 CLI 编辑项目配置资源。 - 使用 Web 控制台: - 
											导航至 Administration Cluster Settings 页面。 
- 单击 Configuration 以查看所有配置资源。
- 找到 Project 的条目,并点击 Edit YAML。
 
- 
											导航至 Administration 
- 使用 CLI: - 编辑 - project.config.openshift.io/cluster资源:- oc edit project.config.openshift.io/cluster - $ oc edit project.config.openshift.io/cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
- 更新 - spec部分,使其包含- projectRequestTemplate和- name参数,再设置您上传的项目模板的名称。默认名称为- project-request。- 带有自定义项目模板的项目配置资源 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存更改后,创建一个新项目来验证是否成功应用了您的更改。
2.3.3. 禁用项目自助置备
您可以防止经过身份验证的用户组自助置备新项目。
流程
- 
							以具有 cluster-admin特权的用户身份登录。
- 运行以下命令,以查看 - self-provisioners集群角色绑定用法:- oc describe clusterrolebinding.rbac self-provisioners - $ oc describe clusterrolebinding.rbac self-provisioners- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 检查 - self-provisioners部分中的主题。
- 从 - system:authenticated:oauth组中移除- self-provisioner集群角色。- 如果 - self-provisioners集群角色绑定仅将- self-provisioner角色绑定至- system:authenticated:oauth组,请运行以下命令:- oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'- $ oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果 - self-provisioners集群角色将- self-provisioner角色绑定到- system:authenticated:oauth组以外的多个用户、组或服务帐户,请运行以下命令:- oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth- $ oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 编辑 - self-provisioners集群角色绑定,以防止自动更新角色。自动更新会使集群角色重置为默认状态。- 使用 CLI 更新角色绑定: - 运行以下命令: - oc edit clusterrolebinding.rbac self-provisioners - $ oc edit clusterrolebinding.rbac self-provisioners- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在显示的角色绑定中,将 - rbac.authorization.kubernetes.io/autoupdate参数值设置为- false,如下例所示:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 使用单个命令更新角色绑定: - oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'- $ oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 以通过身份验证的用户身份登陆,验证是否无法再自助置备项目: - oc new-project test - $ oc new-project test- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Error from server (Forbidden): You may not request a new project via this API. - Error from server (Forbidden): You may not request a new project via this API.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 您可以对此项目请求消息进行自定义,以提供特定于您的组织的更多有用说明。 
2.3.4. 自定义项目请求消息
当无法自助置备项目的开发人员或服务帐户使用 Web 控制台或 CLI 提出项目创建请求时,默认返回以下错误消息:
You may not request a new project via this API.
You may not request a new project via this API.集群管理员可以自定义此消息。您可以对这个消息进行自定义,以提供特定于您的组织的关于如何请求新项目的信息。例如:
- 
							To request a project, contact your system administrator at projectname@example.com.
- 
							To request a new project, fill out the project request form located at https://internal.example.com/openshift-project-request.
自定义项目请求消息:
流程
- 使用 Web 控制台或 CLI 编辑项目配置资源。 - 使用 Web 控制台: - 
											导航至 Administration Cluster Settings 页面。 
- 单击 Configuration 以查看所有配置资源。
- 找到 Project 的条目,并点击 Edit YAML。
 
- 
											导航至 Administration 
- 使用 CLI: - 
											以具有 cluster-admin特权的用户身份登录。
- 编辑 - project.config.openshift.io/cluster资源:- oc edit project.config.openshift.io/cluster - $ oc edit project.config.openshift.io/cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
											以具有 
 
- 更新 - spec部分,使其包含- projectRequestMessage参数,并将值设为您的自定义消息:- 带有自定义项目请求消息的项目配置资源 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存更改后,请尝试用无法自助置备项目的开发人员或服务帐户创建一个新项目,以验证是否成功应用了您的更改。