Kubernetes Topology Sync
Общие сведения
Название плагина: k8sTopologySync
Ссылка для загрузки плагина: скачать
Описание:
Данный плагин позволяет получать из Kubernetes API информацию по всем основным workload сущностям: Namespace, Nodes, DaemonSets, Deployments, ReplicaSets, StatefulSets, PersistentVolumes, Pods.
Формат сценария задания сборщика данных
name: K8s Topology Sync
jobs:
  - name: K8s Topology Sync
    steps:
      - plugin: k8sTopologySync
        with:
            streamId: $.vars.stream.id
            streamKey: $.vars.stream.key
            apiUri: <K8s ApiServer URL>
            resourceKind: <string>
            syncRetryMaxCount: <integer>
            syncRetryIntervalSec: <integer>
            syncLogLevel: <string>
            sendEventsBatchSize: <integer>
            sendEventsType: <string>
            proxy:
                address: <string>
                credentials:
                    login: <string>
                    password: <string>
            tlsConfig:
              insecureSkipVerify: <boolean>
              caFile: <string>
              serverName: <string>
            enableHttp2: <boolean>
            followRedirects: <boolean>
        with-secured:
            authorization:
                bearerToken: <string>
                bearerTokenFile: <string>
Параметры конфигурации используемые в сценарии
Параметры соединения к Kubernetes Api
| Параметр | Тип | Обязательный параметр | Значение по умолчанию | Описание | 
|---|---|---|---|---|
| streamId | string | да | Идентификатор потока, в который необходимо отправлять собранные данные $.vars.stream.id- макрос, подставляющий ID потока, который связан со сборщиком данных | |
| streamKey | string | да | Ключ потока, в который необходимо отправлять собранные данные $.vars.stream.key- макрос, подставляющий API ключ потока, который связан со сборщиком данных | |
| apiUri | string | да | Имя и порт API сервера Kubernetes к которому обращается агент | |
| resourceKind | string | да | Типы ресурсов для синхронизации | |
| syncLogLevel | string | опционально | Error | Параметр, определяющий уровень логирования выполнения заданий | 
| syncRetryMaxCount | integer | опционально | 5 | Максимальное кол-во попыток выполнить задание | 
| syncRetryIntervalSec | integer | опционально | 900 | Интервал в секундах между попытками | 
| sendEventsBatchSize | integer | опционально | 100 | Размер пачки сообщений с данными объектов | 
| sendEventsType | string | опционально | Partial | Частичная или полная синхронизация | 
| tlsConfig | опционально | Параметры установки защищенного соединения | ||
| tlsConfig: insecureSkipVerify | boolean | опционально | true | Определяет должна ли проверяться цепочка сертификатов при установке соединения | 
| tlsConfig: caFile | string | да, если insecureSkipVerify=false | Путь к файлу с CA сертификатом | |
| tlsConfig: serverName | string | опционально | Имя сервера, с которым должно быть установлено соединение | |
| authorization | да | Авторизационные параметры | ||
| authorization: BearerToken | string | да, если не указан BearerTokenFile | Токен в виде строки | |
| authorization: BearerTokenFile | string | да, если не указан BearerToken | Путь к файлу с токеном | |
| proxy | опционально | null | Параметры соединения через proxy-сервер | |
| proxy: address | string | опционально | URL proxy-сервера, через который будет проходить запрос | |
| proxy: credentials: login | string | опционально | Логин или username для http-аутентификации на proxy-сервере | |
| proxy: credentials: password | string | опционально | Пароль для http-аутентификации на proxy-сервере | |
| enableHttp2 | boolean | опционально | false | Поддержка HTTP/2 при обращении к K8s | 
| followRedirects | boolean | опционально | false | Параметр, позволяющий запросу следовать перенаправлениям, при обращении к K8s | 
resourceKind
Возможные значения: nodes, daemonSets, deployments, replicaSets, statefulSets, persistentVolumes, pods, namespaces
syncLogLevel
Возможные значения: None, Error, Warning, Info, Debug
sendEventsType
- Partial- отправка в поток объектов выбранного типа только с отличным от записанного в кэш плагина- resourceVersion
- Complete- отправка в поток всех объектов выбранного типа с последующей записью в кэш полного слепка полученных данных и очисткой предыдущих данных
Пример сценария на получение данных топологии
В приведенном примере агент получает информацию о:
nodes,daemonSets,deployments,replicaSets,statefulSets,persistentVolumes,pods
name: K8s Topology Updates
jobs:
- name: K8s Topology Updates Job
  steps:
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: replicaSets
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: deployments
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: daemonSets
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: statefulSets
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: pods
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: persistentVolumes
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: nodes
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
    - plugin: k8sTopologySync
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        resourceKind: namespaces
        syncResourcesPageSize: 50
        syncRetryMaxCount: 1
        syncRetryIntervalSec: 900
        syncLogLevel: debug
        sendEventsBatchSize: 100
        sendEventsType: partial
        enableHttp2: false
        followRedirects: false
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"