Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Kubernetes CLI (kubectl)

1. Kubectl

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

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

Начиная с версии Universe 3.1.0, утилита kubectl доступна в репозитории Universe и может быть скачана без доступа к внешней сети.

Пример
$ wget https://repo.universe.mycompany.local/packages/universe/utils/kubectl/v1.35.0/kubectl

где: universe.mycompany.local - DNS домен установленного Nova Universe v3.

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

  • Используя менеджер плагинов kubectl Krew

  • Используя менеджер пакетов для Windows Chocolatey

  • Из релизов GitHub

  • Начиная с версии Universe 3.1.0, kubelogin доступен в репозитории Universe и может быть скачан без выхода во внешнюю сеть

Ниже приведены примеры установки 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-релиза выполните действия ниже:

  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.

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

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

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

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

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

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

    export KUBECONFIG=<путь>/admin.conf
  2. Получите универсальную конфигурацию kubec1onfig для доступа к кластеру по протоколу 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:
    $ 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 на промежуточный сервер

    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.

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

    4. Перейдите в раздел AccessOIDC Provider и выберете приложение oidc-kubernetes-client

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

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

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

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

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

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

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