Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Автоматизація доступу в Kubernetes: налаштовуємо GitHub SSO через Loft

Передача статичних файлів kubeconfig у Slack або ручне створення сертифікатів для кожного джуна — це класичний інфраструктурний борг. Коли команда росте, ви неминуче перетворюєтеся на сервіс-деск, який тільки те й робить, що переписує права або забуває закрити доступи при звільненні людей.

Це потрібно автоматизувати ще на старті. Найбільш прагматичний варіант — інтегрувати автентифікацію в Kubernetes із провайдером ідентифікації, де інженери вже мають облікові записи. 

У цьому матеріалі ми покроково розберемо, як налаштувати Single Sign-On (SSO) для кластера за допомогою GitHub та платформи керування доступами Loft.

Що знадобиться для старту та інсталяція Loft CLI

Перед тим як перейти до конфігурації, переконайтеся, що у вас підготовано базове оточення. Нам знадобляться:

Loft розгортається всередині кластера за допомогою Helm. Якщо у вас у системі ще немає Helm-клієнта, варто його встановити, хоча Loft CLI може виконати базове розгортання самостійно.

Крок 1: Запуск кластера

Відкрийте термінал та підніміть локальний кластер:

minikube start

Якщо ви працюєте з готовим віддаленим кластером, де вже налаштований Ingress-контролер, цей крок можна пропустити.

Крок 2: Встановлення Loft CLI

Платформа Loft виступатиме шлюзом між Kubernetes та GitHub. Для керування нею нам потрібна локальна утиліта. Завантажуємо актуальний бінарник під вашу ОС:

curl -s -L "https://github.com/loft-sh/loft/releases/latest" | sed -nE 's!.*"([^"]*loft-linux-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o loft && chmod +x loft; sudo mv loft /usr/local/bin;

(Якщо ви працюєте на macOS, замініть у першому рядку скрипту loft-linux-amd64 на loft-darwin-amd64).

md -Force "$Env:APPDATA\loft"; Invoke-WebRequest -UseBasicParsing ((Invoke-WebRequest -URI "https://github.com/loft-sh/loft/releases/latest" -UseBasicParsing).Content -replace "(?ms).*`"([^`"]*loft-windows-amd64.exe)`".*","https://github.com/`$1") -o $Env:APPDATA\loft\loft.exe; $env:Path += ";" + $Env:APPDATA + "\loft";

Крок 3: Ініціалізація та перший запуск

Тепер деплоїмо Loft у наш кластер. Утиліта автоматично перевірить ваш поточний контекст у kubeconfig та запустить інсталяцію:

loft start

Під час процесу система попросить ввести робочий email для створення профілю адміністратора. Оскільки пароль генерується автоматично, ми рекомендуємо одразу скинути його на ваш власний. Відкрийте сусідню вкладку терміналу та виконайте: 

loft reset password

Щоб перевірити, що все піднялося, авторизуємось у локальній панелі керування: 

loft login https://localhost:9898 --insecure

Прапорець –insecure тут обов’язковий. Оскільки це локальний запуск, Loft використовує тимчасовий самопідписаний SSL-сертифікат. У браузері відкриється сторінка авторизації — вводимо email та свій новий пароль. 

Реєстрація OAuth-додатка в GitHub

Тепер нам потрібно пояснити GitHub, що платформа Loft має право перевіряти особистість наших інженерів. Для цього ми створимо корпоративний OAuth-застосунок. Це займає кілька хвилин, але вимагає точності в URL-адресах.

  1. Перейдіть у свій профіль у GitHub і відкрийте: SettingsDeveloper SettingsOAuth Apps.
  2. Натисніть кнопку New OAuth App та заповніть форму конфігурації:
    • Application name: будь-яка зрозуміла для вашої команди назва.
    • Homepage URL: https://localhost:9898
    • Authorization callback URL: https://localhost:9898/auth/github/callback
  3. Натисніть Register application.

Після реєстрації система перенаправить вас на сторінку застосунку. Звідси нам обов’язково потрібні два значення: Client ID та Client Secret (якщо секрет не згенерувався автоматично, натисніть кнопку Generate a new client secret).

Обов’язково скопіюйте ці ключі в безпечне місце — GitHub показує секрет лише один раз. Якщо ви закриєте сторінку, його доведеться перевипускати.

Зв’язування Loft із GitHub та перевірка доступу

Тепер повертаємося в адмін-панель Loft, яка відкрита у вашому браузері, щоб фіналізувати налаштування.

auth:
github:
clientId: <ВАШ_CLIENT_ID>
clientSecret: <ВАШ_CLIENT_SECRET>
redirectURI: https://localhost:9898/auth/github/callback

Щоб оновити контекст, поверніться в термінал і перезапустіть сесію командами:

loft start

І також:

loft login https://localhost:9898 --insecure

Надання прав доступу до кластера

Щоб інженер міг працювати з інфраструктурою, ви як адміністратор маєте делегувати йому ролі.

  1. Зайдіть у панель Loft під своїм адмінським акаунтом.
  2. У розділі Users ви побачите нового користувача, який щойно авторизувався через GitHub.
  3. Перейдіть у сторінку ClustersCluster Access і натисніть Create Cluster Access.
  4. Виберіть потрібного інженера, визначте для нього межі дозволів (наприклад, роботу лише у виділених Namespaces) та натисніть Create.

Тепер розробнику достатньо виконати у себе в консолі одну команду:

loft use cluster [назва_кластера]

Його локальний файл ~/.kube/config миттєво оновиться, і він зможе безпечно дебажити свої застосунки через стандартний kubectl.

Поширені помилки: що може піти не так при налаштуванні?

Конфігурація часто стикається з нюансами інфраструктури. Ось кілька класичних викликів, з якими ви можете зіткнутися:

Підсумуємо

Перехід від статичних файлів kubeconfig до динамічного SSO — це єдиний спосіб навести лад із доступами, коли команда починає рости. Зв’язавши GitHub із платформою Loft, ви повністю закриваєте питання ручного керування ключами і даєте розробникам нормальний інструмент для швидкого старту. 

Головне — одразу продумати логіку RBAC на етапі авторизації та враховувати обмеження базового OAuth, якщо плануєте масштабувати систему на велику компанію. 

Exit mobile version