Log-аннотации: управление выводом при деплое
Что нужно знать перед уроком
- M7.04 — Tracking-аннотации — нужно понимание Apply-стадии, на которой работают и tracking, и log-аннотации
Что нужно знать перед уроком
M7 урок 4 — Apply-стадия и tracking-аннотации. Этот короткий, но практически важный урок разбирает все аннотации, управляющие тем, какие логи попадают в вывод команды деплоя.
Теория
Полный список log-аннотаций
| Аннотация | Назначение |
|---|---|
werf.io/skip-logs | Полностью подавляет вывод логов всех подов ресурса |
werf.io/skip-logs-for-containers | Подавляет логи только для перечисленных контейнеров (через запятую) |
werf.io/show-logs-only-for-containers | Показывает логи только для перечисленных контейнеров, подавляя остальные |
werf.io/show-logs-only-for-number-of-replicas | Ограничивает вывод логов первыми N репликами (полезно при большом числе одинаковых подов) |
werf.io/log-regex | Показывает только строки, соответствующие regex |
werf.io/log-regex-skip | Подавляет строки, соответствующие regex |
werf.io/log-regex-for-<container> / werf.io/log-regex-skip-for-<container> | Те же regex-фильтры, но применённые к конкретному контейнеру |
Почему это важно для production CI/CD, а не только для удобства
При деплое ресурсов с большим числом реплик (например, Deployment с replicas: 20) вывод логов деплоя в GitLab CI может стать абсолютно нечитаемым и превысить лимиты объёма вывода джоба. show-logs-only-for-number-of-replicas: "3" решает это, показывая логи только от небольшой репрезентативной выборки подов, при этом Nelm по-прежнему отслеживает готовность всех реплик — ограничение касается только объёма выводимой информации, а не логики отслеживания готовности.
log-regex-skip особенно полезен для подавления «шумных» health-check-строк (например, регулярных GET /healthz 200 OK), которые засоряют вывод и мешают увидеть реальные ошибки при диагностике неудачного деплоя.
Пример комбинированного использования
| |
Здесь одновременно ограничивается число реплик, чьи логи показываются, подавляются шумные health-check-строки и полностью скрываются логи sidecar-контейнера service mesh, не относящиеся к диагностике приложения.
Частые ошибки и подводные камни
- Использовать
skip-logsвместо более точечных фильтров при отладке. Полное подавление логов лишает возможности диагностировать проблему при неудачном деплое — обычно лучше использоватьlog-regex-skipдля конкретного шума, а не выключать логи целиком. - Забывать, что
show-logs-only-for-number-of-replicasне влияет на отслеживание готовности. Это чисто визуальное ограничение вывода — Nelm по-прежнему дожидается готовности всех реплик независимо от того, сколько из них показывают логи. - Путать
log-regex(показывать только совпадения) иlog-regex-skip(скрывать совпадения). Это противоположные по смыслу фильтры, легко перепутать при быстром написании аннотаций.
Практика в кластере
| |
Сравните объём и читаемость вывода деплоя до и после добавления log-regex-skip.
Практика разработки
Добавьте в пакет Umami аннотацию werf.io/show-logs-only-for-number-of-replicas, если в вашей конфигурации replicas больше 1, чтобы подготовить пакет к масштабированию без деградации читаемости CI-логов.
Шпаргалка команд урока
Полная таблица log-аннотаций — 📋 nelm .
Вопросы для самопроверки
Ограничение касается только объёма выводимой информации в CI, а не логики отслеживания готовности.
Источник: Deckhouse — Nelm-аннотации
Противоположные по смыслу фильтры — важно не перепутать при написании аннотаций.
Источник: Deckhouse — Nelm-аннотации
Точечная фильтрация предпочтительнее полного подавления при отладке.
Источник: Рекомендуемая литература
Существует per-container вариант для более точечного контроля.
Источник: Deckhouse — Nelm-аннотации
Рекомендуемая литература
Официальная документация
Статьи и блоги
- Вышла werf 2.0: новый движок развёртывания Nelm — Flant на Habr.
- Представляем werf 1.0 stable: GitOps и Helm — Flant на Habr.
- GitLab + K8s + Werf — Habr.
Книги
- Matt Butcher, Matt Farina, Josh Dolitsky. Learning Helm. 2019. ISBN 978-1492036781.
Связанные материалы
- Предыдущий урок: M7.04 — Tracking-аннотации.
- Следующий урок: M7.06 — Sensitive-данные в манифестах.
✓ Урок пройден — все вопросы самопроверки отвечены верно