Permission-Manager
Permission-Manager是一款针对Kubernete的管理工具,Permission-Manager支持帮助管理员对Kubernete RBAC(基于角色的访问控制)和用户权限进行管理,并且提供了非常友好的Web用户接口。
Permission-Manager是一款由SIGHUP开发的应用程序,可以给用户提供功能强大的Kubernete RBAC管理功能。如果你在寻求一种简单且有效的Kubernetes集群用户管理方式的话,Permission-Manager将是你绝佳的选择。
在Permission-Manager的帮助下,我们可以轻松创建用户,分配命名空间和权限,并通过友好的Web用户接口来发布Kubeconfig YAML文件。
工具运行机制
Permission-Manager允许我们定义和选择权限标准模板(即定义谁可以在命名空间内或全局范围内做什么事情),并将它们与您可能要创建的所有用户进行关联。
模板系统是针对Cluster-Roles、RoleBinding和ClusterRolesBindigs的抽象实现。
模板介绍
一个模板就是一个带有下列前缀的ClusterRole:
template-namespaced-resources___
比如说:template-namespaced-resources___developer
新增模板
用户可以通过“template-namespaced-resources___”创建并部署一个ClusterRole。
默认模板
“developer”和“operation”默认模板可以通过部署“k8s/k8s-seeds/seed.yml”中的manifest来创建:
kubectl apply -f k8s/k8s-seeds
用户定义
一个用户,即是一种permissionmanagerusers.permissionmanager.user自定义资源。
工具安装&使用
接下来,我们一起看看如何在一个正在运行的Kubernetes集群上安装和部署Permission-Manager。
工具要求
1、创建命名空间:
kubectl create namespace permission-manager
2、使用下列内容创建或更新敏感凭证:
--- apiVersion: v1 kind: Secret metadata: name: permission-manager namespace: permission-manager type: Opaque stringData: PORT: "4000" # port where server is exposed CLUSTER_NAME: "my-cluster" # name of the cluster to use in the generated kubeconfig file CONTROL_PLANE_ADDRESS: "https://172.17.0.3:6443" # full address of the control plane to use in the generated kubeconfig file BASIC_AUTH_PASSWORD: "changeMe" # password used by basic auth (username is `admin`)
工具部署
接下来,运行下列命令实现工具部署:
kubectl apply -f https://github.com/sighupio/permission-manager/releases/download/v1.6.0/crd.yml kubectl apply -f https://github.com/sighupio/permission-manager/releases/download/v1.6.0/seed.yml kubectl apply -f https://github.com/sighupio/permission-manager/releases/download/v1.6.0/deploy.yml
基础认证
工具的登录用户名为“admin”,密码为用户加载在敏感凭证中的“BASIC_AUTH_PASSWORD”数据。
访问应用
kubectl port-forward svc/permission-manager 4000 --namespace permission-manager
运行上述命令之后,我们就可以在浏览器中访问“http://localhost:4000”来使用Permission-Manager了。
工具运行截图
工具首页:
创建用户:
用户概览:
用户Kubeconfig:
工具使用演示样例
【点我查看示例1】
【点我查看示例2】
项目地址
Permission-Manager:【GitHub传送门】