Argo-events#

Argo-events - это фреймворк для автоматизации событийных процессов в Kubernetes, позволяющий запускать рабочие процессы (workflows), управлять зависимостями и реагировать на события из различных источников.

Основные задачи и возможности
  • Событийная автоматизация:

    Позволяет запускать Kubernetes-объекты, Argo Workflows, serverless-нагрузки и другие задачи в ответ на внешние или внутренние события.

  • Интеграция со множеством источников событий:

    Поддерживает более 20 типов источников событий, таких как GitHub, Slack, AWS S3, HTTP-запросы, таймеры и другие.

  • Определение зависимостей между событиями:

    Позволяет создавать сложные цепочки зависимостей, чтобы выполнять задачи только при выполнении определенных условий.

  • Основные компоненты

    Включает ключевые элементы:

    • EventSource — источник событий;

    • Sensor — ожидает событие и запускает триггер;

    • Trigger — действие, выполняемое при наступлении события;

    • EventBus — шина событий для маршрутизации и управления потоками.

  • Работа с архитектурой Event-Driven:

    Обеспечивает гибкую интеграцию с event-driven системами, что делает его удобным для построения реактивных и автоматизированных пайплайнов.

Примечание

Argo-events является инструментом по умолчанию компонента Devops и устанавливается с ним автоматически.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем argo-events и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

nameOverride - задает альтернативное имя для релиза#

Параметр

Описание

Значение по умолчанию

nameOverride

Переопределяет Release.Name; используется для сокращения или стандартизации названия объектов

argo-events

fullnameOverride - задает полное альтернативное имя для всех объектов#

Параметр

Описание

Значение по умолчанию

fullnameOverride

Полностью переопределяет шаблон argo-events.fullname; чаще применяется когда требуется единый cтабильный префикс

""

namespaceOverride - устанавливает пространство имен для ресурсов чарта#

Параметр

Описание

Значение по умолчанию

namespaceOverride

Позволяет развернуть чарт в пространстве имен, отличном от Release.Namespace

""

openshift - режим развертывания для OpenShift#

Параметр

Описание

Значение по умолчанию

openshift

Включает особенности развертывания, необходимые для OpenShift

false

createAggregateRoles - создание агрегированных ClusterRole#

Параметр

Описание

Значение по умолчанию

createAggregateRoles

Добавляет расширяющие ClusterRole для работы CRD Argo Events (используется при кластерном режиме)

false

crds - настройки управления CRD#

Параметр

Описание

Значение по умолчанию

crds.install

Управление установкой CRD во время helm install/upgrade

true

crds.keep

Сохранение CRD при удалении чарта (helm uninstall)

true

crds.annotations

Аннотации, добавляемые ко всем CRD

{}

configs - конфигурация EventBus (NATS/JetStream) и дополнительные объекты#

Параметр

Описание

Значение по умолчанию

configs.nats.versions

Массив поддерживаемых конфигураций NATS Streaming; каждая запись содержит version, natsStreamingImage, metricsExporterImage

- version: latest
  natsStreamingImage: nats-streaming:latest
  metricsExporterImage: natsio/prometheus-nats-exporter:latest
- version: 0.22.1
  natsStreamingImage: nats-streaming:0.22.1
  metricsExporterImage: natsio/prometheus-nats-exporter:0.8.0

configs.jetstream.settings.maxMemoryStore

Максимальный объем памяти для хранения данных JetStream

-1

configs.jetstream.settings.maxFileStore

Максимальный объем файлового хранилища JetStream

-1

configs.jetstream.streamConfig.maxMsgs

Максимальное количество сообщений до удаления самых старых

1000000

configs.jetstream.streamConfig.maxAge

Максимальный возраст сообщений в потоке (TTL) — формат Go Duration

72h

configs.jetstream.streamConfig.maxBytes

Максимальный суммарный объем сообщений в потоке. При 0 ограничение снимается

1GB

configs.jetstream.streamConfig.replicas

Количество реплик потока JetStream (минимум 3)

3

configs.jetstream.streamConfig.duplicates

Интервал обнаружения дубликатов сообщений

300s

configs.jetstream.streamConfig.retention

Политика хранения сообщений в потоке JetStream: 0 = Limits, 1 = Interest, 2 = WorkQueue

0

configs.jetstream.streamConfig.discard

Политика удаления сообщений при переполнении лимитов потока: 0 = DiscardOld, 1 = DiscardNew

0

configs.jetstream.versions

Массив поддерживаемых версий JetStream c образами NATS; каждая запись содержит version, natsImage, metricsExporterImage, configReloaderImage, startCommand

- version: latest
natsImage: nats:2.10.10
metricsExporterImage: natsio/prometheus-nats-exporter:0.14.0
configReloaderImage: natsio/nats-server-config-reloader:0.14.0
startCommand: /nats-server
- version: 2.8.1
natsImage: nats:2.8.1
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: /nats-server
- version: 2.8.1-alpine
natsImage: nats:2.8.1-alpine
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: nats-server
- version: 2.8.2
natsImage: nats:2.8.2
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: /nats-server
- version: 2.8.2-alpine
natsImage: nats:2.8.2-alpine
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: nats-server
- version: 2.9.1
natsImage: nats:2.9.1
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: /nats-server
- version: 2.9.12
natsImage: nats:2.9.12
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: /nats-server
- version: 2.9.16
natsImage: nats:2.9.16
metricsExporterImage: natsio/prometheus-nats-exporter:0.9.1
configReloaderImage: natsio/nats-server-config-reloader:0.7.0
startCommand: /nats-server
- version: 2.10.10
natsImage: nats:2.10.10
metricsExporterImage: natsio/prometheus-nats-exporter:0.14.0
configReloaderImage: natsio/nats-server-config-reloader:0.14.0
startCommand: /nats-server

extraObjects - дополнительные Kubernetes-манифесты#

Параметр

Описание

Значение по умолчанию

extraObjects

Массив YAML-ресурсов, внедряемых в релиз (можно использовать Helm-шаблоны)

[]

controller - оператор (Events Controller)#

Параметр

Описание

Значение по умолчанию

controller.name

Имя Deployment контроллера

controller-manager

controller.rbac.enabled

Создает необходимые RBAC-объекты

true

controller.rbac.namespaced

Ограничивает права контроллера текущим пространствам имен

false

controller.rbac.managedNamespace

Дополнительное пространство имен, за которым должен следить контроллер

""

controller.rbac.rules

Дополнительные пользовательские RBAC-правила

[]

controller.image.repository

Путь к образу контроллера (использует глобальные переменные)

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-argo-events/argo-events"

controller.image.tag

Тег контейнерного образа контроллера событий

v1.9.10

controller.image.imagePullPolicy

Политика загрузки контейнерного образа контроллера событий (берет из global, если не задано)

""

controller.revisionHistoryLimit

Количество сохраняемых старых ReplicaSet для возможности отката

5

controller.replicas

Количество pod контроллера событий

1

controller.pdb.enabled

Создает PodDisruptionBudget для контроллера событий

false

controller.pdb.labels

Метки для PodDisruptionBudget контроллера событий

{}

controller.pdb.annotations

Аннотации для PodDisruptionBudget контроллера событий

{}

controller.env

Переменные окружения для контроллера событий

[]

controller.envFrom

Источники envFrom для контроллера событий

[]

controller.podAnnotations

Аннотации для pod контроллера событий

{}

controller.podLabels

Метки для pod контроллера событий

{}

controller.containerSecurityContext

SecurityContext контейнера

{}

controller.readinessProbe.failureThreshold

Количество последовательных неуспешных проверок после успешного состояния

3

controller.readinessProbe.initialDelaySeconds

Задержка перед первым запуском проверки

10

controller.readinessProbe.periodSeconds

Интервал между проверками

10

controller.readinessProbe.successThreshold

Количество последовательных успешных проверок после ошибки

1

controller.readinessProbe.timeoutSeconds

Время ожидания проверки

1

controller.livenessProbe.failureThreshold

Количество последовательных неуспешных проверок после успешного состояния

3

controller.livenessProbe.initialDelaySeconds

Задержка перед первым запуском liveness-проверок

10

controller.livenessProbe.periodSeconds

Интервал между liveness-проверками

10

controller.livenessProbe.successThreshold

Количество последовательных успешных liveness-проверок после ошибки

1

controller.livenessProbe.timeoutSeconds

Время ожидания liveness-проверок

1

controller.volumes

Дополнительные volumes для pod контроллера событий

[]

controller.volumeMounts

Дополнительные volumeMounts для основного контейнера контроллера событий

[]

controller.nodeSelector

Nodeselector для размещения pod контроллера событий

{}

controller.tolerations

Toleration для pod контроллера событий

[]

controller.affinity

Affinity-правила для Deployment контроллера событий

{}

controller.topologySpreadConstraints

TopologySpreadConstraints для pod контроллера событий

[]

controller.priorityClassName

Имя PriorityClass для pod контроллера событий

""

controller.resources

Ограничения и запросы ресурсов для pod контроллера событий

{}

controller.extraContainers

Дополнительные контейнеры для pod контроллера событий

[]

controller.initContainers

Init-контейнеры для pod контроллера событий

[]

controller.serviceAccount.create

Создает сервисный аккаунт для контроллера событий

true

controller.serviceAccount.name

Имя сервисного аккаунта контроллера событий

""

controller.serviceAccount.annotations

Аннотации для создаваемого сервисного аккаунта контроллера событий

{}

controller.serviceAccount.automountServiceAccountToken

Включает автоматическое монтирование API-учетных данных в сервисный аккаунт контроллера событий

true

controller.metrics.enabled

Создает сервис метрик для контроллера событий

true

controller.metrics.service.annotations

Аннотации сервиса метрик контроллера событий

{}

controller.metrics.service.labels

Метки сервиса метрик контроллера событий

{}

controller.metrics.service.servicePort

Порт сервиса метрик контроллера событий

8082

controller.metrics.serviceMonitor.enabled

Создает ServiceMonitor Prometheus для контроллера событий

false

controller.metrics.serviceMonitor.interval

Интервал опроса метрик в ServiceMonitor

30s

controller.metrics.serviceMonitor.relabelings

Конфигурации повторной разметки ServiceMonitor для применения к образцам перед сбором

[]

controller.metrics.serviceMonitor.metricRelabelings

Конфигурации повторной разметки метрик ServiceMonitor для применения к образцам перед поглощением

[]

controller.metrics.serviceMonitor.selector

Selector для Prometheus

{}

controller.metrics.serviceMonitor.namespace

Пространство имен ServiceMonitor

""

controller.metrics.serviceMonitor.additionalLabels

Дополнительные метки для ServiceMonitor

{}

webhook - Admission Webhook для валидации ресурсов Argo Events#

Параметр

Описание

Значение по умолчанию

webhook.enabled

Включает Admission Webhook (только при кластерном режиме)

false

webhook.name

Имя Deployment webhook-сервера

events-webhook

webhook.image.repository

Образ webhook (использует глобальные переменные)

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-argo-events/argo-events"

webhook.image.tag

Тег контейнерного образа webhook

v1.9.10

webhook.image.imagePullPolicy

Политика загрузки контейнерного образа webhook

""

webhook.revisionHistoryLimit

Количество сохраняемых старых ReplicaSet для возможности отката webhook

5

webhook.replicas

Количество pod webhook

1

webhook.pdb.enabled

Создает PodDisruptionBudget для webhook

false

webhook.pdb.labels

Метки для PodDisruptionBudget webhook

{}

webhook.pdb.annotations

Аннотации для PodDisruptionBudget webhook

{}

webhook.env

Переменные окружения для webhook

[]

webhook.envFrom

Источники envFrom для webhook

[]

webhook.podAnnotations

Аннотации для pod webhook

{}

webhook.podLabels

Метки для pod webhook

{}

webhook.port

Порт, на котором webhook принимает соединения

443

webhook.containerSecurityContext

SecurityContext контейнера

{}

webhook.readinessProbe.failureThreshold

Количество последовательных неуспешных readiness-проверок после успешного состояния

3

webhook.readinessProbe.initialDelaySeconds

Задержка перед первым запуском readiness-проверок webhook

10

webhook.readinessProbe.periodSeconds

Интервал между readiness-проверками webhook

10

webhook.readinessProbe.successThreshold

Количество последовательных успешных readiness-проверок после ошибки

1

webhook.readinessProbe.timeoutSeconds

Время ожидания readiness

1

webhook.livenessProbe.failureThreshold

Количество последовательных неуспешных liveness-проверок после успешного состояния

3

webhook.livenessProbe.initialDelaySeconds

Задержка перед первым запуском liveness-проверок webhook

10

webhook.livenessProbe.periodSeconds

Интервал между liveness-проверками webhook

10

webhook.livenessProbe.successThreshold

Количество последовательных успешных liveness-проверок после ошибки

1

webhook.livenessProbe.timeoutSeconds

Время ожидания liveness

1

webhook.volumeMounts

Дополнительные volumeMounts для основного контейнера webhook

[]

webhook.volumes

Дополнительные volumes для pod webhook

[]

webhook.nodeSelector

Селектор узлов для размещения pod webhook

{}

webhook.tolerations

Tolerations для pod webhook

[]

webhook.affinity

Affinity-правила для Deployment webhook

{}

webhook.topologySpreadConstraints

TopologySpreadConstraints для pod webhook

[]

webhook.priorityClassName

Имя PriorityClass для pod webhook

""

webhook.resources

Ограничения и запросы ресурсов для pod webhook

{}

webhook.serviceAccount.create

Создает сервисный аккаунт для admission webhook

true

webhook.serviceAccount.name

Имя сервисного аккаунта webhook

""

webhook.serviceAccount.annotations

Аннотации для создаваемого сервисного аккаунта webhook

{}

webhook.serviceAccount.automountServiceAccountToken

Включает автоматическое монтирование API-учетных данных в сервисный аккаунт webhook

true