Работая в экосистеме DevOps, скоро понимаешь, насколько важно иметь инструменты DevOps для уменьшения ручной работы. Для каждого этапа DevOps есть несколько наборов инструментов с различными функциональными возможностями.
Kubernetes является одним из обязательных, если вы работаете в домене DevOps и запускаете свои приложения внутри контейнеров. Для большей функциональности Kubernetes можно использовать сотни различных инструментов. Говоря об инструментах имеется ввиду утилиты для упрощения управления, улучшения безопасности, различные панели и средства мониторинга Kubernetes кластеров.
1. Helm
Helm - это менеджер пакетов для Kubernetes, который позволяет легко управлять приложениями и службами, которые используются во многих различных сценариях, облегчая их развертывание в типичном кластере Kubernetes. Используя Helm, вы можете найти, поделиться и использовать программное обеспечение, которое построено для Kubernetes.
Он использует диаграммы, называемые Helm Charts, для определения, установки и обновления сложных приложений Kubernetes.
Функции Helm:
- Отображает состояние всех Kubernetes приложений с помощью диаграмм
- Использует настраиваемые крючки, чтобы легко проводить обновления.
- Диаграммы можно использовать на общедоступных или частных серверах.
- Простой откат к предыдущему состоянию с помощью одной команды
- Повышение производительности разработчиков и эксплуатационной готовности
2. Flagger
Flagger - это оператор прогрессивной доставки для Kubernetes.
Он автоматизирует продвижение канареечного развертывания с помощью Istio, App Mesh, Nginx, Linkerd, Contour, Gloo, Skipper для маршрутизации трафика и Prometheus для анализа канарей. При канареечном развертывании выпуски развертываются для небольшой группы пользователей, тестируются, если работает нормально, то выпуски развертываются для всех.
Он использует сетку служб, которая выполняется в кластере, для управления трафиком между развертыванием. Для переноса трафика в канарейку он измеряет такие показатели производительности, как средняя продолжительность запросов, частота успешных запросов HTTP, работоспособность модуля и т.д.
Flagger может выполнять автоматизированный анализ приложений, продвижение и откат для нескольких стратегий развертывания, таких как Canary, A/B-тестирование, Blue/Green-развертывание.
3. Kubewatch
Kubewatch это наблюдатель с открытым исходным кодом для Kubernetes, который отправляет уведомление через Slack.
Он написан на языке Go и разработан Bitnami Labs. Он используется для мониторинга ресурсов Kubernetes и уведомляет, есть ли какие-либо изменения.
Установить Kubewatch можно через kubectl или с помощью диаграмм helm. В нем легко разобраться и имеет очень простой в использовании интерфейс. Кроме Slack, он также поддерживает HipChat, Mattermost, Flock, webhook и SMTP.
В зависимости от того, какой Kubernetes кластер вы хотите отслеживать, вы можете установить значение true или false для этих ресурсов в файле ConfigMap. После установки конфигурации kubewatch и запуска модуля вы начнете получать уведомления о событии Kubernetes, как показано ниже.
4. Gitkube
Gitkube - это инструмент, который использует git push для создания и развертывания докер образов на Kubernetes. Имеет три компонента - Remote, gitkube-контроллер, gitkubed. Remote состоит из пользовательских ресурсов, управляемых gitkube-контроллером. gitkube-controller отправляет изменения в gitkubed, который затем строит образ докера и развертывает его.
Особенности Gitkube:
- Простота установки, подключения и развертывания
- Обеспечивает управление доступом на основе ролей для обеспечения безопасности
- Проверки подлинности с помощью открытого ключа
- Поддерживается пространство имен для множественной аренды
- Никаких дополнительных зависимостей, кроме kubectl и git
5. kube-state-metrics
kube-state-metrics - сервис, который генерирует метрики объекта состояния, прослушивая сервер API Kubernetes. Он используется для проверки работоспособности различных объектов, таких как узлы, модули, пространства имен и развертывания. Он предоставляет необработанные, немодифицированные данные из API Kubernetes.
Ниже приведена информация, предоставленная kube-state-metrics:
- Задания Cron и статус задания
- Состояние модулей (готовность, выполнение и т.д.)
- Запросы на ресурсы и их диапазон
- Пропускная способность узла и его состояние
- Спецификация наборов реплик
6. 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 - для интеграции с расшифровкой API.
По умолчанию, пароли в Kubernetes закодированы в base64 и не зашифрованы. Поэтому, из соображений безопасности, нельзя держать такие ключи на. Любой, кто имеет доступ к репозиторию, сможет использовать эти секреты. Следовательно, необходимо правильное решение для шифрования/дешифрования, как, например, Kamus. Он также предоставляет модель угроз, которая учитывает угрозы и делает секреты безопасными.
7. Untrak
Untrak - инструмент с открытым исходным кодом, используемый в Kubernetes для поиска неотслеживаемых ресурсов и сбора мусора. Он помогает находить и удалять файлы из кластера, которые не отслеживаются.
После ввода манифестов в конвейер CI/CD с использованием шаблона kubectl apply или helm Kubernetes не знает, когда объект будет удален из репозитория. После удаления объектов они не отслеживаются в процессе доставки и по-прежнему находятся в кластере Kubernetes.
Он выполняет команду внутренне, используя простой конфигурационный файл untrak.yaml, чтобы найти ресурсы, которые больше не являются частью управления исходным кодом.
8. Weave Scope
Weave Scope предназначена для визуализации, мониторинга и устранения неполадок Docker и Kubernetes.
Он отображает всю структуру контейнерного приложения сверху вниз, и полную инфраструктуру, с помощью которой вы можете легко выявить любые проблемы и диагностировать их.
Выполнение приложений микросервисной архитектуры в контейнерах докеров не так просто. Компоненты здесь очень динамичны и трудно поддаются мониторингу. С помощью Weave Scope можно легко устранять утечки памяти и контролировать потребление ЦП, визуализировать узкие места сети.
Функции Weave Scope:
- Помогает отслеживать контейнеры докеров в режиме реального времени
- Простая навигация между процессами, выполняемыми в контейнерах
- Показывает хост или службу использования ЦП и памяти
- Перезапуск, остановка или приостановка контейнеров с помощью интерфейса командной строки, не выходя из окна браузера Weave Scope.
- Поддержка пользовательских подключаемых модулей для получения более подробной информации о контейнерах, процессах и хостах
9. Kubernetes Dashboard
Kubernetes Dashboard - веб-интерфейс, предоставляемый компанией Kubernetes. Он используется для развертывания, устранения неполадок и управления контейнерным приложением в кластере Kubernetes. Он предоставляет всю информацию о кластере, такую как сведения о узлах, пространствах имен, ролях, рабочих нагрузках и т.д.
Можно использовать helm для развертывания панели управления Kubernetes или воспользоваться простой командой kubectl:
kubectl apply - https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
10. Kops
Kops, который расшифровывается как Kubernetes Operations - это проект с открытым исходным кодом, используемый для создания готовых к запуску в производственной среде кластеров Kubernetes. Kops, в первую очередь, можно использовать для развертывания кластеров Kubernetes на AWS и GCE.
Небольшой кластер Kubernetes легко создать и обслуживать, но при масштабировании кластера добавляется множество конфигураций, и становится трудно управлять им. Kops - это инструмент, который помогает решать подобные задачи. Он использует подход, основанный на настройке, при котором кластер всегда находится в актуальном состоянии и в безопасености.
Kops также имеет множество сетевых бэкэндов, и выбор одного из них, в зависимости от варианта использования, упрощает настройку различных типов кластеров.
11. cAdvisor
cAdvisor - это инструмент с открытым исходным кодом для мониторинга контейнера. Он используется для чтения характеристик производительности и использования ресурсов контейнеров, работающих в кластере.
Он работает на уровне узла и может автоматически обнаруживать все контейнеры, работающие на определенном узле, и собирать статистику использования памяти, файловой системы, ЦП и сети. Он предоставляет веб-интерфейс, который отображает динамические данные всех контейнеров в кластере.
Для начала работы с cAdvisor необходимо запустить его docker образ google/cadvisor, а затем получить к нему доступ по адресу http://localhost:8080 в веб-браузере.
12. Kubespray
Kubespray - это бесплатный инструмент, который был создан путём объединения playbooks Ansible и Kubernetes. Используется для управления жизненным циклом кластера Kubernetes.
С помощью Kubespray можно быстро развернуть кластер и настроить все параметры реализации кластера, такие как режимы развертывания, сетевые плагины, конфигурация DNS, версии компонентов, методы создания сертификатов и т.д.
Для начала работы кластера достаточно запустить один единственный ansible-playbook. Вы можете легко масштабировать или обновлять кластер Kubernetes.
13. K9s
K9s - это терминальный инструмент с открытым исходным кодом, и его утилита панели мониторинга может делать все, что делает веб-интерфейс Kubernetes. Он используется для навигации, наблюдения и управления приложением, развернутым в кластере Kubernetes.
K9s функции:
- Отслеживание кластера в реальном времени
- Настройка отображения для каждого ресурса
- Глубокий анализ проблем с ресурсами кластера
- Поддерживает управление доступом на основе ролей
- Встроенные эталонные тесты для проверки производительности ресурсов
14. Kubetail
Kubetail - это простой сценарий bash, который используется для агрегирования журналов из нескольких модулей в одном потоке.
Последняя версия Kubetail также имеет функции выделения и фильтрации. Эта функция позволяет выделять нужные части логов отдельным цветом. Используя homebrew, можно установить Kubetail с помощью одной команды. Чтобы упростить работу Kubetail можно добавить значения, как KUBETAIL_NAMESPACE, KUBETAIL_TAIL, KUBETAIL_SKIP_COLORS и т.д. в переменные среды.
15. PowerfulSeal
PowerfulSeal - мощный инструмент хаос-инжиниринга с открытым исходным кодом, написанный на языке python для кластеров Kubernetes.
Хаос-инжиниринг используется для того, чтобы проверить отказоустойчивость системы, ее способность справляться с проблемными ситуациями в производственной среде. Он вводит в кластер Kubernetes ошибки, чтобы выявить проблемы в нем как можно раньше.
Создателей PowerfulSeal вдохновил Netflix Chaos Monkey и она используется для повышения устойчивости Kubernete. Используя Seal, инженеры сознательно пытаются нарушить работу кластера, чтобы проверить, как система реагирует.
Seal работает в трех режимах - автономный, интерактивный, и режим меток.
В автономном режиме он выполняет сценарии, считывая предоставленный файл политики. В интерактивном режиме он рассказывает о компонентах кластера, которые вручную пытаются разорвать. В режиме меток целевые объекты в кластере, такие как модули, уничтожаются с помощью меток.
16. Popeye
Popeye - это утилита для очистки кластеров Kubernetes.
Он сканирует весь кластер и сообщает о проблемах, связанных с конфигурациями и ресурсами. Это помогает применять лучшие практики в кластере Kubernetes, чтобы избежать распространенных проблем.
Эта утилита доступна для Windows, Linux и macOS. В настоящее время он работает только с узлами, модулями, пространствами имен, службами. С помощью Popeye можно легко идентифицировать мертвые и неиспользуемые ресурсы, несоответствия портов, правила RBAC, использование метрик и многое другое.