授予用户访问OpenShift中的项目/命名空间
OpenShift的项目是隔离和协作的单位。
对于开发人员来部署他们需要成为项目成员的应用程序。
在一个项目中,会员可能具有不同的角色 - 管理员,编辑,视图,等。
作为项目管理员,我们可以将用户添加到群集并为其分配特定权限。
下面是OpenShift中的预定义角色项目并修改项目中的任何资源,除了配额.CLUSTER-Admin:一个可以在任何项目中执行任何操作的超级用户。
当绑定到具有本地绑定的用户时,它们可以完全控制Project.Basic-User中的每个资源的配额和每个动作。
:可以获得有关项目和用户的基本信息的用户。
Cluster-Status:可以获取基本群集状态信息。
它们无法查看或者修改角色或者绑定。
在此简短教程中,我们将创建一个测试项目,用户,并为他们提供创建的项目。
其中一个用户将仅访问群集的视图,并且一个用户应该能够在命名空间/项目中编辑所有资源。
在OpenShift上创建项目
在OpenShift上创建项目。
这可以在CLI或者Web控制台上完成。
$oc new-project test Now using project "test" on server "https://api.devocp.example.com:6443".
然后,我们可以列出所有可用的项目以确认我们刚刚创建的项目。
$oc get projects
授予用户访问OpenShift项目
我们应该让用户已经访问OpenShift群集,然后才能授予它们访问项目的权限。
有多个提供商可用于验证OpenShift中的用户。
我们最近创建了一篇关于使用HTPassWD管理OpenShift群集用户的文章。
使用HTPasswd Identity提供程序管理OpenShift/OKD用户
我们可以获得已使用OC Get Users命令登录群集的用户列表:
$oc get users JKMUTAI 17a06002-b543-4fa9-bfa8-92e510646d0a Josphat Mutai HTPasswd: Q049Sm9zcGhhdCBNdXRhaSxPVT1TYWZhcmljb20gRGVwYXJ0bWVudHMsREM9c2FmYXJpY29tLERDPW5ldA
授予使用leolbinding的项目访问项目。
使用的语法是:
$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