Установка агента в Kubernetes
На этой странице:
- Установка
- Использование hostPath ноды
- Работа в непривилегированном режиме
- Дополнительная конфигурация для OpenShift
- Сокет среды выполнения контейнеров
- Изменение параметров
- Удаление
После установки агента в системе появятся поды агента:
protoobpprotoobp-cluster-agent
Необходимые сетевые порты для работы Kubernetes агента:
| Source Name | Destination Name | Destination PORT/PROTO | Description |
|---|---|---|---|
поды агента (protoobp и protoobp-cluster-agent) | proto backend | 443/tcp | отправка данных (метрики, трейсы, логи) от агента на бэкенда |
под агента protoobp | под агента protoobp-cluster-agent | 5005/tcp | подключение агента к cluster-агенту |
| поды приложений | под агента protoobp | 8125/udp | отправка метрик от приложения к агенту |
| поды приложений | под агента protoobp | 8126/tcp | отправка трейсов от приложения к агенту |
| IP k8s control plane | IP k8s ноды | 8000/tcp | подключение webhook автоматической инструментации приложений |
Установка
Обратите внимание
Для работы с чартами Proto OBP необходимо использоватьhelm версии 3.x – версия 2.x не подходит, так как формат helm чартов отличается.Добавьте
helmрепозиторий ProtoOBP:helm repo add --username <my_login> --password <my_password> protoobp https://git.proto.group/api/v4/projects/100/packages/helm/stableВаши логин и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”.
Добавьте
secretдля скачивания Docker образов из репозитория ProtoOBP. Для этого воспользуйтесь готовым скриптомscript.sh:# Укажите имя пользователя login="my_login" # Укажите пароль password="my_password" # Укажите адрес репозитория registry="registry.git.proto.group" # Укажите namespace в котором будет установлен агент (по умолчанию protoobp) namespace="protoobp" ###################### # Скрипт set -o errexit echo 'Создаем Secret' kubectl create namespace ${namespace} kubectl create secret docker-registry protoobp-registry --docker-username=${login} --docker-password=${password} --docker-server=${registry} --namespace=${namespace}Создайте файл
values.yamlс конфигурацией агентаtargetSystem: "linux" commonLabels: {} registry: registry.git.proto.group/protoobp/protoobp-artifacts # необходимо изменить в случае использования собственного Docker репозитория protoobp: apiKey: <ВАШ_API_KEY> # указан в лицензионном сертификате clusterName: <ИМЯ_КЛАСТЕРА> # задается вручную в соответствии с текущим реальным именем кластер pobp_url: http://<адрес_бекенд_сервера_protoobp> # используйте httpS только если на сервере ProtoOBP Backend подключен доверенный сертификат logLevel: INFO env: ## адреса отправки трейсов и данных о кластере; используйте тот же адрес, что и в pobp_url - name: POBP_APM_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_ORCHESTRATOR_EXPLORER_ORCHESTRATOR_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_CONTAINER_IMAGE_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_CONTAINER_LIFECYCLE_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_SBOM_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> processAgent: enabled: false processCollection: false kubelet: tlsVerify: false clusterAgent: image: name: protoobp-cluster-agent tag: 7.80.2 pullSecrets: - name: "protoobp-registry" env: ## раздел protoobp.env на cluster-агент не распространяется — адреса повторяются здесь - name: POBP_ORCHESTRATOR_EXPLORER_ORCHESTRATOR_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_CONTAINER_IMAGE_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_CONTAINER_LIFECYCLE_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> - name: POBP_SBOM_POBP_URL value: http://<адрес_бекенд_сервера_protoobp> ## переменная ниже добавляется только в случае использования локального репозитория Docker образов для компонентов Proto Observability Platform # - name: POBP_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_CONTAINER_REGISTRY # value: docker.intranet/protoobp/protoobp-artifacts ## здесь указывается адрес локального репозитория - зеркала образов agents: image: name: protoobp-agent tag: 7.80.2 pullSecrets: - name: "protoobp-registry"Параметры:
<ВАШ_API_KEY>значение, указанное в лицензионном сертификате, полученном ранее от вендора, в разделе Учетные данные -> Парольpobp_urlстрока вида http://<адрес_бекенд_сервера_protoobp>, где<адрес_бекенд_сервера_protoobp>- адрес вашего ProtoOBP Backend сервера, доступного для агентаenv(*_POBP_URL)адреса отправки отдельных видов данных: трейсов ( POBP_APM_POBP_URL), данных о ресурсах кластера, образах и составе контейнеров. Укажите в них тот же адрес, что и вpobp_url. Для cluster-агента те же переменные задаются вclusterAgent.env<ИМЯ_КЛАСТЕРА>имя кластера, которое будет отображаться в интерфейсе Proto Observability Platform Обратите внимание
Параметрpobp_apm_url, который использовался в чарте версии 3.6.4, в чарте 3.225.1 не действует: адрес отправки трейсов задаётся переменнойPOBP_APM_POBP_URLв разделеprotoobp.env. Если включаете мониторинг баз данных или сетевых устройств, их адреса задаются так же — переменнымиPOBP_DATABASE_MONITORING_*_POBP_URLиPOBP_NETWORK_DEVICES_*_POBP_URL.Кластеры без поддержки hostPort
Приложения отправляют трейсы и метрики на порты агента
8126и8125на IP ноды. Если сетевой плагин кластера не поддерживаетhostPort(например, в Yandex Managed Service for Kubernetes), приложения получаютconnection refusedна<IP_ноды>:8126. В этом случае добавьте вvalues.yaml:agents: useHostNetwork: trueУстановите
helmчарт в ваш Kubernetes кластер (в примере ниже исползуется неймспейсprotoobp)Обратите внимание
Для изменения параметров агентов Proto OBP допустимы только изменения в файлеvalues.yaml, изменять сам чарт не нужно.helm repo update protoobp helm install protoobp -f values.yaml protoobp/protoobp --version 3.225.1 --namespace protoobp
Использование hostPath ноды
Поды агента имеют несколько hostPath mount:
| Имя Mount | Описание |
|---|---|
procdir | Подключается в режиме read-only. Используется системными проверками. |
cgroups | Подключается в режиме read-only. Используется для сбора метаданных контейнеров. |
os-release-file | Подключается в режиме read-only. Используется для определения ОС. |
passwd | Подключается в режиме read-only. Используется для ассоциирования процессов с пользователями. |
runtimesocketdir | Подключается в режиме read-only. Используется для сбора метрик контейнеров. |
dsdsocket | Подключается в режиме read-write. Используется для приема метрик, опционально также может быть включен порт. |
apmsocket | Подключается в режиме read-write. Используется для приема трейсов, опционально также может быть включен порт. |
Работа в непривилегированном режиме
Для максимальной совместимости и автоматизации сбора данных агент в контейнере по умолчанию запускается от пользователя root.
Использование не root пользователя может ограничить работу некоторых интеграций, которым необходимы данные хоста (ноды).
Пользователя, под которым запускается агент в контейнере, можно изменить, указав в values.yaml ID необходимого пользователя.
Обратите внимание
Для корректной работы агента в случае изменения ID пользователя необходима предварительная настройка хоста (ноды):
- пользователь, под которым запускается агент, должен иметь доступ к сокету
Docker,CRI-Oилиcontainerd(в зависимости от используемого рантайма).
Внутри контейнера агента создается пользователь pobp-agent c ID = 101, рекомендуется использовать этого пользователя для предоставления доступа к сокету.
protoobp:
...
securityContext:
runAsUser: <USER_ID>
# UID пользователя, под которым будет запускаться Proto OBP агент
supplementalGroups:
- <GROUP_ID>
# ID группы, которая является владельцем сокета Docker или containerd
Дополнительная конфигурация для OpenShift
Особенности настройки агентов Proto OBP с OpenShift:
- необходимо указать создание SCC (Security Context Constraints) для агентов
- необходимо указать путь к сокету CRI, так как OpenShift использует CRI-O в качестве рантайма контейнеров
- необходимо добавить
tolerationsдля запуска агентов наmasterиinfraнодах кластера
Для этого в файле values.yaml в разделе agents добавьте:
protoobp:
criSocketPath: /var/run/crio/crio.sock
...
agents:
useHostNetwork: true
podSecurity:
securityContextConstraints:
create: true
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Exists
- effect: NoSchedule
key: node-role.kubernetes.io/infra
operator: Exists
clusterAgent:
podSecurity:
securityContextConstraints:
create: true
...
Сокет среды выполнения контейнеров
Метрики и логи контейнеров агент получает от среды выполнения контейнеров (Docker, containerd или CRI-O) через её сокет. Сокеты в стандартных расположениях агент находит сам. Если на нодах используется CRI-O или сокет containerd расположен нестандартно, укажите путь явно:
protoobp:
criSocketPath: /var/run/containerd/containerd.sock # или /var/run/crio/crio.sock для CRI-O
Параметр включает проверки containerd и cri. При установке агента пакетом или в Docker тот же путь задаётся параметром cri_socket_path в protoobp.yaml или переменной POBP_CRI_SOCKET_PATH; сокет должен быть доступен агенту (в контейнере — смонтирован). Пример для OpenShift — в разделе Дополнительная конфигурация для OpenShift.
Изменение параметров
После внесения изменений в файл values.yaml можно применить изменения с помощью команды:
helm upgrade protoobp -f values.yaml protoobp/protoobp --version 3.225.1 --namespace protoobp
Или воспользуйтесь полным удалением агента и переустановкой.
Удаление
Удалить ProtoOBP агента из Kubernetes кластера, можно выполнив (используемый в примере неймспейс – protoobp, замените при использовании нестандартного неймспейса):
helm uninstall protoobp -n protoobp