Прим. перев.: Оригинал этого текста написал Rob Scott — ведущий SRE-инженер компании ReactiveOps, которая и стоит за разработкой анонсируемого проекта. Нам очень близка идея централизованной валидации того, что деплоится в Kubernetes, поэтому мы с интересом следим за подобными инициативами.
Рад представить Polaris — проект с открытым исходным кодом, который помогает поддерживать «здоровье» кластера Kubernetes. Мы создали Polaris для автоматизации некоторых из лучших практик, используемых в ReactiveOps для поддержания безопасной и надежной работы кластеров у большого числа клиентов. Пришло время открыть исходный код.
Раз за разом мы становились свидетелями того, как, казалось бы, незначительные огрехи в конфигурации приводили к серьезным проблемам, что мешали инженерам спать по ночам. Что-то совсем простое — например, упущенная по забывчивости конфигурация запросов на ресурсы (resource requests) — могло поломать автомасштабирование и даже привести к тому, что рабочие нагрузки оставались без ресурсов. Если раньше незначительные оплошности в конфигурации приводили к перебоям в работе production, то теперь Polaris позволяет их полностью предотвратить.
Polaris помогает избежать проблем с конфигурацией, которые влияют на стабильность, надежность, масштабируемость и безопасность ваших приложений. Он позволяет легко выявлять недостатки в конфигурации deployment'ов и предотвращать будущие проблемы. С Polaris можно крепко спать, зная, что приложения развернуты с помощью набора хорошо проверенных стандартов.
Polaris состоит из двух ключевых компонентов:
- панели мониторинга, предоставляющей информацию о том, насколько правильно сконфигурированы существующие в кластере deployment'ы;
- экспериментального проверочного webhook’а, предотвращающего от выкатывания deployment’ов, что не удовлетворяют принятому стандарту.
Polaris Dashboard
Панель в Polaris была создана для простой и наглядной возможности увидеть текущее состояние deployment'ов в Kubernetes и получить рекомендации по улучшениям. Она обеспечивает полный обзор кластера, а также разбивает результаты по категориям, пространствам имен и deployment'ам.
Стандарты, установленные в Polaris по умолчанию, достаточно высоки, так что не удивляйтесь, если оценка окажется ниже, чем вы ожидали. Основная цель Polaris — устанавливать высокие стандарты и стремиться к отличной конфигурации по умолчанию. Если предлагаемая конфигурация покажется слишком жесткой, ее можно исправить в процессе конфигурирования deployment'а, оптимизировав под конкретные рабочие нагрузки.
В рамках публикации Polaris мы решили не только представить сам инструмент, но и подробно описать тесты, которые в него включены. Каждая проверка включает ссылку на соответствующую документацию, где объясняется, почему мы считаем это важным, и приводятся ссылки на дополнительные ресурсы по данной теме.
Polaris Webhook
Если панель мониторинга помогает получить обзор текущей конфигурации deployment'ов, то веб-хук обеспечивает соблюдение стандартов для всех deployment’ов, что только будут выкатываться в кластер.
После того, как проблемы, выявленные панелью мониторинга, исправлены, можно воспользоваться веб-хуком, чтобы конфигурация больше никогда не опускалась ниже установленного стандарта. Веб-хук не позволит разворачивать в кластере deployment’ы, конфигурация которых содержит существенные отклонения (уровня «error»).
Потенциал этого веб-хука воодушевляет, однако для того, чтобы признать его готовым к production, еще потребуется тщательное тестирование. На данный момент это экспериментальная возможность и часть совершенно нового Open Source-проекта. Поскольку он может помешать обновлению deployment'ов, используйте его с осторожностью.
Начало работы
Надеюсь, что, раз вы все еще читаете этот анонс, Polaris — инструмент, который может оказаться полезным для вас. Хотите попробовать Dashboard самостоятельно? Развернуть панель в кластере очень легко. Она устанавливается с минимальными правами (read only), и все данные остаются внутри. Чтобы развернуть Dashboard с помощью kubectl, выполните:
kubectl apply -f https://raw.githubusercontent.com/reactiveops/polaris/master/deploy/dashboard.yaml
Теперь нужно настроить переадресацию портов, чтобы заходить на Dashboard через локальный порт 8080:
kubectl port-forward --namespace polaris svc/polaris-dashboard 8080:80
Конечно, есть много других способов использования и развертывания Polaris, в том числе и с помощью Helm. Об этом и многом другом можно узнать из репозитория Polaris на GitHub.
Это только начало
Мы рады тому, что уже удалось встроить в Polaris, но на этом история не заканчивается. На подходе множество новых тестов, которые хотелось бы добавить, чтобы расширить функциональность. Также мы ищем лучший способ реализации в правилах проверки исключений на уровне пространств имен или ресурсов. Если хотите получить дополнительную информацию о наших планах, ознакомьтесь с дорожной картой.
Если у вас сложилось впечатление, что Polaris может быть полезен — пожалуйста, найдите время, чтобы пробовать его. Мы с радостью примем любые идеи, отзывы, вопросы или pull request'ы. Связаться с нами можно на сайте проекта, в GitHub или в Twitter.
P.S. от переводчика
Читайте также в нашем блоге:
- «Расширяем и дополняем Kubernetes (обзор и видео доклада)»;
- «6 занимательных системных багов при эксплуатации Kubernetes [и их решение]»;
- «9 лучших практик по обеспечению безопасности в Kubernetes»;
- «Представляем библиотеку kubedog для слежения за ресурсами Kubernetes».
Автор: Smetankk