У цій статті ми розглянемо корисні інструменти, які можна інтегрувати з Kubernetes для розширення його можливостей.
В рамках екосистеми DevOps, важливість надійних інструментів DevOps для автоматизації рутинних задач є очевидною. Існує безліч інструментів, доступних для кожного етапу DevOps і різних функцій.
Kubernetes є ключовим елементом для тих, хто працює в області DevOps і розгортає свої додатки в контейнерах. Існує велика кількість інструментів, розроблених для взаємодії з Kubernetes, щоб розширити його функціональність. Сюди входять інструменти для покращення управління, забезпечення безпеки, моніторингу кластера та візуалізації даних.
Нижче представлений перелік чудових інструментів, які здатні значно підсилити можливості вашого Kubernetes.
Розпочнімо!
Helm
Helm – це менеджер пакетів для Kubernetes, що спрощує використання програм та служб, які часто повторюються або застосовуються в різноманітних сценаріях. Він значно полегшує їх розгортання у типовому кластері Kubernetes. Завдяки Helm ви можете знаходити, поширювати та використовувати програмне забезпечення, розроблене спеціально для Kubernetes.
Він використовує діаграми, відомі як Helm Charts, для визначення, встановлення та оновлення складних програм Kubernetes.
Основні переваги Helm:
- Спрощує складність програм Kubernetes за допомогою діаграм.
- Забезпечує легке оновлення за допомогою хуків та спеціальних оновлень.
- Спрощує поширення діаграм через публічні або приватні сервери.
- Забезпечує швидкий відкат змін за допомогою однієї команди.
- Покращує продуктивність розробників і прискорює вихід продукту на ринок.
Flagger
Flagger є прогресивним оператором доставки для Kubernetes.
Він автоматизує процес просування Canary-розгортань, використовуючи Istio, App Mesh, Nginx, Linkerd, Contour, Gloo, маршрутизацію Skipper для перерозподілу трафіку та Prometheus для аналізу Canary. У Canary-розгортанні ви спочатку розгортаєте нову версію для невеликої групи користувачів, тестуєте її, і, якщо все працює належним чином, розгортаєте її для всіх користувачів.
Flagger використовує сервісну сітку у вашому кластері для керування трафіком між різними розгортаннями. Для перенаправлення трафіку на Canary, він аналізує такі показники продуктивності, як середня тривалість запитів, відсоток успішних HTTP-запитів, стан контейнерів тощо.
Flagger дозволяє запускати автоматизований аналіз додатків, просування та відкат для різних стратегій розгортання, таких як Canary, A/B-тестування, Blue/Green-розгортання.
Kubewatch
Kubewatch – це інструмент моніторингу Kubernetes з відкритим кодом, який надсилає сповіщення через Slack.
Він написаний на мові Go і розроблений Bitnami Labs. Він використовується для моніторингу ресурсів Kubernetes і сповіщає про будь-які зміни.
Kubewatch можна встановити за допомогою kubectl або Helm. Він простий у використанні та має інтуїтивно зрозумілий інтерфейс. Крім Slack, він також підтримує HipChat, Mattermost, Flock, веб-хуки та SMTP.
Ви можете налаштувати, які ресурси Kubernetes потрібно моніторити, встановивши значення true або false для відповідних ресурсів у файлі ConfigMap. Після налаштування kubewatch та запуску модуля, ви почнете отримувати сповіщення про події Kubernetes, як показано нижче.
Gitkube
Gitkube це інструмент, який використовує git push для створення та розгортання docker-образів у Kubernetes. Він складається з трьох компонентів: Remote, gitkube-controller, та gitkubed. Remote містить спеціальні ресурси, якими керує gitkube-controller. gitkube-controller передає зміни в gitkubed, який створює docker-образ та розгортає його.
Основні переваги Gitkube:
- Проста установка, налаштування та використання.
- Забезпечує контроль доступу на основі ролей для підвищення безпеки.
- Спрощує аутентифікацію за допомогою відкритого ключа.
- Підтримує простори імен для забезпечення багатоклієнтності.
- Не потребує додаткових залежностей, окрім kubectl та git.
kube-state-metrics
kube-state-metrics – це сервіс, який генерує метрики стану об’єктів, відстежуючи Kubernetes API-сервер. Він використовується для перевірки працездатності різних об’єктів, таких як вузли, поди, простори імен та розгортання. Він надає необроблені дані з Kubernetes API.
kube-state-metrics надає наступну інформацію:
- Статус CronJob та Job.
- Статус подів (готовий, запущений тощо).
- Запити на ресурси та їх межі.
- Місткість вузла та його статус.
- Специфікація ReplicaSets.
Kamus
Kamus – це інструмент GitOps з відкритим кодом, який використовується для шифрування та дешифрування секретів програм Kubernetes. Зашифровані Kamus секрети можуть бути розшифровані лише програмами, що працюють у кластері Kubernetes. Він використовує AES, Google Cloud KMS, Azure KeyVault для шифрування секретів. Ви можете почати роботу з Kamus за допомогою Helm-діаграми.
Kamus має дві утиліти: Kamus CLI та Kamus init container. Kamus CLI використовується для інтеграції з API шифрування, а Kamus init container використовується для інтеграції з API дешифрування.
Стандартні секрети Kubernetes не шифруються, а закодовані base64. Зберігати їх в Git у такому вигляді небезпечно, оскільки кожен, хто має доступ до репозиторію, зможе їх використовувати. Тому потрібне рішення для шифрування/дешифрування, як Kamus. Він також надає модель загроз, яка враховує можливі небезпеки та захищає секрети.
Untrak
Untrak – це інструмент з відкритим кодом, який використовується в Kubernetes для пошуку не відстежуваних ресурсів та збирання сміття. Він допомагає виявляти та видаляти файли з кластера, які не відстежуються.
Після додавання маніфестів до конвеєра CI/CD за допомогою kubectl apply або Helm, Kubernetes не знає, коли об’єкт був видалений з репозиторію. Після видалення об’єкти перестають відстежуватися в процесі доставки і залишаються в кластері Kubernetes.
Untrak виконує команду, використовуючи простий конфігураційний файл untrak.yaml, щоб знайти ресурси, які більше не є частиною вашої системи контролю версій.
Weave Scope
Weave Scope призначений для візуалізації, моніторингу та усунення несправностей Docker і Kubernetes.
Він відображає вашу контейнерну програму та повну інфраструктуру, що дозволяє легко виявляти проблеми та діагностувати їх.
Запуск мікросервісних програм у докер-контейнерах може бути складним. Компоненти тут дуже динамічні, і їх важко відстежувати. З Weave Scope можна легко виявляти витоки пам’яті, контролювати використання ЦП та візуалізувати вузькі місця мережі.
Основні переваги Weave Scope:
- Допомагає контролювати докер-контейнери в реальному часі.
- Забезпечує легку навігацію між процесами, що виконуються в контейнерах.
- Показує використання ЦП та пам’яті хостом або службою.
- Дозволяє перезапускати, зупиняти або призупиняти контейнери за допомогою CLI прямо з вікна браузера.
- Підтримує додаткові плагіни для отримання додаткової інформації про контейнери, процеси та хости.
Kubernetes Dashboard
Kubernetes Dashboard – це веб-інтерфейс, наданий Kubernetes. Він використовується для розгортання, усунення несправностей та управління контейнерними програмами в кластері Kubernetes. Він надає детальну інформацію про кластер, наприклад, про вузли, простори імен, ролі, навантаження тощо.
Ви можете використовувати Helm-діаграми для розгортання Kubernetes Dashboard або скористатися простою командою kubectl, як показано нижче:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
Kops
Kops, що розшифровується як Kubernetes operations, є проектом з відкритим кодом, який спрощує швидке налаштування кластерів Kubernetes, готових до використання у виробничому середовищі. Kops можна використовувати для розгортання кластерів Kubernetes в основному на AWS та GCE.
Створення та підтримка невеликих кластерів Kubernetes відносно проста, але коли ви масштабуєте кластер, додається безліч налаштувань, і управління ними стає складним. Kops допомагає вирішити ці проблеми. Він використовує підхід, керований конфігурацією, що гарантує постійне оновлення та безпеку кластера.
Kops також має багато мережевих серверних модулів, і вибір одного з них, залежно від вашого сценарію використання, спрощує налаштування різних типів кластерів.
cAdvisor
cAdvisor – це інструмент з відкритим кодом для моніторингу контейнерів. Він використовується для аналізу продуктивності та використання ресурсів контейнерами, що працюють у кластері.
Він працює на рівні вузла та може автоматично виявляти всі контейнери, що працюють на певному вузлі, і збирає статистику пам’яті, файлової системи, процесора та мережі. Він надає веб-інтерфейс для перегляду поточної інформації про всі контейнери в кластері.
Щоб почати роботу з cAdvisor, потрібно запустити його docker-образ google/cadvisor, а потім отримати доступ до нього за адресою http://localhost:8080 у веб-браузері.
Kubespray
Kubespray – це безкоштовний інструмент, створений на основі Ansible playbook та Kubernetes. Він використовується для управління життєвим циклом кластера Kubernetes.
Використовуючи Kubespray, ви можете швидко розгорнути кластер та налаштувати всі параметри реалізації кластера, такі як режими розгортання, мережеві плагіни, конфігурацію DNS, версії компонентів, методи генерації сертифікатів тощо.
Запустивши один простий ansible-playbook, ваш кластер готовий до роботи. Ви можете легко масштабувати або оновлювати кластер Kubernetes.
K9s
K9s – це термінальний інструмент з відкритим кодом, а його утиліта з інформаційною панеллю здатна робити все, що й веб-інтерфейс Kubernetes. Він використовується для навігації, спостереження та управління додатками, розгорнутими в кластері Kubernetes.
Основні переваги K9s:
- Відстежуйте кластер в реальному часі.
- Налаштуйте відображення для кожного ресурсу.
- Збільшуйте масштаб до проблем ресурсів кластера.
- Підтримує контроль доступу на основі ролей.
- Вбудовані тести для перевірки продуктивності ресурсів.
Kubetail
Kubetail – це простий bash-скрипт, який використовується для агрегування журналів з декількох подів в один потік.
Це дуже зручно!
Він допомагає вам з легкістю налагоджувати помилки.
Остання версія Kubetail також має функції підсвічування та фільтрації. Ця функція дозволяє розфарбовувати журнали. Використовуючи homebrew, можна встановити Kubetail за допомогою однієї команди. Ви можете задати значення за замовчуванням у змінних середовища, які може читати Kubetail, наприклад KUBETAIL_NAMESPACE, KUBETAIL_TAIL, KUBETAIL_SKIP_COLORS тощо.
PowerfulSeal
PowerfulSeal – це потужний інструмент з відкритим кодом для створення хаосу, написаний на Python, для кластерів Kubernetes.
Інженерія хаосу використовується для підвищення впевненості в системі, перевіряючи її здатність справлятися з проблемними ситуаціями у виробничому середовищі. Він вводить помилки в кластер Kubernetes, щоб якомога раніше виявити в ньому проблеми.
Інструмент натхненний Netflix Chaos Monkey і використовується для підвищення стійкості Kubernetes. Використовуючи PowerfulSeal, інженери навмисно намагаються зламати щось у кластері, щоб перевірити реакцію системи.
PowerfulSeal працює у трьох режимах: автономному, інтерактивному та з мітками.
В автономному режимі він виконує сценарії, читаючи файли політики, які ви надаєте. В інтерактивному режимі він повідомляє про компоненти кластера, які ви намагаєтеся зламати вручну. В режимі міток ви знищуєте цільові об’єкти в кластері, наприклад, контейнери, використовуючи мітки.
Popeye
Popeye – це утиліта для очищення, яка діє як дезінфікуючий засіб 🧼 для кластерів Kubernetes.
Він сканує весь кластер і повідомляє про проблеми, пов’язані з конфігураціями та ресурсами. Це допомагає вам застосовувати найкращі практики у вашому кластері Kubernetes, щоб уникнути типових проблем.
Ця утиліта доступна для Windows, Linux та macOS. Наразі вона працює лише з вузлами, подами, просторами імен та сервісами. Використовуючи Popeye, ви можете легко ідентифікувати мертві та невикористані ресурси, невідповідності портів, правила RBAC, використання метрик та багато іншого.
Висновок
Інструменти DevOps відіграють важливу роль у досягненні успіху, і я сподіваюся, що представлені вище інструменти допоможуть вам ефективніше управляти Kubernetes.