• Русский
  • Режимы развертывания

    Пользовательский ресурс OpenTelemetryCollector поддерживает несколько режимов развертывания, что позволяет выбрать наиболее подходящую стратегию в зависимости от ваших требований к сбору телеметрии.

    Deployment

    Это стандартный режим развертывания и служит вариантом по умолчанию для большинства случаев использования.

    StatefulSet

    Если ваша нагрузка требует управления постоянным состоянием, например, при использовании расширения File Storage Collector или реализации Tail Sampling Processor, рекомендуется режим развертывания StatefulSet. Этот режим гарантирует, что каждый экземпляр Collector сохраняет свою идентичность и хранилище при перезапусках.

    DaemonSet

    Для сценариев, когда необходимо собирать телеметрию с каждого узла кластера, идеален режим развертывания DaemonSet. Это особенно полезно при использовании Filelog Receiver Collector для захвата логов контейнеров со всех узлов.

    Sidecar

    Режим развертывания Sidecar внедряет Collector непосредственно в поды приложений, обеспечивая два основных варианта использования:

    1. Доступ к файлам логов: когда необходимо читать файлы логов изнутри контейнера, внедрите Collector как sidecar и настройте Filelog Receiver с общим томом (например, emptyDir) для доступа к логам.

    2. Пересылка телеметрии через localhost: когда приложения отправляют телеметрию через localhost, sidecar Collector может принимать эти данные и пересылать их во внешние сервисы по зашифрованным и аутентифицированным соединениям.

    Конфигурация внедрения Sidecar

    NOTE

    При использовании режима развертывания sidecar необходимо настроить два параметра:

    1. Установить spec.mode: sidecar в пользовательском ресурсе OpenTelemetryCollector
    2. Добавить аннотацию sidecar.opentelemetry.io/inject либо к поду, либо к namespace

    Аннотация sidecar.opentelemetry.io/inject может применяться на уровне пода или namespace. Если она установлена в обоих местах, при значениях false или конкретного имени CR OpenTelemetryCollector приоритет имеет аннотация на уровне пода.

    Поддерживаемые значения аннотации:

    apiVersion: v1
    kind: Pod
    metadata:
      ...
      annotations:
        sidecar.opentelemetry.io/inject: "<value>"
      ...
    1. Аннотация принимает следующие значения:
    • false: отключает внедрение Collector (поведение по умолчанию при отсутствии аннотации)
    • true: внедряет Collector с конфигурацией OpenTelemetryCollector из того же namespace
    • <collector_name>: внедряет Collector с указанным именем <collector_name> из OpenTelemetryCollector CR того же namespace
    • <namespace>/<collector_name>: внедряет Collector с указанным именем <collector_name> из OpenTelemetryCollector CR namespace <namespace>

    Пример развертывания с внедрением sidecar:

    WARNING

    Аннотация sidecar.opentelemetry.io/inject должна располагаться в spec.template.metadata.annotations (шаблон пода), не в metadata.annotations самого Deployment.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
          annotations:
            sidecar.opentelemetry.io/inject: "my-collector"
        spec:
          containers:
          - name: app
            image: myapp:latest
    1. Эта конфигурация внедряет Collector, определённый в OpenTelemetryCollector CR с именем my-collector, как sidecar контейнер в каждый под, создаваемый этим Deployment.