Автоматическое подключение трейсеров для инструментации приложений в Kubernetes с помощью Proto Observability
Агент ProtoOBP для Kubernetes
Агент может автоматически подключать трейсеры, необходимые для инструментации приложений, запущенных в подах Kubernetes. Это существенно облегчает и ускоряет подключение трейсинга и сбора метрик приложений.
Для автоматического подключения трейсеров используется механизм Kubernetes Admission Controller Mutating Webhook (https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/). Процесс включает в себя следующие этапы:
-
При создании нового pod, кластер Kubernetes отправляет запрос с control plane на protoobp-webhook. Этот запрос требует входящего соединения с control plane на ноду, на которой находится Protoobp Cluster Agent, через его порт Admission Controller (8000). После того как этот запрос будет разрешен, Protoobp Cluster Agent мутирует pod c приложением.
-
При мутации в под добавляется 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
-
Мутация добавляет библиотеку (файл) трейсера, а также устанавливает неоходимые переменные окружения, для работы трейсера.
Как включить автоматическое инжектирование трейсеров
Обратите внимание
При использовании автоматической инструментации вам не нужно создавать новый образ приложения или контейнера, чтобы внедрить трейсер. Об инъекции трейсера и переменных позаботится webhook, поэтому никаких изменений в образе приложения не требуется.В общих чертах процесс включает в себя следующие шаги:
-
Включите ProtoOBP Admission Controller для мутации ваших подов. При установке агента в Kubernetes, это уже включено по умолчанию.
-
Добавьте аннотации к подам, чтобы указать корректный трейсер. Так как система не может самостоятельно определить, какой тип приложения (языка разработки) запущен в поде, необходимо явно указать, какой трейсер подключать. Например, для Java приложения нужен Java трейсер, для Python приложения - Python трейсер и тд.
-
Добавьте к вашим подам лейблы
service
,env
. -
Примените новую конфигурацию пода.
Инструкции для различных языков разработки
-
Автоматическое подключение трейсеров к подам с Java приложениями
-
Автоматическое подключение трейсеров к подам с Python приложениями
-
Автоматическое подключение трейсеров к подам с NodeJS приложениями
Автоматическая инструментация без использования лейблов
В конфигурации агента вы можете включить автоматическую инструментацию без использования дополнительной аннотации подов.
Для этого в конфигурации агента добавьте переменную окружения 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 |
Нет |