Представлений Polaris для підтримки кластерів Kubernetes у здоровому стані
Прим. перев.: Оригінал цього тексту написав Rob Scott - провідний SRE-інженер компанії ReactiveOps, яка і стоїть за розробкою анонсованого проекту. Нам дуже близька ідея централізованої валідації того, що деплоїться в Kubernetes, тому ми з цікавістю стежимо за подібними ініціативами.
Радий уявити Полярна зірка — проект із відкритим вихідним кодом, який допомагає підтримувати здоров'я кластера 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, виконайте такі дії:
Звичайно, є багато інших способів використання та розгортання Polaris, у тому числі за допомогою Helm. Про це та багато іншого можна дізнатися з репозиторія Polaris на GitHub.
Це лише початок
Ми раді, що вже вдалося вбудувати в Polaris, але на цьому історія не закінчується. На підході багато нових тестів, які хотілося б додати, щоб розширити функціональність. Також ми шукаємо найкращий спосіб реалізації у правилах перевірки винятків на рівні просторів імен чи ресурсів. Якщо хочете отримати додаткову інформацію про наші плани, ознайомтеся з дорожньою картою.
Якщо у вас склалося враження, що Polaris може бути корисним, будь ласка, знайдіть час, щоб пробувати його. Ми з радістю приймемо будь-які ідеї, відгуки, питання чи pull request'и. Зв'язатися з нами можна на сайті проекту, в
GitHub або у Twitter.