Как получить доступ к панели управления Kubernetes от имени администратора с идентификатором пользователя / паролем вне кластера?

Желаемый результат. Я хочу создать CSV-файл с идентификаторами пользователей и паролями и получить доступ к панели управления Kubernetes как полноправный администратор, желательно из любого места с помощью браузера. Я только изучаю кубернеты и хочу поэкспериментировать с управлением кластером, развертыванием и т. Д. Это только для обучения и не является производственной установкой. Я использую Kubernetes версии 1.9.2 и создал кластер из 3 машин (мастер и 2 рабочих)

Предыстория / Что я сделал на данный момент:
Я прочитал README Dashboard и создал привязку admin-user и admin-role-binding к файлам, показанным ниже. Затем я могу использовать команду kubectl describe secret, чтобы получить токен администратора. Я запускаю kubectl proxy на мастере кластера и аутентифицируюсь на панели мониторинга с этим токеном, используя браузер, запущенный на мастере кластера. Все это работает.

admin-user.yaml:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

admin-role-binding.yaml:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

Я могу войти в панель управления как администратор, ЕСЛИ:

  1. Я запускаю прокси kubectl
  2. Я получаю доступ к панели управления через браузер, в котором я выполнил команду (1)
  3. Я использую параметр «токен» для входа в систему и вставляю токен администратора, который я получаю с помощью команды kubectl describe secret.

Что бы я хотел сделать:

  1. Создайте CSV-файл с идентификаторами пользователя / паролями
  2. Войдите как администратор с идентификатором пользователя / паролем
  3. Уметь входить в систему из любого места

Для этого я создал файл CSV, например /home/chris/myusers.txt:

mypasswd,admin,42

Я не знал, какое значение использовать для id, поэтому просто набрал 42.

Затем я отредактировал файл:
/etc/kubernetes/manifests/kube-apiserver.yaml и добавил эту строку:
--basic-auth-file=/home/chris/myusers.txt

а затем перезапустите kubelet:
sudo systemctl restart kubelet

Однако, когда я это сделал, мой кластер перестал работать, и я не смог получить доступ к панели инструментов, поэтому я вернулся к тому месту, где до сих пор использую токен администратора.

Мои вопросы:

  1. Можно ли здесь делать то, что я пытаюсь сделать?
  2. Какие значения идентификаторов использовать в пользовательском CSV-файле? Какие группы я бы указал?
  3. Какие еще изменения мне нужно внести, чтобы все это работало? Если я изменю манифест apiserver для использования файла с идентификаторами пользователя / паролями, испортит ли это остальную конфигурацию моего кластера?

person ChrisRTech    schedule 12.02.2018    source источник


Ответы (1)


Вы можете попробовать этот, он работает для меня. Взяв ссылку отсюда.

  volumeMounts:
    - mountPath: /etc/kubernetes/auth.csv
      name: kubernetes-dashboard
      readOnly: true
  volumes:
  - hostPath:
      path: /etc/kubernetes/auth.csv
    name: kubernetes-dashboard

Как настроить простую аутентификацию входа / прохода для настольного интерфейса Kubernetes

person er.roshan    schedule 23.07.2019