Kubernetes - rola do listowania namespaces
Pisane i publikowane na szybko. Za gramatykę i język nie odpowiadam, do czasu korekty ;-)
Czasem zdarza się, ze trzeba dać komuś (najczęściej deweloperowi) uprawnienia, żeby mógł listować namespaces na klastrze Kubernetes bez patrzenia w ich zawartość.
Zwykle przy popularnym przypisaniu roli do konkretnych namespaces listowanie ich kończy się uroczą informacją … namespaces is forbidden: User…
Rozwiązanie tej potrzeby jest proste – rola do namespaces na poziomie całego klastra z uprawnieniami get, list i watch.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-namespaces
rules:
- apiGroups: ["*"]
resources: ["namespaces", "namespaces/status"]
verbs: ["watch", "get", "list"]
Potem tylko przypisanie do użytkownika lub grupy…
Co do samego zarządzania użytkownikami w Kubernetes warto skorzystać z integracji z jakimś katalogiem. Np. w Azure Kubernetes Service jest to integracja z Azure AD.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-namespaces-binding
subjects:
- kind: User
name: lukasz@blablabla.cos
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: read-namespaces
apiGroup: rbac.authorization.k8s.io
… i można się cieszyć szczęśliwym użytkownikiem (lub zawiedzionym, jak próbował przeciągać korporacyjnie czas na braku uprawnień) z działającym kubectl get ns
.
Cały YAML z rolą znajduje sie w repo.