Как создать пользователя-администратора для доступа к панели управления Kubernetes |
Панель управления Kubernetes — это веб-интерфейс пользователя для развертывания контейнерных приложений в кластере Kubernetes – развертываний, заданий, наборов состояний, наборов DaemonSet и т. д., а также управления ресурсами кластера с возможностью устранения неполадок, которые могут возникнуть. Вы можете использовать панель мониторинга, чтобы получить обзор приложений, работающих в вашем кластере.
Ознакомьтесь с нашим руководством ниже о том, как развернуть панель управления Kubernetes:
- Как установить панель управления Kubernetes с помощью NodePort
В этом руководстве будет описано, как создать пользователя-администратора, имеющего доступ ко всем ресурсам Kubernetes. Пользователь-администратор может изменять объекты во всех пространствах имен, а также администрировать любые другие компоненты в кластере.
Шаг 1. Создайте учетную запись службы администратора.
Начнем с создания файла манифеста учетной записи службы. Я назову сервисную учетную запись k8sadmin:
$ vim admin-sa.yml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8sadmin
namespace: kube-system
Где k8sadmin — имя создаваемой учетной записи службы.
После создания файла примените манифест для создания объектов в кластере Kubernetes.
$ kubectl apply -f admin-sa.yml
serviceaccount/k8sadmin created
clusterrolebinding.rbac.authorization.k8s.io/k8sadmin created
Шаг 2. Создайте привязку роли кластера
Далее необходимо назначить учетной записи службы, созданной привязкой роли кластера cluster-admin.
$ vim admin-rbac.yml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
namespace: kube-system
name: k8sadmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: k8sadmin
namespace: kube-system
Замените k8sadmin именем сервисной учетной записи, созданной на шаге 1.
Примените файл.
kubectl apply -f admin-rbac.yml
Шаг 3. Получите токен администратора.
Кубернетес <= 1,23
Вы можете распечатать сгенерированный токен для сервисной учетной записи с помощью команды kubectl .
Задайте переменную для хранения имени учетной записи службы.
SA_NAME="k8sadmin"
Затем выполните команду ниже, чтобы распечатать токен для созданного пользователя-администратора.
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')
Выход :
Name: k8sadmin-token-mm9jd
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: k8sadmin
kubernetes.io/service-account.uid: 80fade4b-4270-11ea-9fe4-005056ba45bd
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI9IiJ9.eyJpc7MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUxOiJqa211dGFpLWFkbWluLXRva2VuLW1tOWpkIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImprbXV0YWktYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4MGZhZGU0Yi00MjcwLTExZWEtOWZlNC0wMDUwNTZiYTQ1YmQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06amttdXRhaS1hZG1pbiJ9.uMC2ydeHF4jVA5tnKFbBeHRvc4NWqL920jigk2FDeduUdBuFhsNyDcscmL-pBbWHG5KKwOAEuAAeyNaknaHsDadNnbLpp4AMZTTdr22FEp-_v7MfIEQm3QWmq-c0ykpdrzUzGmk5Q3JIpfqeorDI0lZd52-DF4IVMw3VtTNp6ZMHdieQUNRnCEyfs98raCTRAotiXZQaMvmRW5s9peu5hfxM71jufg-Qzmflr9nO-dY2dOHh1WZcKhJqfNfB73GYX2TQlUlurV4Oy0-2CpUUpJ1HAjcSHzKGuSrMUAMAhRwhbZZXhwvbQ6Ei_9Vv2PkD8_Pw9c-k9x-bblFSAqyFhA
ca.crt: 1025 bytes
namespace: 11 bytes
Скопируйте содержимое ключа token.
Кубернетес >=1,24
Начиная с Kubernetes 1.24, токен больше не создается автоматически. Вместо этого мы будем использовать API TokenRequest для создания токенов.
kubectl create token k8sadmin
Пример вывода:
eyJhbGciOiJSUzI1NiIsImtpZCI6ImkyWUh6N01DaW9OUG40Uzk0NVVRdlZoZWV0TzQ5cTNOd21UcFQxdE5ud0UifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLms4cy5jbG91ZGxhYnNrZS5pbyJdLCJleHAiOjE2Nzg0NTY3MjEsImlhdCI6MTY3ODQ1MzEyMSwiaXNzIjoiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLms4cy5jbG91ZGxhYnNrZS5pbyIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoia3ViZS1zeXN0ZW0iLCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoiamttdXRhaS1hZG1pbiIsInVpZCI6IjQxNGEzMDZkLTU3MjgtNGE3ZS1iZjhhLTdlNjZjNzc0M2I4OSJ9fSwibmJmIjoxNjc4NDUzMTIxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06amttdXRhaS1hZG1pbiJ9.MnKpsXpj2xQcqJtx-KTrqpTnQ3l79jhjdHEjtSHvjV4F-Fkvj3YpqqfqQHmN5_WNKxrgxQNdbUEVLjBJmhYYrZEOiGRdtb7s5XKA6C4eY-mGr59UZvdNWyILHfoDCi8YT8IyUdu6wpAO_6zdHHh95F2g7mM0QZAgVHT5RR3hPCDRrUpYm1ZiDUohg-A6RnnSoDXKpHQ4Y9v_HQZWufdldfQ0XYwI47nDnKkimLyTcn-n9hWMBbUh6x79paL0Jf0QfBoFRtrzWlDMhyhPPxEehgwo8Qdmplz1vA6trBUl52gEz0E9iVyGsMz3bKhbk_-F-raTYhHlJx2iqdmnnON0uw
Чтобы создать секрет, создайте файл.
$ vim k8sadmin-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: k8sadmin-token
annotations:
kubernetes.io/service-account.name: k8sadmin
type: kubernetes.io/service-account-token
Создать объект в Kubernetes
kubectl apply -f k8sadmin-secret.yaml
Затем вы можете распечатать токен.
export NAMESPACE="kube-system"
export K8S_USER="k8sadmin"
kubectl -n ${NAMESPACE} describe secret $(kubectl -n ${NAMESPACE} get secret | (grep ${K8S_USER} || echo "$_") | awk '{print $1}') | grep token: | awk '{print $2}'\n
Шаг 4. Доступ к панели управления Kubernetes
Как только токен будет создан, вы сможете получить с его помощью доступ к своей панели управления Kubernetes. Если вы используете NodePort для доступа к службе информационной панели, вы можете получить выделенный порт, введя команду.
$ kubectl get services -n <namespace> | grep dashboard
kubernetes-dashboard NodePort 10.111.76.69 <none> 443:32254/TCP 414d
Я получу доступ к панели управления Kubernetes на любом IP-адресе машины кластера через порт 32254.
Выберите тип аутентификации Токен и вставьте свой токен, чтобы получить доступ к панели управления.
Шаг 5. Создание учетной записи пользователя без прав администратора
Мы создали учетную запись администратора, которая имеет полный доступ к ресурсам кластера. Если вы хотите предоставить пользователям доступ с ограничением пространства имен, обратитесь к нашему предыдущему руководству ниже.
- Создайте службу Kubernetes/учетную запись пользователя, ограниченную одним пространством имен.
Дополнительные руководства по Kubernetes и контейнерам:
- Лучшие минимальные контейнерные операционные системы для запуска Kubernetes
- Присоедините новый рабочий узел Kubernetes к существующему кластеру.
- Как развернуть сервер метрик в кластере Kubernetes
- Установите и используйте Helm 3 в кластере Kubernetes
- Docker против CRI-O против Containerd