Установка агента в Kubernetes

Обновлено 20.10.2026
Установка агента ProtoOBP в Kubernetes и OpenShift с помощью Helm-чарта, непривилегированный режим, изменение параметров и удаление.

На этой странице:

После установки агента в системе появятся поды агента:

  • protoobp
  • protoobp-cluster-agent

Необходимые сетевые порты для работы Kubernetes агента:

Source NameDestination NameDestination PORT/PROTODescription
поды агента (protoobp и protoobp-cluster-agent)proto backend443/tcpотправка данных (метрики, трейсы, логи) от агента на бэкенда
под агента protoobpпод агента protoobp-cluster-agent5005/tcpподключение агента к cluster-агенту
поды приложенийпод агента protoobp8125/udpотправка метрик от приложения к агенту
поды приложенийпод агента protoobp8126/tcpотправка трейсов от приложения к агенту
IP k8s control planeIP k8s ноды8000/tcpподключение webhook автоматической инструментации приложений

Установка

  1. Добавьте helm репозиторий ProtoOBP:

    helm repo add --username <my_login> --password <my_password> protoobp https://git.proto.group/api/v4/projects/100/packages/helm/stable
    

    Ваши логин и пароль указаны в лицензионном сертификате, полученном ранее от вендора, в разделе “Учетные данные”.

  2. Добавьте 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}
    
  3. Создайте файл 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
  4. Установите helm чарт в ваш Kubernetes кластер (в примере ниже исползуется неймспейс protoobp)

    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 необходимого пользователя.

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