授予用户访问OpenShift中的项目/名称空间的权限
OpenShift中的项目是隔离和协作的单元。为了使开发人员部署应用程序,他们需要成为项目的成员。在一个项目中,成员可能具有不同的管理,编辑,查看等角色。作为项目管理员,我们可以将用户添加到群集中并为其分配特定的权限。以下是OpenShift.edit中的预定义角色:可以修改项目中大多数对象,但无权查看或者修改角色或者绑定的用户。admin:管理员用户有权查看项目中的任何资源。项目和修改项目中的任何资源(quota.cluster-admin除外):超级用户,可以在任何项目中执行任何操作。当与具有本地绑定的用户绑定时,他们具有对配额的完全控制权以及对项目中每个资源的所有操作。基本用户:可以获取有关项目和用户基本信息的用户。集群状态:可以获取基本集群的用户状态信息。自配置程序:可以创建自己的项目的用户。视图:无法进行任何修改,但可以看到项目中大多数对象的用户。他们无法查看或者修改角色或者绑定。
在这个简短的教程中,我们将创建一个测试项目,用户,并授予他们访问所创建项目的权限。其中一位用户将只能查看集群的访问权限,一位用户应能够编辑名称空间/项目中的所有资源。
在OpenShift上创建一个项目
在OpenShift上创建一个项目。可以在CLI或者Web控制台上完成此操作。
$oc new-project test Now using project "test" on server "https://api.devocp.example.com:6443".
然后,我们可以列出所有可用项目,以确认我们刚刚创建的项目可用。
$oc get projects
授予用户对OpenShift项目的访问权限
在授予用户访问Project的权限之前,我们应该已经授予用户对OpenShift群集的访问权限。 OpenShift中可以使用多个提供程序来验证用户身份。我们最近创建了一篇有关使用HTPasswd管理OpenShift集群用户的文章。
使用HTPasswd身份提供程序管理OpenShift/OKD用户
我们可以使用oc get users命令获取已经登录到集群的用户列表:
$oc get users JKMUTAI 17a06002-b543-4fa9-bfa8-92e510646d0a Josphat Mutai HTPasswd: Q049Sm9zcGhhdCBNdXRhaSxPVT1TYWZhcmljb20gRGVwYXJ0bWVudHMsREM9c2FmYXJpY29tLERDPW5ldA
使用角色绑定向用户授予对项目的访问权限。使用的语法是:
$oc adm policy add-role-to-user <role> <user> -n <projectname>
要在测试项目中分配JKMUTAI用户编辑角色,请运行以下命令。
$oc adm policy add-role-to-user edit JKMUTAI -n test clusterrole.rbac.authorization.k8s.io/edit added: "JKMUTAI"
对于群集角色,请使用以下命令:
$oc adm policy add-cluster-role-to-user edit JKMUTAI -n test
要从用户中删除角色,请使用:
$oc adm policy remove-role-from-user <role> <user> -n <projectname> $oc adm policy remove-cluster-role-from-user <role> <user> -n <projectname>
如果要获取有权访问该项目的用户列表,请运行以下命令:
$oc get rolebindings -n <projectname> $oc get rolebindings <rolename> -n <projectname>
输出示例:
我们可以从CLI或者控制台登录,并确认可以切换到项目以进行应用程序部署。
$oc login
使用以下命令切换到项目:
$oc project test Already on project "test" on server "https://api.example.com:6443".
部署测试应用程序。
oc apply -f - <<EOF apiVersion: v1 kind: Pod metadata: name: command-demo labels: purpose: demonstrate-command spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"] restartPolicy: OnFailure EOF
确认容器正在运行:
$oc get pods