Перейти к основному содержимому
Версия: 8.3

Kubernetes Topology Sync

Общие сведения

Название плагина: k8sTopologySync

Ссылка для загрузки плагина: 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

ПараметрТипОбязательный параметрЗначение по умолчаниюОписание
streamIdstringдаИдентификатор текущего потока ($.vars.stream.id)
streamKeystringдаAPI ключ текущего потока ($.vars.stream.key)
apiUristringдаИмя и порт api-сервера k8s к которому обращается агент
resourceKindstringдаТипы ресурсов для синхронизации
syncLogLevelstringопциональноErrorПараметр, определяющий уровень логирования выполнения заданий. Лог отправляется в поток как событие, а также выводится в лог работы агента
syncRetryMaxCountintegerопционально5Максимальное кол-во попыток выполнить задание
syncRetryIntervalSecintegerопционально900Интервал в секундах между попытками
sendEventsBatchSizeintegerопционально100Размер пачки сообщений с данными объектов
sendEventsTypestringопциональноPartialЧастичная или полная синхронизация
tlsConfigопциональноПараметры установки защищенного соединения
tlsConfig: insecureSkipVerifybooleanопциональноtrueОпределяет должна ли проверяться цепочка сертификатов при установке соединения
tlsConfig: caFilestringда, если insecureSkipVerify=falseПуть к файлу с CA сертификатом
tlsConfig: serverNamestringопциональноИмя сервера, с которым должно быть установлено соединение
authorizationдаАвторизационные параметры
authorization: BearerTokenstringда, если не указан BearerTokenFileТокен в виде строки
authorization: BearerTokenFilestringда, если не указан BearerTokenПуть к файлу с токеном
proxyопциональноnullПараметры соединения через proxy-сервер
proxy: addressstringопциональноURL proxy-сервера, через который будет проходить запрос
proxy: credentials: loginstringопциональноЛогин или username для http-аутентификации на proxy-сервере
proxy: credentials: passwordstringопциональноПароль для http-аутентификации на proxy-сервере
enableHttp2booleanопциональноfalseПоддержка HTTP/2 при обращении к K8s
followRedirectsbooleanопционально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"