授予用户访问OpenShift中的项目/命名空间

时间:2020-02-23 14:30:25  来源:igfitidea点击:

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