Kubernetes CLI (kubectl)
1. Kubectl
Для работы с Nova Container Platform вы можете использовать стандартный инструмент CLI kubectl. С помощью kubectl вы сможете развертывать приложения, проверять и управлять ресурсами кластера, а также получать диагностическую информацию.
Вы можете установить последнюю версию kubectl, руководствуясь официальной документацией Kubernetes по установке и настройке kubectl для разных ОС.
2. Kubelogin
Kubelogin является плагином инструмента kubectl и предоставляет возможность автоматизированного получения доступа к кластеру Kubernetes с помощью персональной учетной записи по протоколу OAuth (OpenID Connect).
Kubelogin удобно использовать, когда необходимо обеспечить доступ к кластеру множеству пользователей. При этом, нет необходимости подготавливать пользователям персональные kubeconfig конфигурации.
Nova Container Platform предоставляет универсальную конфигурацию (kubeconfig) для инструмента kubectl.
Дополнительная информация
Подробнее о работе Kubernetes API Server с токенами OpenID Connect (OIDC) можно узнать в официальной документации Kubernetes OpenID Connect Tokens.
2.1. Установка kubelogin
Вы можете установить последнюю версию kubelogin следующими способами:
-
с помощью Homebrew для ОС macOS и Linux,
-
используя менеджер плагинов
kubectlKrew, -
используя менеджер пакетов для Windows Chocolatey
-
из релизов GitHub
Пример установки `kubelogin`
macOS, Linux
brew install int128/kubelogin/kubelogin
Krew
kubectl krew install oidc-login
Chocolatey (Windows)
choco install kubelogin
Github-релизы kubelogin также доступны в репозиториях Nova Container Platform:
macOS
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_darwin_amd64.zip
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_darwin_arm64.zip
Linux
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_linux_amd64.zip
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_linux_arm64.zip
Windows
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_windows_amd64.zip
Для установки kubelogin из GitHub-релиза необходимо выполнить следующие действия:
-
Загрузить подходящую для вашей ОС версию
kubelogin. -
Переименовать бинарный файл
kubeloginв файлkubectl-oidc_login. -
Добавить путь к бинарному файлу
kubectl-oidc_loginв переменную окруженияPATH.
Пример проверки установки `kubelogin`
$ which kubectl-oidc_login
/Users/nova/.krew/bin/kubectl-oidc_login
$ echo $PATH
/Users/nova/.krew/bin:/opt/homebrew/bin:/opt/homebrew/sbin
Дополнительная информация
Подробнее о работе плагинов можно узнать в официальной документации Kubernetes Extend kubectl with plugins.kubectl
3. Подключение к кластеру
Для управления кластером Kubernetes вам необходимо пройти процесс аутентификации с использованием зарегистрированной учетной записи.
Необходимые условия
-
У вас есть сетевой доступ к кластеру Kubernetes
-
Вы установили инструмент управления кластером
kubectlи плагинkubelogin
Информация
Если ваш кластер доступен только через HTTP-прокси, вы можете установить переменные окружения , HTTP_PROXY и HTTPS_PROXY. Эти переменные учитываются инструментом NO_PROXY и обеспечат доступ к кластеру Kubernetes через ваш HTTP-прокси.kubectl
Процедура
-
Определите в консоли переменную
KUBECONFIG, содержащую путь к полученному после установки файлуkubeadmin.conf:export KUBECONFIG=<путь>/admin.conf -
Получите универсальную конфигурацию
kubeconfigдля доступа к кластеру по протоколу OAuth:kubectl get secret kubeconfig-oidc -n nova-authentication -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-oidc.conf -
Переопределите в консоли переменную
KUBECONFIG, содержащую путь к полученному на предыдущем шаге файлуkubeconfig-oidc.conf:export KUBECONFIG=<путь>/kubeconfig-oidc.conf -
Выполните любую пробную команду с помощью
kubectl, например:kubectl get nodesПри первом доступе к кластеру Kubernetes, а также при необходимости обновления учетных данных, вы будете автоматически перенаправлены на веб-страницу аутентификации через встроенный провайдер идентификации Nova Container Platform.
Рисунок 1. Страница аутентификации в кластереВведите данные учетной записи администратора кластера
kubeadminдля авторизации по протоколу OAuth выбрав метод аутентификации Username.В случае успешной аутентификации вы будете перенаправлены на страницу с подтверждением возможности входа в кластер Kubernetes. Данную страницу можно закрыть.
Рисунок 2. Подтверждение успешной аутентификации в кластереПробная команда
kubectl, запущенная ранее, продолжит работу и возвратит запрошенную информацию.Пример
$ kubectl get nodes NAME STATUS ROLES AGE VERSION node-master-ja4k4alk.nova-wp3sx2i4fwa8.local Ready control-plane 66m v1.26.3 node-worker-c36i1ez0.nova-wp3sx2i4fwa8.local Ready ingress,worker 66m v1.26.3 node-worker-itivaho6.nova-wp3sx2i4fwa8.local Ready infra 66m v1.26.3
Ваши учетные данные (OIDC-токены), полученные таким образом, кешируются ограниченное время в файлах директории ~/.kube/cache/oidc-login/.
4. Подключение к кластеру через промежуточный сервер
Вы можете подключиться к кластеру Kubernetes через промежуточный сервер, используя Nova OAuth.
Необходимые условия
-
У вас есть сетевой доступ к промежуточному серверу
-
У промежуточного сервера есть сетевой доступ к кластеру Kubernetes
-
Вы установили инструмент управления кластером
kubectlи плагинkubeloginна промежуточный сервер
Процедура
-
Получите универсальную конфигурацию
kubeconfigдля доступа к кластеру по протоколу OAuth и сохраните ее на промежуточном сервере:kubectl get secret kubeconfig-oidc -n nova-authentication -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-oidc.conf -
Добавьте в файл дополнительные параметры промежуточного сервера:
apiVersion: v1 clusters: ... - name: oidc-kubernetes-client user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: ... - --listen-address=< адрес промежуточного сервера >:< порт > - --skip-open-browser - --oidc-redirect-url-hostname=< адрес промежуточного сервера >Информация
В качестве адреса промежуточного сервера вы можете указать IP-адрес или полное доменное имя (FQDN).
Пример
apiVersion: v1 clusters: ... - name: oidc-kubernetes-client user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: ... - --listen-address=172.31.100.10:8000 - --skip-open-browser - --oidc-redirect-url-hostname=172.31.100.10 -
Добавьте адрес перенаправления (Redirect URI) в список разрешенных для клиента Kubernetes:
-
Для этого перейдите выполните вход в веб-интерфейс StarVault с помощью учетной записи администратора. Веб-интерфейс StarVault находится по адресу 'https://nova-oauth.< dnsBaseDomain >/'.
-
Перейдите в раздел Access > OIDC Provider и выберете приложение
oidc-kubernetes-client. -
Отредактируйте параметры приложения с помощью кнопки “Edit Application” и добавьте в список
Redirect URIsадрес вашего промежуточного сервера, например,http://< адрес промежуточного сервера >:< порт >. -
Сохраните конфигурацию приложения.
-
-
Переопределите в консоли переменную
KUBECONFIG, содержащую путь к полученному на шаге 2 файлуkubeconfig-oidc.conf:export KUBECONFIG=<путь>/kubeconfig-oidc.conf -
Выполните любую пробную команду с помощью
kubectlна промежуточном сервере, например:kubectl get nodes Please visit the following URL in your browser: http://172.31.100.10:8000При первом доступе к кластеру Kubernetes через промежуточный сервер, а также при необходимости обновления учетных данных, вам будет предложено перейти в веб-интерфейс для прохождения процедуры аутентификации.
После успешного прохождения процедуры ваши учетные данные (OIDC-токены), полученные таким образом, будут сохранены на ограниченное время в файлах домашней директории
~/.kube/cache/oidc-login/промежуточного сервера.