0

Лінтер маніфестів Kubernetes

Перевіряйте Kubernetes YAML-маніфести на відповідність найкращим практикам захисту кластера, повністю офлайн у вашому браузері.

🔒 Обробляється повністю у вашому браузері — те, що ви тут вводите, ніколи не вивантажується.

Обробка... 0%
Парсинг YAML
Обхід маніфесту
Перевірка правил захисту
Готово

Результат

Маніфести Kubernetes зазвичай перевіряють вручну під час pull request, через що до продакшену потрапляють одні й ті самі помилки захисту: Deployment без обмеження пам'яті, який зрештою отримує OOM-kill і тягне за собою вузол, контейнер, що радісно працює від root, бо ніхто не встановив runAsNonRoot, або Pod, прив'язаний до тегу образу `:latest`, який непомітно змінюється під час розгортання. Цей лінтер виявляє такий клас проблем одразу після вставлення маніфесту, не потребуючи робочого кластера, контексту kubectl чи будь-яких облікових даних.

Під капотом він містить невеликий власноруч написаний YAML-парсер, створений саме для реалістичної підмножини YAML, яку фактично використовують маніфести Kubernetes: документи, розділені `---`, вкладеність на основі відступів, `key: value` та вкладені блокові відображення, елементи послідовності `- ` включно зі списками відображень, скалярні значення в лапках і без, коментарі та блокові скаляри `|`/`>` для таких речей, як багаторядкові значення ConfigMap або анотації. Жодної зовнішньої YAML-бібліотеки — парсер і рушій правил постачаються разом з інструментом і працюють повністю у вашому браузері.

Таблиця правил базується на відомих рекомендаціях із захисту кластерів — CIS Kubernetes Benchmark, kube-score та профілі Pod Security Standards «Restricted» — і перевіряє кожен контейнер на відсутність запитів/обмежень ресурсів, можливість запуску від root або в привілейованому режимі, відсутність проб живучості та готовності в довготривалих робочих навантаженнях (Deployment, StatefulSet, DaemonSet), монтування томів hostPath, що відкривають файлову систему хоста, використання hostNetwork, а також невідтворювані теги образів `:latest` або образи без тегів. Знахідки групуються за документом і контейнером, із чіткою серйозністю помилка/попередження для кожної, щоб ви могли розрізнити справжній ризик від простої рекомендації.

Він працює з окремими маніфестами або цілими мультидокументними файлами, вставленими прямо з виводу рендерингу Helm або `kustomize build`, розуміючи ресурси Pod, Deployment, StatefulSet, DaemonSet, Job, ReplicaSet та CronJob. Оскільки все виконується локально, безпечно вставляти маніфести, що містять внутрішні імена сервісів, реальні розміри ресурсів або будь-що інше, що ви не хотіли б надсилати до стороннього API — зручно для швидкої перевірки перед комітом, допомоги під час перевірки коду або просто для розуміння, як на практиці виглядає «захищений» маніфест.