Представлений Polaris для підтримки кластерів Kubernetes у здоровому стані

Прим. перев.: Оригінал цього тексту написав Rob Scott - провідний SRE-інженер компанії ReactiveOps, яка і стоїть за розробкою анонсованого проекту. Нам дуже близька ідея централізованої валідації того, що деплоїться в Kubernetes, тому ми з цікавістю стежимо за подібними ініціативами.

Представлений Polaris для підтримки кластерів Kubernetes у здоровому стані

Радий уявити Полярна зірка — проект із відкритим вихідним кодом, який допомагає підтримувати здоров'я кластера Kubernetes. Ми створили Polaris для автоматизації деяких з кращих практик, які використовуються в ReactiveOps для підтримки безпечної та надійної роботи кластерів у багатьох клієнтів. Настав час відкрити вихідний код.

Щоразу ми ставали свідками того, як, здавалося б, незначні огріхи в конфігурації призводили до серйозних проблем, що заважали інженерам спати ночами. Щось дуже просте — наприклад, втрачена по забудьку конфігурація запитів на ресурси (resource requests) — могло зламати автомасштабування і навіть призвести до того, що робочі навантаження залишалися без ресурсів. Якщо раніше незначні помилки в конфігурації призводили до перебоїв у роботі production, тепер Polaris дозволяє їх повністю запобігти.

Polaris допомагає уникнути проблем із конфігурацією, які впливають на стабільність, надійність, масштабованість та безпеку ваших додатків. Він дозволяє легко виявляти недоліки в конфігурації deployment'ів та запобігати майбутнім проблемам. З Polaris можна міцно спати, знаючи, що програми розгорнуті за допомогою набору добре перевірених стандартів.

Polaris складається із двох ключових компонентів:

  1. панелі моніторингу, що надає інформацію про те, наскільки правильно налаштовані існуючі в кластері deployment'и;
  2. експериментального перевірочного webhook'а, що запобігає викочування deployment'ів, що не задовольняють прийнятому стандарту.

Polaris Dashboard

Панель у Polaris була створена для простої та наочної можливості побачити поточний стан deployment'ів у Kubernetes та отримати рекомендації щодо покращення. Вона забезпечує повний огляд кластера, а також розбиває результати за категоріями, просторами імен та deployment'ам.

Представлений Polaris для підтримки кластерів Kubernetes у здоровому стані

Стандарти, встановлені в 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.

PS від перекладача

Читайте також у нашому блозі:

Джерело: habr.com

Додати коментар або відгук