Я хочу разрешить пользователям без прав администратора использовать инструментальную панель Kubernetes для просмотра объектов K8 в их пространствах имен. Как администратор кластера, у меня нет проблем с подключением панели мониторинга Kubernetes с помощью прокси-сервера kubectl. Когда я впервые попытался получить к нему доступ с помощью учетной записи службы приложений с доступом только для чтения ко всему их пространству имен, я получил следующее сообщение об ошибке:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:serviceaccount:ops-jenkins-lab:k8-dashboard-ops-jenkins-lab\" cannot get resource \"services/proxy\" in API group \"\" in the namespace \"kubernetes-dashboard\"",
"reason": "Forbidden",
"details": {
"name": "https:kubernetes-dashboard:",
"kind": "services"
},
"code": 403
}
Я добавил дополнительные роли RBA C, чтобы разрешить службу приложения. доступ учетной записи к службам и службам / прокси в пространстве имен kubernetes-dashboard. Теперь я получаю следующую ошибку:
Forbidden (403): Http failure response for http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/api/v1/login: 403 Forbidden
Если я создаю вход для информационной панели, я могу без проблем подключиться к информационной панели Kubernetes, используя ту же учетную запись службы приложений, и иметь доступ для просмотра всех объектов kubernetes в пространство имен (как только я переключаюсь с пространства по умолчанию на правильное пространство имен). На самом деле я предпочел бы использовать вход, но по какой-то причине, когда я подключаюсь к инструментальной панели Kubernetes через браузер, он захватывает вход для всех моих других приложений. Независимо от того, к какому входу я пытаюсь подключиться, он автоматически перенаправляет меня на панель управления Kubernetes. Мне нужно очистить все данные браузера, чтобы подключиться к другим приложениям.
RBA C clusterrole и rolebinding:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
name: k8-dashboard
rules:
- apiGroups:
- extensions
- apps
resources:
- '*'
verbs:
- get
- list
- watch
- apiGroups:
- batch
resources:
- jobs
- cronjobs
verbs:
- get
- list
- watch
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- get
- list
- watch
- apiGroups:
- policy
resources:
- poddisruptionbudgets
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resources:
- persistentvolumeclaims
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resources:
- events
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resources:
- configmaps
verbs:
- get
- list
- watch
- apiGroups:
- apps
resources:
- '*'
verbs:
- patch
- apiGroups:
- apps
resources:
- deployments/scale
verbs:
- update
- apiGroups:
- ""
resources:
- pods/attach
- pods/exec
- pods/log
- pods/status
- pods/delete
verbs:
- '*'
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- delete
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- get
- delete
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
annotations:
labels:
subjectName: k8-dashboard-sa
name: k8-dashboard-ops-jenkins-lab
namespace: ops-jenkins-lab
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: k8-dashboard
subjects:
- kind: ServiceAccount
name: k8-dashboard-ops-jenkins-lab
namespace: ops-jenkins-lab
Так что мне остается необходимость подключаться к панели управления Kubernetes с помощью kubectl прокси. Я уверен, что при использовании прокси-сервера kubectl в качестве пользователя без прав администратора требуется дополнительный RBA C; Тем не менее, мне еще предстоит выяснить это. Кто-нибудь предлагает?