Стадия жизненного цикла модуля: General Availability

У модуля есть требования для установки

v1.1.0

Изменения

  • Сбором логов теперь управляет отдельный контроллер. Раньше конфигурацию агента сбора логов генерировали хуки модуля; теперь её собирает Deployment log-shipper-controller, который работает в неймспейсе модуля на системных узлах. Контроллер следит за ресурсами ClusterLogDestination, ClusterLoggingConfig и PodLoggingConfig, обновляет конфигурацию агента при каждом изменении и запускает или останавливает DaemonSet агента в зависимости от того, есть ли что отправлять. Существующие ресурсы и настройки модуля продолжают работать без изменений. Контроллер отдаёт собственные метрики, которые собирает Prometheus платформы.

Улучшения

  • Логи, собранные с подов Kubernetes, теперь содержат лейбл host_ip с IP-адресом узла, на котором работает под. Раньше лейбл устанавливался только для логов, читаемых из файлов.

Безопасность

  • Исправлены различные уязвимости.

v1.0.7

Новые возможности

  • Порядок чтения и размер порции чтения файлов логов. У источников kubernetesPods и file в ClusterLoggingConfig и в PodLoggingConfig появились два новых параметра. maxReadBytes ограничивает, сколько байт агент читает из одного файла за проход, прежде чем перейти к следующему, — так чтение распределяется равномернее между множеством активно растущих файлов. oldestFirst заставляет агент дочитывать старые файлы, прежде чем браться за новые. Если параметры не заданы, агент работает как раньше: логи подов читаются от старых к новым, файлы — равномерно, порция чтения — 2048 байт. Кроме того, агент больше не добавляет к каждой записи лога пода идентификатор контейнера, идентификатор образа, список IP-адресов пода, аннотации пода, UID пода и лейблы неймспейса. Эти поля удалялись перед отправкой, поэтому отправляемые логи не меняются.

Исправления

  • Исправлено время события для хранилищ Loki, Splunk, Vector и Socket с кодеком GELF. Агент преобразовывал метку времени каждой записи в строку в локальном часовом поясе узла, а эти хранилища берут время события только из типизированной метки времени, поэтому сохраняли время отправки записи вместо времени её появления. Теперь метка времени доходит до них без изменений, и поле timestamp в записи содержит время в UTC, а не в локальном часовом поясе узла; для Splunk строка в локальном часовом поясе сохраняется в поле datetime. Elasticsearch, Logstash, Kafka и Socket с другими кодеками по-прежнему получают метку времени строкой в локальном часовом поясе узла. Преобразование теперь выполняется непосредственно перед трансформациями хранилища, а метка времени, уже заменённая трансформацией, остаётся как есть.

v1.0.6

Новые возможности

  • Удаление записей лога для отдельного хранилища. Новая трансформация DropEvent в ClusterLogDestination удаляет запись лога, если истинны все условия из when. Условия записываются так же, как в AddLabels, а трансформация выполняется на своей позиции в списке, поэтому может опираться на лейблы, добавленные предыдущими трансформациями. В отличие от logFilter и labelFilter в ClusterLoggingConfig, которые фильтруют на источнике для всех хранилищ, DropEvent действует только для того хранилища, где задана.

Изменения

  • Логи, собираемые с подов Kubernetes, теперь содержат лейбл host_ip с IP-адресом узла, на котором работает под. У логов, собираемых из файлов, он уже был.

v1.0.5

Улучшения

  • В документации с примерами теперь описано, как обрабатываются несколько трансформаций ParseMessage: они применяются к каждой записи по порядку сверху вниз, и после первого успешного разбора остальные не применяются. Поэтому трансформации для конкретных форматов, например JSON, следует указывать первыми, а универсальную трансформацию строки — последней.

v1.0.4

Исправления

  • Исправлена трансформация ReplaceValue с литеральной строкой замены (без именованных групп в target). Агент сбора логов отклонял сгенерированную конфигурацию, поэтому трансформация не работала.

v1.0.3

Изменения

  • Системные метрики агента сбора логов теперь содержат лейбл d8_source="dkp". Он позволяет отличать метрики платформы от метрик, которые отдают пользовательские приложения.
  • Неймспейс модуля теперь проверяется по профилю Pod Security Standards restricted. Нарушения выводятся только как предупреждения и не блокируют запуск нагрузки. Отклонения, которые нужны агенту, — запуск от root и монтирование путей узла для чтения логов контейнеров и узла и для хранения позиции чтения — описаны и обоснованы в ресурсе SecurityPolicyException, который поставляется вместе с модулем, поэтому сбор логов продолжает работать без каких-либо действий.
  • Права агента ограничены настолько, насколько это позволяет сбор логов: применён seccomp-профиль RuntimeDefault, сброшены все Linux capabilities, запрещено повышение привилегий, корневая файловая система контейнеров доступна только для чтения.
  • Удалён параметр конфигурации модуля registry.dockercfg. Образы модуля всегда загружаются с учётными данными хранилища образов платформы, поэтому, если параметр указан в настройках модуля, удалите его перед обновлением.

Безопасность

  • Исправлены различные уязвимости.

v1.0.2

Исправления

  • Исправлены ссылки между страницами документации и в описаниях custom resource, которые перестали работать после переноса модуля в отдельный репозиторий.

v1.0.1

Изменения

  • Образы модуля теперь собираются на основе образов container-base с использованием пакетного менеджера pm.

Безопасность

  • Исправлены различные уязвимости. Вместе с модулем теперь поставляется VEX-документ, в котором перечислены уязвимости зависимостей, не затрагивающие модуль, и причина для каждой из них.

v1.0.0

Изменения

  • Переработано управление ресурсами в режиме Static: запросы CPU и памяти теперь задаются в секции resourcesRequests.static.requests, а ограничения CPU и памяти для агента — в секции resourcesRequests.static.limits. Существующие настройки модуля конвертируются автоматически, никаких действий не требуется.

Исправления

  • Исправлена ошибка, из-за которой запросы CPU и памяти, заданные для режима управления ресурсами Static, не доходили до контейнера агента сбора логов.