Kubernetes Dashboard та Headlamp обидва показують, що працює в кластері, але вони працюють по-різному. Коли Headlamp запускається на робочому столі, він використовує ваш наявний kubeconfig для підключення до одного або кількох кластерів і може бути розширений втулками. Коли Headlamp запускається всередині кластера, він використовує Kubernetes ServiceAccount для доступу до API та дотримання правил RBAC. Kubernetes Dashboard, навпаки, працює лише всередині кластера і завжди покладається на токени службового облікового запису. Розуміння цих моделей на ранньому етапі допомагає вибрати правильну конфігурацію та дозволи.
Dashboard — це вебзастосунок, який працює всередині вашого кластера.
kubectl port-forward або ingress.Відчуття таке: інтерфейс користувача, який живе разом із кластером.
Headlamp діє більше як клієнт Kubernetes з інтерфейсом користувача.
Headlamp — це інтерфейс користувача, який слідує за вашою ідентичністю, а не за кластером.
Більшість робочих процесів залишаться знайомими:
Деякі речі будуть відчуватися інакше:
Цей контрольний список допоможе уникнути неприємних сюрпризів під час переходу. Він гарантує, що Headlamp може використовувати ту ж ідентичність та дозволи, яким ви вже довіряєте в Kubernetes. Він також дає швидкий спосіб перевірити, чи працює міграція, перш ніж вимкнути Dashboard.
Перелічіть основне:
Це ваша відправна точка.
Headlamp використовує kubeconfig, особливо на робочому столі. Переконайтеся, що ваш працює, перш ніж встановлювати будь-що.
Запустіть:
kubectl config current-context
Потім спробуйте:
kubectl get nodes
Якщо ви не можете вивести список вузлів, спробуйте це зробтити в просторі імен, до якого у вас є доступ:
kubectl get pods -n <namespace>
Якщо ці команди працюють, Headlamp може використовувати ту ж ідентичність та RBAC.
Немає потреби поспішати. Більшість команд обирають один з цих варіантів:
Паралельне розгортання (рекомендовано)
Перемикання
Паралельне розгортання безпечніше для спільних кластерів.
Ви можете використовувати будь-який варіант. Багато команд використовують обидва.
Desktop
В кластері
Це поширені залежності. Ви можете налаштувати їх пізніше.
metrics-server (для графіків використання CPU та памʼяті)Headlamp може працювати на вашому робочому столі або всередині кластера. Обидва варіанти добре працюють, але вони підходять для різних потреб. Робочий стіл — найшвидший спосіб почати, оскільки він використовує ваш kubeconfig і не працює в кластері. В кластері краще, коли потрібен спільний URL і ви хочете, щоб команда платформи керувала оновленнями та доступом.
Desktop Headlamp запускається на кожному компʼютері користувача. Він читає той самий kubeconfig, який ви використовуєте з kubectl. Це дозволяє доступ, привʼязаний до ідентичності та RBAC кожного користувача.
Чому команди обирають цей варіант
In-cluster Headlamp встановлюється як робоче навантаження Kubernetes (часто через Helm). Це дозволяє адміністраторам кластера керувати ним як іншими застосунками в кластері.
Цей розділ допоможе запустити Headlamp. Дотримуйтесь шляху, який ви обрали в Розділі 3.
Встановіть Headlamp на вашому компʼютері. Потім відкрийте його як будь-який інший застосунок. Headlamp читає ваш kubeconfig і використовує ті ж правила ідентичності та RBAC, що й kubectl.
Windows
Встановлення за допомогою WinGet:
winget install headlamp
Або з Chocolatey:
choco install headlamp
macOS
Встановлення за допомогою Homebrew:
brew install --cask headlamp
Linux
Встановлення за допомогою Flatpak (Flathub):
flatpak install flathub io.kinvolk.Headlamp
Швидка перевірка
Використовуйте цей шлях, якщо ви хочете спільний інтерфейс, яким може керувати команда платформи. Headlamp підтримує розгортання в кластері за допомогою Helm або YAML-манифесту.
Встановлення за допомогою Helm
Додайте репозиторій і оновіть його:
helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
helm repo update
Створіть простір імен (приклад):
kubectl create namespace headlamp
Встановіть чарт:
helm install headlamp headlamp/headlamp --namespace headlamp
Встановлення за допомогою YAML-манифесту (опціонально)
Headlamp також надає YAML-манифест, який ви можете застосувати, а потім налаштувати відповідно до ваших потреб.
Перевірка встановлення
Підтвердьте, що под запущений:
kubectl get pods -n headlamp
Підтвердьте, що сервіс існує:
kubectl get svc -n headlamp
Доступ до нього (два поширені способи)
Швидка перевірка за допомогою port-forward
Це найшвидший спосіб перевірити, чи працює сервіс:
kubectl port-forward -n headlamp svc/headlamp 8080:80
Потім відкрийте: http://localhost:8080
Спільний доступ через ingress
Якщо ви хочете мати стабільний URL, відкрийте сервіс через ваш ingress-контролер. Точний YAML для ingress залежить від вашої конфігурації. URL для OIDC callback у Headlamp — це ваш публічний URL плюс /oidc-callback, тому налаштування ingress і TLS мають значення.
Оновлення залежить від того, як ви встановили Headlamp. Менеджери пакунків оновлюють застосунок на місці. Встановлення через DMG або EXE оновлюється шляхом повторного встановлення нової версії.
macOS
Якщо ви встановили за допомогою Homebrew, виконайте:
brew upgrade headlamp
Якщо ви встановили з DMG, завантажте новий DMG і перетягніть Headlamp у /Applications, замінивши стару версію. Встановлення через DMG не оновлюється автоматично.
Windows
Якщо ви встановили за допомогою WinGet, виконайте:
winget upgrade headlamp
Якщо ви встановили за допомогою Chocolatey, виконайте:
choco upgrade headlamp
Якщо ви встановили з EXE, завантажте новий інсталятор і запустіть його знову. Встановлення через EXE не оновлюється автоматично.
Linux
Якщо ви встановили за допомогою Flatpak, виконайте:
flatpak update io.kinvolk.Headlamp
Якщо ви встановили за допомогою AppImage, завантажте новий AppImage і запустіть цей файл замість старого.
Якщо ви встановили за допомогою tarball, завантажте новий tarball, розпакуйте його і запустіть новий бінарний файл headlamp.
Вважайте інтерфейс користувача в кластері як будь-який інший сервіс, що взаємодіє з кластером. Використовуйте TLS, обмежте доступ до нього і покладайтеся на автентифікацію Kubernetes та RBAC для контролю дій користувачів.
Headlamp використовує API Kubernetes так само, як і kubectl. Ваш кластер все ще вирішує, хто що може робити. Headlamp лише показує дії, які дозволені вашій ідентичності.
Цей розділ охоплює два налаштування: для десктопу та для роботи в кластері.
На десктопі Headlamp читає ваш kubeconfig і використовує ті ж облікові дані, що й kubectl. Немає окремого потоку входу з токеном для керування.
Крок 1: Підтвердьте, що ваш kubeconfig працює
Виконайте:
kubectl config current-context
Потім перевірте доступ:
kubectl get nodes
Якщо ви не можете отримати список вузлів, перевірте простір імен, до якого у вас є доступ:
kubectl get pods -n <namespace>
Якщо ці команди працюють, ваш kubeconfig і облікові дані дійсні для Headlamp також.
Крок 2: Вкажіть Headlamp правильний kubeconfig (якщо потрібно)
Headlamp може використовувати стандартний шлях до kubeconfig. Він також може використовувати власний шлях до файлу. Ви можете встановити KUBECONFIG, щоб вибрати конкретний файл.
Приклад:
KUBECONFIG=/path/to/config headlamp
Ви також можете використовувати більше одного файлу kubeconfig одночасно. В системах Unix розділяйте шляхи за допомогою :. У Windows розділяйте шляхи за допомогою ;.
Що очікувати в інтерфейсі користувача
Headlamp адаптується до ваших дозволів RBAC. Якщо у вас немає дозволу редагувати або видаляти ресурс, Headlamp не запропонує ці дії.
In-cluster Headlamp використовується багатьма користувачами. Вам потрібен чіткий план для входу та доступу. Headlamp підтримує OpenID Connect (OIDC) для потоку "Sign in".
Зазвичай ви обираєте один із цих варіантів:
A. Вбудований OIDC (Headlamp)
Щоб використовувати OIDC, Headlamp потребує:
Ваш провайдер OIDC також повинен дозволяти URL зворотного виклику Headlamp. URL зворотного виклику — це ваш URL Headlamp плюс:
/oidc-callbackПриклад:
https://headlamp.example.com/oidc-callbackПримітка щодо Ingress
Якщо Headlamp знаходиться за ingress або балансувальником навантаження, переконайтеся, що він пересилає X-Forwarded-Proto. Якщо ні, Headlamp може згенерувати URL зворотного виклику з http замість https. Це може порушити вхід.
B. Шар автентифікації перед Headlamp
Деякі команди захищають Headlamp за допомогою проксі, що розпізнає особу користувача, або системи автентифікації платформи. Це забезпечує узгоджений вхід у всі інструменти. Документація Headlamp містить приклад використання OpenUnison, який може розгорнути Headlamp з жорсткими стандартними налаштуваннями та інтегруватися з провайдерами ідентифікації.
Безпека Kubernetes починається з автентифікації та авторизації API (RBAC). Headlamp дотримується цих правил.
Практичні поради:
Desktop: "Я не бачу свій кластер"
Ваш kubeconfig може не знаходитися в стандартному місці. Вкажіть Headlamp файл за допомогою KUBECONFIG або шляху до файлу.
In-cluster: "Після перенаправлення не вдається увійти в OIDC"
Підтвердьте, що ваш провайдер дозволяє https://YOUR_URL/oidc-callback. Якщо ви використовуєте ingress, переконайтеся, що він пересилає X-Forwarded-Proto.
Kubernetes Dashboard зазвичай привʼязаний до одного кластера одночасно. Headlamp створений для роботи з кількома кластерами. Це клієнт, який слідує за вашим kubeconfig, а не встановлення для одного кластера. Це означає, що ви можете тримати один інтерфейс відкритим і перемикатися між кластерами під час роботи.
Headlamp читає кластери з ваших файлів kubeconfig. Це означає, що кластери, до яких ви можете отримати доступ за допомогою kubectl, також можуть показуватися в Headlamp.
Після завантаження kubeconfig у Headlamp, ви можете перемикатися між кластерами за допомогою селектора кластерів. Це полегшує переміщення між dev, staging та prod без зміни інструментів.
Якщо у вас є окремі файли kubeconfig, ви можете завантажити їх разом. Headlamp підтримує кілька шляхів до kubeconfig у KUBECONFIG.
Unix/macOS/Linux (: separator):
KUBECONFIG=~/.kube/dev:~/.kube/prod headlamp
Windows (; separator):
$env:KUBECONFIG="$HOME\.kube\dev;$HOME\.kube\prod"
Ви також можете додавати кластери, завантажуючи додаткові файли kubeconfig з інтерфейсу користувача.
Використання Multi-cluster не змінює правила безпеки. Кожен кластер все ще застосовує власний RBAC. Headlamp показує лише те, що ваша ідентичність може робити в обраному кластері.
Якщо ви використовували Kubernetes Dashboard, ця частина буде знайома. Headlamp зберігає ті ж основні перегляди ресурсів, але робить легшим переміщення та розуміння того, що підключено.
Headlamp групує ресурси таким чином, що це близько до Dashboard:
Ви можете фільтрувати за простором імен у верхній частині інтерфейсу, так само як у Dashboard.
З будь-якого списку ви можете натиснути на ресурс, щоб побачити деталі:
Якщо ваш RBAC дозволяє, ви можете редагувати YAML безпосередньо з інтерфейсу. Якщо ні, Headlamp показує ресурс лише для читання. Це відповідає поведінці kubectl.
Headlamp додає швидший пошук та фільтри у списках. Це допомагає, коли кластери або простори імен стають великими. Ви можете звужувати перегляди без переходу між сторінками.
Dashboard в основному показує ресурси у вигляді списків. Headlamp також включає Map View.
Map View показує, як ресурси взаємоповʼязані:
Це допомагає під час усунення несправностей. Замість того, щоб переходити через кілька сторінок, ви можете бачити звʼязки одразу. Ви можете швидше виявити відсутні або порушені взаємозвʼязки.
Обидва перегляди працюють з одними й тими ж даними. Ви просто обираєте, скільки контексту вам потрібно в даний момент.
Цей момент є найбільшою зміною для більшості користувачів Kubernetes Dashboard. Dashboard покладався на форми. Headlamp покладається на маніфести. Мета не в тому, щоб уповільнити вас. Мета — узгодити інтерфейс користувача з тим, як Kubernetes зазвичай працює на практиці.
У Kubernetes Dashboard ви часто розгортали застосунок, заповнюючи форму:
Headlamp не включає той самий майстер. Замість цього він дозволяє застосовувати YAML безпосередньо з інтерфейсу. Це відповідає тому, як більшість команд виконують розгортання сьогодні:
Headlamp вписується в цей процес, а не замінює його.
Щоб розгорнути застосунок у Headlamp:

Кнопка Створити
Ресурс зʼявляється негайно в інтерфейсі.
Якщо маніфест недійсний, Headlamp показує ті самі помилки, які ви б побачили від Kubernetes API.
Якщо вам не вистачає майстра Dashboard, ви все ще можете швидко згенерувати YAML.
Наприклад:
kubectl create deployment nginx \
--image=nginx \
--dry-run=client \
-o yaml > nginx.yaml
Ви можете відредагувати файл за потреби, а потім вставити його в Headlamp і застосувати. Це дає вам повторюваний маніфест замість обʼєкта, створеного лише через інтерфейс користувача.
Це добре працює з Headlamp.
Headlamp не замінює ці інструменти. Він дає вам видимість того, що вони створюють.
Однією з основних причин, чому люди використовували Kubernetes Dashboard, було щоденне налагодження. Headlamp охоплює ті самі завдання і додає кілька корисних покращень.
Ви можете переглядати журнали подів безпосередньо в інтерфейсі користувача.
Щоб перевірити журнали:

Інтерфейс Workloads
Якщо под має більше одного контейнера, ви можете перемикатися між контейнерами. Журнали транслюються в реальному часі, що допомагає під час розгортання або активних інцидентів.
Headlamp також дозволяє відкрити оболонку всередині контейнера.
З перегляду пода:
Це призведе до відкриття інтерактивної сесії всередині контейнера. Це замінює необхідність повертатися до терміналу для швидких перевірок.
Ця дія дотримується правил RBAC. Якщо ви не можете виконати kubectl exec, Headlamp також не дозволить це зробити.
Headlamp може показувати використання CPU та памʼяті для подів і вузлів. Це працює так само, як і в Dashboard.
Декілька речей, які варто знати:
metrics-server у кластері.Це дозволяє легко відповісти на прості запитання:
Події часто є найшвидшим способом зрозуміти причини збоїв.
У Headlamp ви можете:
Це часто перше місце, куди варто звернутися, коли робоче навантаження застрягає або аварійно завершується.
Що залишається без змін:
Що покращується:
Після того як Headlamp працює і ваша команда звикла до нього, ви можете видалити Kubernetes Dashboard. Це останній крок очищення.
Видалення Dashboard зменшує безлад і запобігає збереженню невикористовуваних шляхів доступу.
Перед видаленням будь-чого переконайтеся, що:
Після того як ці перевірки пройдено, ви готові видалити Dashboard.
Якщо ви встановили Kubernetes Dashboard за допомогою Helm, видаліть його за допомогою:
helm uninstall kubernetes-dashboard -n kubernetes-dashboard
Якщо Dashboard був встановлений за допомогою манифесту або надбудови, видаліть його, використовуючи той самий метод, який ви використовували для його встановлення.
Після видалення переконайтеся, що ресурси зникли:
kubectl get pods -n kubernetes-dashboard
Багато налаштувань Dashboard використовували виділені службові облікові записи та ролі на рівні кластера.
Перегляньте та видаліть усе, що було створено лише для доступу до Dashboard, наприклад:
Це зменшує кількість довготривалих облікових даних та невикористовуваних дозволів.
Переконайтеся, що ваша команда знає:
Цей фінальний контрольний список допоможе вам переконатися, що міграція завершена. Він дає впевненість, що Headlamp працює належним чином і що нічого важливого не залишилося поза увагою.
Ось ви завершили перехід з Kubernetes Dashboard на Headlamp. Ваша команда може використовувати ту ж модель доступу до Kubernetes, працювати з різними кластерами та покладатися на робочі процеси, які відповідають сучасному використанню Kubernetes. Відтепер Headlamp стає вашим стандартним інтерфейсом, як на робочому столі, так і в спільних середовищах. Зі зростанням ваших потреб ви можете продовжувати використовувати його в поточному вигляді або розширювати за допомогою втулків та нових компонентів.
Якщо ви хочете допомогти формувати майбутнє Headlamp, приєднуйтесь до спільноти Headlamp і робіть внесок на headlamp.dev.
Це дзеркало оригінальної статті.