Автоматическое подключение трейсеров для инструментации приложений в Kubernetes с помощью Proto Observability

На этой странице представлены инструкции по подключению автоматической инструментации приложений в Kubernetes.

Агент ProtoOBP для Kubernetes

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

Для автоматического подключения трейсеров используется механизм Kubernetes Admission Controller Mutating Webhook (https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/). Процесс включает в себя следующие этапы:

  1. При создании нового pod, кластер Kubernetes отправляет запрос с control plane на protoobp-webhook. Этот запрос требует входящего соединения с control plane на ноду, на которой находится Protoobp Cluster Agent, через его порт Admission Controller (8000). После того как этот запрос будет разрешен, Protoobp Cluster Agent мутирует pod c приложением.

  2. При мутации в под добавляется init-container. Конкретный контейнер выбирается в зависимости от языка разработки на основе ранее прописанных аннотаций.

    Язык Аннотация Образ init-container
    Java admission.proto.group/java-lib.version: "latest" pobp-lib-java-init:2.3.1
    Node JS admission.proto.group/js-lib.version: "latest" pobp-lib-js-init:2.3.1
    Python admission.proto.group/python-lib.version: "latest" pobp-lib-python-init:2.3.1

    Стандартный репозиторий образов: registry.git.proto.group/protoobp/protoobp-artifacts

  3. Мутация добавляет библиотеку (файл) трейсера, а также устанавливает неоходимые переменные окружения, для работы трейсера.

Как включить автоматическое инжектирование трейсеров

В общих чертах процесс включает в себя следующие шаги:

  1. Включите ProtoOBP Admission Controller для мутации ваших подов. При установке агента в Kubernetes, это уже включено по умолчанию.

  2. Добавьте аннотации к подам, чтобы указать корректный трейсер. Так как система не может самостоятельно определить, какой тип приложения (языка разработки) запущен в поде, необходимо явно указать, какой трейсер подключать. Например, для Java приложения нужен Java трейсер, для Python приложения - Python трейсер и тд.

  3. Добавьте к вашим подам лейблы service, env.

  4. Примените новую конфигурацию пода.

Инструкции для различных языков разработки

Автоматическая инструментация без использования лейблов

В конфигурации агента вы можете включить автоматическую инструментацию без использования дополнительной аннотации подов.

Для этого в конфигурации агента добавьте переменную окружения POBP_ADMISSION_CONTROLLER_MUTATE_UNLABELLED=true или в параметрах Helm Chart укажите clusterAgent.admissionController.mutateUnlabelled:true

Варианты и комбинации настроек для инжектирования:

mutateUnlabelled Лейбл пода Инъекция произойдет
true Нет лейбла Да
true admission.proto.group/enabled=true Да
true admission.proto.group/enabled=false Нет
false Нет лейбла Нет
false admission.proto.group/enabled=true Да
false admission.proto.group/enabled=false Нет