Перейти к содержанию

Kubernetes CLI (kubectl)

Kubectl

Для работы с Nova Container Platform вы можете использовать стандартный инструмент CLI kubectl. С помощью kubectl вы сможете развертывать приложения, проверять и управлять ресурсами кластера, а также получать диагностическую информацию.

Вы можете установить последнюю версию kubectl, руководствуясь официальной документацией Kubernetes по установке и настройке kubectl для разных ОС.

Kubelogin

Kubelogin является плагином инструмента kubectl и предоставляет возможность автоматизированного получения доступа к кластеру Kubernetes с помощью персональной учетной записи по протоколу OAuth (OpenID Connect).

Kubelogin удобно использовать, когда необходимо обеспечить доступ к кластеру множеству пользователей. При этом, нет необходимости подготавливать пользователям персональные kubeconfig конфигурации.

Nova Container Platform предоставляет универсальную конфигурацию (kubeconfig) для инструмента kubectl.

Дополнительная информация

Подробнее о работе Kubernetes API Server с токенами OpenID Connect (OIDC) можно узнать в официальной документации Kubernetes OpenID Connect Tokens.

Установка kubelogin

Вы можете установить последнюю версию kubelogin следующими способами:

  • с помощью Homebrew для ОС macOS и Linux,
  • используя менеджер плагинов kubectl Krew,
  • используя менеджер пакетов для Windows Chocolatey
  • из релизов GitHub

Пример установки kubelogin

brew install int128/kubelogin/kubelogin
kubectl krew install oidc-login
choco install kubelogin

Github-релизы kubelogin также доступны в репозиториях Nova Container Platform:

Intel
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_darwin_amd64.zip
Apple Silicon
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_darwin_arm64.zip
amd64
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_linux_amd64.zip
arm64
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_linux_arm64.zip
amd64
curl -LO https://storage.cloud.croc.ru/downloads-nova-platform-io/int128/kubelogin/releases/download/v1.27.0/kubelogin_windows_amd64.zip

Для установки kubelogin из GitHub-релиза необходимо выполнить следующие действия:

  1. Загрузить подходящую для вашей ОС версию kubelogin.

  2. Переименовать бинарный файл kubelogin в файл kubectl-oidc_login.

  3. Добавить путь к бинарному файлу 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

Дополнительная информация

Подробнее о работе плагинов kubectl можно узнать в официальной документации Kubernetes Extend kubectl with plugins.

Подключение к кластеру

Для управления кластером Kubernetes вам необходимо пройти процесс аутентификации с использованием зарегистрированной учетной записи.

Необходимые условия

  • У вас есть сетевой доступ к кластеру Kubernetes

  • Вы установили инструмент управления кластером kubectl и плагин kubelogin

Информация

Если ваш кластер доступен только через HTTP-прокси, вы можете установить переменные окружения HTTP_PROXY, HTTPS_PROXY и NO_PROXY. Эти переменные учитываются инструментом kubectl и обеспечат доступ к кластеру Kubernetes через ваш HTTP-прокси.

Процедура

  1. Определите в консоли переменную KUBECONFIG, содержащую путь к полученному после установки файлу kubeadmin.conf:

    export KUBECONFIG=<путь>/admin.conf
    
  2. Получите универсальную конфигурацию kubeconfig для доступа к кластеру по протоколу OAuth:

    kubectl get secret kubeconfig-oidc -n nova-authentication -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-oidc.conf
    
  3. Переопределите в консоли переменную KUBECONFIG, содержащую путь к полученному на предыдущем шаге файлу kubeconfig-oidc.conf:

    export KUBECONFIG=<путь>/kubeconfig-oidc.conf
    
  4. Выполните любую пробную команду с помощью kubectl, например:

    kubectl get nodes
    

    При первом доступе к кластеру Kubernetes, а также при необходимости обновления учетных данных, вы будете автоматически перенаправлены на веб-страницу аутентификации через встроенный провайдер идентификации Nova Container Platform.

    Страница аутентификации в кластере

    Введите данные учетной записи администратора кластера kubeadmin для авторизации по протоколу OAuth выбрав метод аутентификации Username.

    В случае успешной аутентификации вы будете перенаправлены на страницу с подтверждением возможности входа в кластер Kubernetes. Данную страницу можно закрыть.

    Подтверждение успешной аутентификации в кластере

    Пробная команда 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/.

Подключение к кластеру через промежуточный сервер

Вы можете подключиться к кластеру Kubernetes через промежуточный сервер, используя Nova OAuth.

Необходимые условия

  • У вас есть сетевой доступ к промежуточному серверу

  • У промежуточного сервера есть сетевой доступ к кластеру Kubernetes

  • Вы установили инструмент управления кластером kubectl и плагин kubelogin на промежуточный сервер

Процедура

  1. Получите универсальную конфигурацию kubeconfig для доступа к кластеру по протоколу OAuth и сохраните ее на промежуточном сервере:

    kubectl get secret kubeconfig-oidc -n nova-authentication -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-oidc.conf
    
  2. Добавьте в файл дополнительные параметры промежуточного сервера:

    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
    
  3. Добавьте адрес перенаправления (Redirect URI) в список разрешенных для клиента Kubernetes:

    • Для этого перейдите выполните вход в веб-интерфейс Secrets Manager с помощью учетной записи администратора. Веб-интерфейс Secrets Manager находится по адресу https://nova-oauth.< dnsBaseDomain >/.

    • Перейдите в раздел Access > OIDC Provider и выберете приложение oidc-kubernetes-client.

    • Отредактируйте параметры приложения с помощью кнопки "Edit Application" и добавьте в список Redirect URIs адрес вашего промежуточного сервера, например, http://< адрес промежуточного сервера >:< порт >.

    • Сохраните конфигурацию приложения.

  4. Переопределите в консоли переменную KUBECONFIG, содержащую путь к полученному на шаге 2 файлу kubeconfig-oidc.conf:

    export KUBECONFIG=<путь>/kubeconfig-oidc.conf
    
  5. Выполните любую пробную команду с помощью kubectl на промежуточном сервере, например:

    kubectl get nodes
    
    Please visit the following URL in your browser: http://172.31.100.10:8000
    

    При первом доступе к кластеру Kubernetes через промежуточный сервер, а также при необходимости обновления учетных данных, вам будет предложено перейти в веб-интерфейс для прохождения процедуры аутентификации.

    После успешного прохождения процедуры ваши учетные данные (OIDC-токены), полученные таким образом, будут сохранены на ограниченное время в файлах домашней директории ~/.kube/cache/oidc-login/ промежуточного сервера.