Kubernetes dla każdego – sztuka konteneryzacji
Role
ClusterRole
RoleBinding
ClusterRoleBinding
Binding
nie mogą być modyfikowane, konieczne jest ich ponowne utworzeniekubectl create clusterrole <nazwa> --verb=create==resource=pod
Roli można użyć do przyznania dostępu tylko w ramach jednego namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-all
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "create", "list", "watch", "delete", "patch"]
kubectl get roles --all-namespaces
kubectl describe role/<RoleName> -n <Namespace>
Nie ogranicza się do namespace, definiowany jest do całego klastra
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: service-get
rules:
- apiGroups: [""]
resources: ["service"]
verbs: ["get", "list", "watch"]
Wiązanie zdefiniowanej wcześniej roli z konkretnym użytkownikiem lub grupą. Definiujemy tutaj również namespace którego to wiązanie będzie dotyczyć
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: crud-pods
namespace: default
subjects:
- kind: User
name: cloudstate-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-all
apiGroup: rbac.authorization.k8s.io
kubectl get rolebindings --all-namespaces
kubectl describe rolebinding/node-view -n kube-system
subjects może być typu Groups, User lub ServiceAccounts (więcej).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: delete-secrets-cluster
subjects:
- kind: Group
name: secret-remover
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-delete
apiGroup: rbac.authorization.k8s.io