Шаг 1. Создайте учетную запись администратора
Начнем с создания файла манифеста учетной записи.
Я назову служебную учетную запись test-admin.
$ vim admin-sa.yml
1 2 3 4 5 6 |
--- apiVersion: v1 kind: ServiceAccount metadata: name: test-admin namespace: kube-system |
Где jmutai-admin – имя создаваемой test-admin.
После создания файла примените манифест для создания объекта в вашем кластере kubernetes.
$ kubectl apply -f admin-sa.yml
serviceaccount/jmutai-admin created
clusterrolebinding.rbac.authorization.k8s.io/test-admin created
Шаг 2. Создание Cluster Role Binding
Далее следует назначить служебной учетной записи созданную привязку роли кластера cluster-admin.
$ vim admin-rbac.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: test-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: test-admin namespace: kube-system |
Замените test-admin на имя учетной записи службы, созданной на шаге 1.
Примените файл.
$ kubectl apply -f admin-rbac.yml
Шаг 3: Получите токен администратора
Вы можете вывести сгенерированный токен для учетной записи службы с помощью команды kubectl.
Установите переменную для хранения имени учетной записи службы.
SA_NAME="test-admin"
Затем выполните команду, показанную ниже, чтобы вывести на экран токен для созданного пользователя с правами администратора.
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')
Вывод:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Name: test-admin-token-mm9jd Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: test-admin kubernetes.io/service-account.uid: 80fade4b-4270-11ea-9fe4-005056ba45bd Type: kubernetes.io/service-account-token Data ==== token ca.crt: 1025 bytes namespace: 11 bytes |
Скопируйте содержимое токена.
Шаг 4: Доступ к дашборду Kubernetes
После создания токена вы можете получить по нему доступ к своей панели администрирования Kubernetes.
Если вы используете NodePort для доступа к службе дашборда, вы можете узнать выделенный порт, введя команду.
1 2 |
$ kubectl get services -n <namespace> | grep dashboard kubernetes-dashboard NodePort 10.111.76.69 <none> 443:32254/TCP 414d |
У меня доступ к админке Kubernetes на любом IP-адресе кластерной машины через порт 32254.