Administrador de permisos
Permission Manager es un proyecto que proporciona interfaz de usuario web para Kubernetes RBAC y administración de usuarios, y proporciona una interfaz visual amigable para la administración de permisos de Kubernetes.
instalación
Descargue el archivo yaml de https://github.com/sighupio/permission-manager/tree/master/deployments/kubernetes , de la siguiente manera
[root@qd01-stop-k8s-master001 kubernetes]# ll
total 4
-rw-r--r-- 1 root root 2697 Jan 28 11:08 deploy.yml
drwxr-xr-x 2 root root 37 Jan 28 11:14 seeds
Crear espacio de nombres
[root@qd01-stop-k8s-master001 kubernetes]# kubectl create namespace permission-manager
namespace/permission-manager created
Crea un secreto y actualiza en consecuencia
[rancher@qd01-stop-k8snode011 permission-manager]$ cat secret.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: permission-manager
namespace: permission-manager
type: Opaque
stringData:
PORT: "4000" # port where server is exposed
CLUSTER_NAME: "kubernetes-cluster" # name of the cluster to use in the generated kubeconfig file
CONTROL_PLANE_ADDRESS: "https://10.26.29.208:6443" # full address of the control plane to use in the generated kubeconfig file
BASIC_AUTH_PASSWORD: "k8sAdmin" # password used by basic auth (username is `admin`)
[root@qd01-stop-k8s-master001 kubernetes]# kubectl apply -f secret.yaml
secret/permission-manager created
desplegar
[root@qd01-stop-k8s-master001 seeds]# kubectl apply -f crd.yml
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
customresourcedefinition.apiextensions.k8s.io/permissionmanagerusers.permissionmanager.user created
[root@qd01-stop-k8s-master001 seeds]# kubectl apply -f seed.yml
clusterrole.rbac.authorization.k8s.io/template-namespaced-resources___operation created
clusterrole.rbac.authorization.k8s.io/template-namespaced-resources___developer created
clusterrole.rbac.authorization.k8s.io/template-cluster-resources___read-only created
clusterrole.rbac.authorization.k8s.io/template-cluster-resources___admin created
[root@qd01-stop-k8s-master001 kubernetes]# kubectl apply -f deploy.yml
service/permission-manager created
deployment.apps/permission-manager created
serviceaccount/permission-manager created
clusterrole.rbac.authorization.k8s.io/permission-manager created
Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
clusterrolebinding.rbac.authorization.k8s.io/permission-manager created
El administrador de permisos se implementa arriba, la información de advertencia puede ser ignorada o modificada por usted mismo en la versión api del archivo yaml a rbac.authorization.k8s.io/v1
Utilice la entrada para exponer servicios
Crear ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: permission-manager-ingress
namespace: permission-manager
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: permission.kubeops.net
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: permission-manager
port:
number: 4000
[root@qd01-stop-k8s-master001 kubernetes]# kubectl apply -f ingress.yaml
[root@qd01-stop-k8s-master001 kubernetes]# kubectl get ing -n permission-manager
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
permission-manager-ingress <none> permission.kubeops.net 10.26.29.202,10.26.29.203 80 4m8s
Agregue la resolución dns usted mismo, luego visite allow.kubeops.net en el navegador e inicie sesión con el nombre de usuario y la contraseña (establecidos en secreto)
iniciar sesión
Actualmente no hay usuarios, podemos crear una prueba de usuario normal
Crear usuario
Haga clic en Crear nuevo usuario para
completar la información relevante
y luego haga clic en Guardar para
ver el archivo de configuración generado debajo de la información del usuario
prueba
Guarde el archivo de configuración y luego use este archivo de configuración para acceder al clúster.
Aquí copio el archivo de configuración al local, le cambio el nombre a scofield y uso kubectl para probar
[root@qd01-stop-k8s-master001 kubernetes]# kubectl --kubeconfig=scofield get po
No resources found in default namespace.
[root@qd01-stop-k8s-master001 kubernetes]# kubectl --kubeconfig=scofield get po -n argo
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:permission-manager:scofield" cannot list resource "pods" in API group "" in the namespace "argo"
Se puede ver en el resultado anterior que los dos espacios de nombres que consulté respectivamente son default y argo, pero solo el espacio de nombres predeterminado tiene permisos y el espacio de nombres argo no tiene permiso para operar. Esto es consistente con los permisos que otorgamos al crear un usuario.
Para obtener más información, consulte el sitio web oficial.