Как получить доступ к кластеру из консоли

В платформе Штурвал реализован модуль kubectl-shturval-plugin, позволяющий получить доступ к кластерам без использования графического интерфейса платформы.

  • Команда модуля kubectl shturval login обеспечивает прохождение авторизации в платформе и выгрузку kubeconfigs всех клиентских кластеров, доступных пользователю, или kubeconfig одного клиентского кластера. Когда загружены kubeconfigs, вы можете управлять доступными кластерами, используя команды утилиты kubectl;
  • Команда модуля kubectl shturval login genconfig обеспечивает настройку конфигурационного файла с заданными параметрами для модуля kubectl-shturval-plugin, который будет использован при получении доступа к кластерам в команде kubectl shturval login.

Установка модуля kubectl-shturval-plugin

  1. Чтобы начать работу с модулем, скачайте бинарный файл kubectl-shturval:
  1. Проверьте расположение исполняемого файла kubectl, выполнив команду:
which kubectl

По умолчанию исполняемый файл kubectl находится в /usr/local/bin/. Если путь расположения исполняемого файла отличен от /usr/local/bin/, используйте его в командах далее вместо /usr/local/bin/.

  1. Положите бинарный файл kubectl-shturval к исполняемому файлу kubectl и обеспечьте выдачу права на выполнение. Для этого выполните команду, где вместо /downloads/kubectl-shturval укажите путь до файла kubectl-shturval, скаченного на шаге 1.
sudo cp ./kubectl-shturval /usr/local/bin/ && sudo chmod +x /usr/local/bin/kubectl-shturval 
  1. Убедитесь, что файл располагается в той же директории, что и исполняемый файл kubectl, выполнив команду:
ls /usr/local/bin/ | grep kubectl-shturval
  1. Для вызова справки о команде kubectl shturval login модуля kubectl-shturval-plugin используйте параметр:
Параметр Описание
-h, --help Справка о команде

Пример:

kubectl shturval login -h

Параметры команды kubectl shturval login:

Параметр Обязательный Описание
--auth-url [string] нет URL-адрес сервера аутентификации Shturval
--cacert [string] нет Путь до корневого доверенного сертификата
--client-id [string] нет Идентификатор клиента для внешнего сервиса аутентификации
--client-secret [string] нет Secret клиента для внешнего сервиса аутентификации
--clientcert [string] нет Путь до клиентского сертификата
--clientkey [string] нет Путь до публичного ключа пользователя
-n, --cluster-name [string] нет Имя кластера для получения kubeconfig. Не указывается, если необходимо получить kubeconfigs всех кластеров
--config-path [string] нет Путь до расположения конфигурационного файла shturval-login-plugin. По умолчанию: $HOME
-i, --insecure нет Признак проверки безопасности TLS соединения
-k, --kubeconfig [string] нет Путь расположения загруженных kubeconfigs. По умолчанию: $HOME/.kube
-p, --password [string] да Пароль для подключения к серверу shturval-backend
-s, --server-url [string] да URL shturval-backend сервера
--ttl [string] нет Время жизни токена. По умолчанию 24h
-u, --username [string] да Имя пользователя для подключения к серверу shturval-backend
-v, --version нет Версия команды login

Порядок действий для авторизации и загрузки kubeconfigs клиентских кластеров

  1. Когда модуль kubectl-shturval-plugin установлен, выполните подключение к платформе с обязательными параметрами авторизации. При необходимости сконфигурируйте дополнительные параметры и выполните команду kubectl shturval login.

Пример:

kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link 

В команде kubectl shturval login вместо myName и myPassword укажите ваш логин и пароль, в server-url задайте IP адрес shturval-backend сервера вместо XX-XX-XXX-XX. По умолчанию подключение будет выполнено с проверкой безопасности TLS соединения --insecure= false.

Чтобы отключить проверку безопасности TLS соединения, в команде необходимо указать --insecure=true.

Пример:

kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link --insecure=true

Если необходимо выполнить подключение к платформе с проверкой безопасности TLS соединения, укажите путь до корневого доверенного сертификата в параметре --cacert. При необходимости дополнительно укажите --clientcert и --clientkey.

Пример:

kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link --cacert=/home/username/downloads/apps-ip-XX-XX-XXX-XX.shturval-link.pem

В результате выполнения команды kubectl shturval login:

  • пройдена авторизация в платформе;
  • kubeconfigs всех доступных пользователю клиентских кластеров загружены в файл config директории /home/username/.kube. При необходимости вы можете изменить путь загрузки kubeconfigs, используя параметр --kubeconfig в команде kubectl shturval login.

Пример:

kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link --kubeconfig=/tmp/kube/config 
  1. Когда kubeconfigs загружены, получите список контекстов кластеров, которыми вы можете управлять, выполнив команду:
kubectl config get-contexts
  1. Настройте контекст в kubectl для управления необходимым кластером, используя команду:
kubectl config use-context context-name

Укажите вместо context-name имя необходимого контекста.

  1. Убедитесь, что контекст верно настроен:
kubectl config current-context

Используйте команды kubectl для управления кластером указанного контекста.

Порядок действий для авторизации и загрузки kubeconfig одного клиентского кластера

Когда установлен модуль kubectl-shturval-plugin, вы можете загрузить kubeconfig одного клиентского кластера. Для этого следуйте инструкции:

  1. Выполните подключение к платформе с обязательными параметрами авторизации и заданным именем клиентского кластера в значении параметра --cluster-name. При необходимости сконфигурируйте дополнительные параметры, выполните команду kubectl shturval login:
kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link --cluster-name=myclustername

В команде kubectl shturval login вместо myName и myPassword укажите ваш логин и пароль, в server-url задайте IP адрес shturval-backend сервера вместо XX-XX-XXX-XX. По умолчанию подключение будет выполнено с проверкой безопасности TLS соединения --insecure= false.

Чтобы отключить проверку безопасности TLS соединения, необходимо указать --insecure=true.

Если вы хотите выполнить подключение к платформе с проверкой безопасности TLS соединения, укажите путь до корневого доверенного сертификата в --cacert. При необходимости дополнительно укажите --clientcert и --clientkey.

Пример:

kubectl shturval login --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link --cacert=/home/username/downloads/apps-ip-XX-XX-XXX-XX.shturval-link.pem

В результате выполнения команды kubectl shturval login будет:

  • пройдена авторизация в платформе;
  • kubeconfig указанного клиентского кластера загружен в файл config директории /home/username/.kube. При необходимости вы можете изменить путь загрузки kubeconfig, используя параметр --kubeconfig в команде kubectl shturval login.
  1. Когда kubeconfig загружен, проверьте на какой контекст настроен kubectl:
kubectl config current-context

Используйте команды kubectl для управления кластером текущего контекста.

Подготовка конфигурационного файла для команды kubectl shturval login

В команде kubectl shturval login genconfig конфигурируются те же параметры, что и в команде kubectl shturval login. Вы можете сгенерировать конфигурационный файл с любым набором параметров, так как все параметры являются необязательными для команды kubectl shturval login genconfig.

  1. Задайте параметры для конфигурационного файла в команде kubectl shturval login genconfig.

Пример:

kubectl shturval login genconfig --username=myName --password="myPassword" --server-url=https://back.apps.ip-XX-XX-XXX-XX.shturval.link 

Ваш конфигурационный файл с именем .shturval-login-plugin и заданными параметрами будет находится в директории /home/username. При необходимости вы можете изменить путь для загрузки конфигурационного файла, используя параметр --config-path в команде kubectl shturval login genconfig.

  1. Убедитесь, что конфигурационный файл подготовлен, выполнив команду:
cat /home/username/.shturval-login-plugin 

В ответе ожидается:

auth-url: ""
client-id: ""
client-secret: ""
cluster-name: ""
config-path: /home/username
insecure: false
kubeconfig: /home/username/.kube/config
password: "myPassword"
server-url: "https://back.apps.ip-XX-XX-XXX-XX.shturval.link"
ttl: 24h
username: myName

Если вы выполните команду kubectl shturval login genconfig без заданных параметров, конфигурационный файл будет сформирован с дефолтными значениями.

Обратите внимание! Данные параметров, которые вы укажете в команде kubectl shturval login будут иметь приоритет перед значениями этих же параметров конфигурационного файла .shturval-login-plugin. При этом значения параметров конфигурационного файла не будут перезаписаны.