> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/resheniya/kubernetes/nastroika-klastera/sozdanie-servis-akkaunta-dlya-dashboard.md).

# Создание сервис аккаунта для Dashboard

## Ссылки

Creating sample user: [github.com](https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md)

Развертывание и доступ к панели мониторинга Kubernetes: [kubernetes.io](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/)

## Инструкция

### Создание учетной записи службы

Сначала мы создаем учетную запись службы с именем `dashboard-serviceaccount` в пространстве имен `kubernetes-dashboard`.

```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: dashboard-serviceaccount
  namespace: kubernetes-dashboard
```

### Создание ClusterRoleBinding

В большинстве случаев после подготовки кластера с помощью `kops`, `kubeadm`или любого другого популярного инструмента, `ClusterRole` `cluster-admin`уже существует в кластере. Мы можем использовать её и создать только `ClusterRoleBinding` для нашего `ServiceAccount`.

```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dashboard-serviceaccount-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dashboard-serviceaccount
  namespace: kubernetes-dashboard
```

### Получение токена на предъявителя для ServiceAccount

Теперь нам нужно найти токен, который мы сможем использовать для входа в систему. Выполните следующую команду:

```bash
kubectl -n kubernetes-dashboard create token dashboard-serviceaccount
```

Должно быть напечатано что-то вроде:

```
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
```

Дополнительную информацию об API-токенах для ServiceAccount можно найти в [документации Kubernetes .](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#manually-create-an-api-token-for-a-serviceaccount)

### Получение долгосрочного токена на предъявителя для ServiceAccount

Мы также можем создать токен с секретом, который привязывает учетную запись службы, и токен будет сохранен в секрете:

```yaml
apiVersion: v1
kind: Secret
metadata:
  name: dashboard-serviceaccount-token
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: dashboard-serviceaccount
type: kubernetes.io/service-account-token
```

После создания Secret мы можем выполнить следующую команду, чтобы получить токен, сохраненный в Secret:

```bash
kubectl get secret dashboard-serviceaccount-token -n kubernetes-dashboard -o jsonpath="{.data.token}" | base64 -d
```

Дополнительную информацию о долгосрочных API-токенах для ServiceAccount можно найти в [документации Kubernetes .](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#manually-create-a-long-lived-api-token-for-a-serviceaccount)

### Доступ к панели инструментов

Теперь скопируйте токен и вставьте его в `Enter token`поле на экране входа.

[![Подпевать](https://github.com/kubernetes/dashboard/raw/master/docs/images/signin.png)](https://github.com/kubernetes/dashboard/blob/master/docs/images/signin.png)

Нажмите `Sign in`кнопку, и всё. Теперь вы вошли в систему как администратор.

**Примечание.** Вход с помощью токена возможен ТОЛЬКО при доступе браузера к пользовательскому интерфейсу по протоколу HTTPS. Если сетевой путь к пользовательскому интерфейсу осуществляется по протоколу HTTP, вход завершится ошибкой «Неверный токен».

[![Обзор](https://github.com/kubernetes/dashboard/raw/master/docs/images/overview.png)](https://github.com/kubernetes/dashboard/blob/master/docs/images/overview.png)

### Очистка и дальнейшие шаги

Удалите администратора `ServiceAccount`и `ClusterRoleBinding`.

```
kubectl -n kubernetes-dashboard delete serviceaccount dashboard-serviceaccount
kubectl -n kubernetes-dashboard delete clusterrolebinding dashboard-serviceaccount-clusterrolebinding
```

Чтобы узнать больше о том, как предоставлять/отказывать в разрешениях в Kubernetes, ознакомьтесь с официальной документацией [по аутентификации](https://kubernetes.io/docs/reference/access-authn-authz/authentication/) и [авторизации](https://kubernetes.io/docs/reference/access-authn-authz/authorization/) .
