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
Параметр | Тип | Обязательный параметр | Значение по умолчанию | Описание |
---|---|---|---|---|
streamId | string | да | Идентификатор текущего потока ($.vars.stream.id ) | |
streamKey | string | да | API ключ текущего потока ($.vars.stream.key ) | |
apiUri | string | да | Имя и порт api-сервера k8s к которому обращается агент | |
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"