Режимы развертывания
Пользовательский ресурс OpenTelemetryCollector поддерживает несколько режимов развертывания, что позволяет выбрать наиболее подходящую стратегию в зависимости от ваших требований к сбору телеметрии.
Deployment
Это стандартный режим развертывания и служит вариантом по умолчанию для большинства случаев использования.
StatefulSet
Если ваша нагрузка требует управления постоянным состоянием, например, при использовании расширения File Storage Collector или реализации Tail Sampling Processor, рекомендуется режим развертывания StatefulSet. Этот режим гарантирует, что каждый экземпляр Collector сохраняет свою идентичность и хранилище при перезапусках.
DaemonSet
Для сценариев, когда необходимо собирать телеметрию с каждого узла кластера, идеален режим развертывания DaemonSet. Это особенно полезно при использовании Filelog Receiver Collector для захвата логов контейнеров со всех узлов.
Sidecar
Режим развертывания Sidecar внедряет Collector непосредственно в поды приложений, обеспечивая два основных варианта использования:
-
Доступ к файлам логов: когда необходимо читать файлы логов изнутри контейнера, внедрите Collector как sidecar и настройте Filelog Receiver с общим томом (например,
emptyDir) для доступа к логам. -
Пересылка телеметрии через localhost: когда приложения отправляют телеметрию через
localhost, sidecar Collector может принимать эти данные и пересылать их во внешние сервисы по зашифрованным и аутентифицированным соединениям.
Конфигурация внедрения Sidecar
При использовании режима развертывания sidecar необходимо настроить два параметра:
- Установить
spec.mode: sidecarв пользовательском ресурсеOpenTelemetryCollector - Добавить аннотацию
sidecar.opentelemetry.io/injectлибо к поду, либо к namespace
Аннотация sidecar.opentelemetry.io/inject может применяться на уровне пода или namespace. Если она установлена в обоих местах, при значениях false или конкретного имени CR OpenTelemetryCollector приоритет имеет аннотация на уровне пода.
Поддерживаемые значения аннотации:
- Аннотация принимает следующие значения:
false: отключает внедрение Collector (поведение по умолчанию при отсутствии аннотации)true: внедряет Collector с конфигурациейOpenTelemetryCollectorиз того же namespace<collector_name>: внедряет Collector с указанным именем<collector_name>изOpenTelemetryCollectorCR того же namespace<namespace>/<collector_name>: внедряет Collector с указанным именем<collector_name>изOpenTelemetryCollectorCR namespace<namespace>
Пример развертывания с внедрением sidecar:
Аннотация sidecar.opentelemetry.io/inject должна располагаться в spec.template.metadata.annotations (шаблон пода), не в metadata.annotations самого Deployment.
- Эта конфигурация внедряет Collector, определённый в
OpenTelemetryCollectorCR с именемmy-collector, как sidecar контейнер в каждый под, создаваемый этим Deployment.