Поиск по сайту:

Как создать пользователя-администратора для доступа к панели управления 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

Статьи по данной тематике: