Dashboard: учётка для входа и бессрочный токен
Чарт дашборда своего пользователя не создаёт — он лишь показывает форму ввода токена и ходит в API от имени того, чей токен введён. До сих пор дашборд открывался, но войти в него было нечем. Добавлены ServiceAccount dashboard-admin, привязка к встроенной роли cluster-admin и Secret типа kubernetes.io/service-account-token. Secret нужен именно ради бессрочности: с Kubernetes 1.24 ServiceAccount не получает вечный токен автоматически, а kubectl create token выдаёт короткоживущий. Secret с аннотацией kubernetes.io/service-account.name — единственный штатный способ получить токен без срока действия: поле token заполняет контроллер, в репозиторий оно не попадает. Права взяты максимальные осознанно: дашборд задуман как инструмент оператора — логи, exec, перезапуск нагрузок, — и с меньшими правами половина экранов отдаёт ошибки доступа. Для закрытого тестового контура это приемлемо; сузить до read-only можно заменой roleRef на встроенную view, отозвать доступ — удалением Secret.
This commit is contained in:
parent
f9874afb2b
commit
0a69d528b3
59
infrastructure/dashboard/aero/admin-user.yaml
Normal file
59
infrastructure/dashboard/aero/admin-user.yaml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Учётка для входа в Kubernetes Dashboard.
|
||||||
|
#
|
||||||
|
# Чарт дашборда своего пользователя НЕ создаёт: он лишь показывает форму
|
||||||
|
# ввода токена и ходит в API от имени того, чей токен введён. Без этих трёх
|
||||||
|
# объектов дашборд открывается, но войти в него нечем.
|
||||||
|
#
|
||||||
|
# --- Про бессрочность токена -------------------------------------------------
|
||||||
|
# Начиная с Kubernetes 1.24 ServiceAccount больше не получает вечный токен
|
||||||
|
# автоматически, а `kubectl create token` выдаёт короткоживущий (по умолчанию
|
||||||
|
# час). Единственный штатный способ получить токен без срока действия —
|
||||||
|
# завести Secret типа kubernetes.io/service-account-token с аннотацией
|
||||||
|
# kubernetes.io/service-account.name: контроллер токенов сам положит в него
|
||||||
|
# поле token, и это будет legacy-токен, действующий, пока существует Secret.
|
||||||
|
#
|
||||||
|
# Значение поля token в манифесте НЕ указывается и в репозиторий не попадает:
|
||||||
|
# его проставляет кластер. Прочитать —
|
||||||
|
# kubectl -n kubernetes-dashboard get secret dashboard-admin-token \
|
||||||
|
# -o go-template='{{.data.token | base64decode}}'
|
||||||
|
#
|
||||||
|
# --- Про объём прав ----------------------------------------------------------
|
||||||
|
# Привязка идёт к встроенной роли cluster-admin: дашборд задуман как
|
||||||
|
# инструмент оператора — смотреть логи, заходить в контейнеры, перезапускать
|
||||||
|
# нагрузки, — и с меньшими правами половина его экранов отдаёт ошибки доступа.
|
||||||
|
#
|
||||||
|
# Плата за это честная: токен бессрочный, прав максимум, а дашборд опубликован
|
||||||
|
# наружу на dashboard.sarex.local.lonsdaleites.ru. Для закрытого тестового
|
||||||
|
# контура приемлемо; если контур перестанет быть одноразовым — либо сузить
|
||||||
|
# roleRef до встроенной view (дашборд станет read-only), либо удалить Secret,
|
||||||
|
# и токен мгновенно перестанет действовать.
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: dashboard-admin
|
||||||
|
namespace: kubernetes-dashboard
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: dashboard-admin
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
# Встроенная роль, своей не заводим: повторять cluster-admin вручную —
|
||||||
|
# это гарантированно отстать от списка ресурсов при обновлении кластера.
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: dashboard-admin
|
||||||
|
namespace: kubernetes-dashboard
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: dashboard-admin-token
|
||||||
|
namespace: kubernetes-dashboard
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/service-account.name: dashboard-admin
|
||||||
|
type: kubernetes.io/service-account-token
|
||||||
@ -3,6 +3,9 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- ../base
|
- ../base
|
||||||
|
# ServiceAccount + ClusterRoleBinding + Secret с бессрочным токеном.
|
||||||
|
# Своего пользователя чарт дашборда не создаёт — обоснование в шапке файла.
|
||||||
|
- admin-user.yaml
|
||||||
patches:
|
patches:
|
||||||
- path: dashboard.yaml
|
- path: dashboard.yaml
|
||||||
target:
|
target:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user