Работая в экосистеме DevOps, скоро понимаешь, насколько важно иметь инструменты DevOps для уменьшения ручной работы. Для каждого этапа DevOps есть несколько наборов инструментов с различными функциональными возможностями.
![Утилиты для прокачки Kubernetes Утилиты для прокачки Kubernetes](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/1.png)
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 для анализа канарей. При канареечном развертывании выпуски развертываются для небольшой группы пользователей, тестируются, если работает нормально, то выпуски развертываются для всех.
![Flagger Flagger](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/2.png)
Он использует сетку служб, которая выполняется в кластере, для управления трафиком между развертыванием. Для переноса трафика в канарейку он измеряет такие показатели производительности, как средняя продолжительность запросов, частота успешных запросов 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, как показано ниже.
![Kubewatch Kubewatch](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/3.png)
4. Gitkube
Gitkube - это инструмент, который использует git push для создания и развертывания докер образов на Kubernetes. Имеет три компонента - Remote, gitkube-контроллер, gitkubed. Remote состоит из пользовательских ресурсов, управляемых gitkube-контроллером. gitkube-controller отправляет изменения в gitkubed, который затем строит образ докера и развертывает его.
![Gitkube Gitkube](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/4.png)
Особенности 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, чтобы найти ресурсы, которые больше не являются частью управления исходным кодом.
![Untrak Untrak](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/5.png)
8. Weave Scope
Weave Scope предназначена для визуализации, мониторинга и устранения неполадок Docker и Kubernetes.
Он отображает всю структуру контейнерного приложения сверху вниз, и полную инфраструктуру, с помощью которой вы можете легко выявить любые проблемы и диагностировать их.
Выполнение приложений микросервисной архитектуры в контейнерах докеров не так просто. Компоненты здесь очень динамичны и трудно поддаются мониторингу. С помощью Weave Scope можно легко устранять утечки памяти и контролировать потребление ЦП, визуализировать узкие места сети.
![Weave Scope Weave Scope](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/6.png)
Функции Weave Scope:
- Помогает отслеживать контейнеры докеров в режиме реального времени
- Простая навигация между процессами, выполняемыми в контейнерах
- Показывает хост или службу использования ЦП и памяти
- Перезапуск, остановка или приостановка контейнеров с помощью интерфейса командной строки, не выходя из окна браузера Weave Scope.
- Поддержка пользовательских подключаемых модулей для получения более подробной информации о контейнерах, процессах и хостах
9. Kubernetes Dashboard
Kubernetes Dashboard - веб-интерфейс, предоставляемый компанией Kubernetes. Он используется для развертывания, устранения неполадок и управления контейнерным приложением в кластере Kubernetes. Он предоставляет всю информацию о кластере, такую как сведения о узлах, пространствах имен, ролях, рабочих нагрузках и т.д.
![Kubernetes Dashboard Kubernetes Dashboard](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/7.png)
Можно использовать 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 также имеет множество сетевых бэкэндов, и выбор одного из них, в зависимости от варианта использования, упрощает настройку различных типов кластеров.
![Kops Kops](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/8.png)
11. cAdvisor
cAdvisor - это инструмент с открытым исходным кодом для мониторинга контейнера. Он используется для чтения характеристик производительности и использования ресурсов контейнеров, работающих в кластере.
Он работает на уровне узла и может автоматически обнаруживать все контейнеры, работающие на определенном узле, и собирать статистику использования памяти, файловой системы, ЦП и сети. Он предоставляет веб-интерфейс, который отображает динамические данные всех контейнеров в кластере.
Для начала работы с cAdvisor необходимо запустить его docker образ google/cadvisor
, а затем получить к нему доступ по адресу http://localhost:8080
в веб-браузере.
![cAdvisor cAdvisor](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/9.png)
12. Kubespray
Kubespray - это бесплатный инструмент, который был создан путём объединения playbooks Ansible и Kubernetes. Используется для управления жизненным циклом кластера Kubernetes.
С помощью Kubespray можно быстро развернуть кластер и настроить все параметры реализации кластера, такие как режимы развертывания, сетевые плагины, конфигурация DNS, версии компонентов, методы создания сертификатов и т.д.
Для начала работы кластера достаточно запустить один единственный ansible-playbook. Вы можете легко масштабировать или обновлять кластер Kubernetes.
13. K9s
K9s - это терминальный инструмент с открытым исходным кодом, и его утилита панели мониторинга может делать все, что делает веб-интерфейс Kubernetes. Он используется для навигации, наблюдения и управления приложением, развернутым в кластере Kubernetes.
![Kubespray Kubespray](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/10.png)
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 работает в трех режимах - автономный, интерактивный, и режим меток.
В автономном режиме он выполняет сценарии, считывая предоставленный файл политики. В интерактивном режиме он рассказывает о компонентах кластера, которые вручную пытаются разорвать. В режиме меток целевые объекты в кластере, такие как модули, уничтожаются с помощью меток.
![Kubetail Kubetail](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/11.png)
16. Popeye
Popeye - это утилита для очистки кластеров Kubernetes.
![Popeye Popeye](http://wiki.merionet.ru/images/utility-dlya-prokachki-kubernetes/12.png)
Он сканирует весь кластер и сообщает о проблемах, связанных с конфигурациями и ресурсами. Это помогает применять лучшие практики в кластере Kubernetes, чтобы избежать распространенных проблем.
Эта утилита доступна для Windows, Linux и macOS. В настоящее время он работает только с узлами, модулями, пространствами имен, службами. С помощью Popeye можно легко идентифицировать мертвые и неиспользуемые ресурсы, несоответствия портов, правила RBAC, использование метрик и многое другое.