防止用户在OpenShift/OKD群集中创建项目

时间:2020-02-23 14:40:15  来源:igfitidea点击:

如果我们有新创建的OpenShift/OKD Kubernetes集群,则默认情况下用户可以在不咨询群集管理员的情况下创建项目/命名空间。
在大多数设置中,我们需要禁用此功能以确保群集计算资源不会误用。
对于开发人员来遵循正确的过程,将应用程序部署到OpenShift群集环境中。

在本教程中,我们将讨论如何登录用户自己创建项目。
相反,他们会看到一条消息告诉他们向相关团队发送电子邮件,以获取项目创建和权限授予它们使用该项目的权限。

在OpenShift上禁用项目自适应

首先查看自置位程序群集角色绑定使用情况下面的命令。

$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

我们需要从组系统中删除自给自行界群集角色:经过身份验证:OAuth:

oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'

我们应该如下所示的

clusterrolebinding.rbac.authorization.k8s.io/self-provisioners patched

如果自给派者群集角色绑定将自给自行主角色绑定到更多用户,组或者服务账户,而不是系统:经过身份验证:OAuth组,运行以下命令:

oc adm policy \
    remove-cluster-role-from-group self-provisioner \
    system:authenticated:oauth

我们可以使用以下命令直接应用修补程序:

oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'

确认自给自行界群集角色绑定的内容:

oc edit clusterrolebinding.rbac self-provisioners

现在应该设置为false。

.....
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "false"
.....

作为经过身份验证的用户登录并验证它是否可以再提供一个项目:

$oc new-project test
Error from server (Forbidden): You Jan not request a new project via this API.

在OpenShift上自定义项目请求消息

我们需要自定义openshift用户在尝试从CLI或者Web控制台创建项目时获得的消息。

来自Cli.

以群集admin权限以用户身份登录并编辑project.config.openshift.io/cluster资源:

$oc edit project.config.openshift.io/cluster

更新ProjectRequestMessage参数,其中值为自定义消息:

projectRequestMessage: "To request a project, contact OpenShift Admin Team at Hyman@theitroad"

来自网络仪表板

打开OpenShift Web控制台并导航到"管理→群集设置"页面。

单击"全局配置"以查看所有配置资源。

查找项目的条目

单击yaml以编辑它。

projectRequestMessage: "To request a project, contact OpenShift Admin Team at Hyman@theitroad"

保存更改后。
用户可以尝试创建新项目作为开发人员或者服务帐户,请求不会通过。