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табильный префикс

".Release.Namespace"

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

Параметр

Описание

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

namespaceOverride

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

""

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

Параметр

Описание

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

createAggregateRoles

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

false

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

Параметр

Описание

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

crds.install

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

true

crds.keep

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

true

global - глобальные параметры, наследуемые всеми компонентами#

Параметр

Описание

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

global.image.tag

Версия образов по умолчанию

v1.9.6

global.image.imagePullPolicy

Политика вытягивания образов (Always, IfNotPresent, Never)

IfNotPresent

global.imagePullSecrets

Список секретов для приватного реестра

[]

global.hostAliases

Статические записи в /etc/hosts всех pods

[]

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

Параметр

Описание

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

configs.nats.versions

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

[{"version":"latest",...}]

configs.nats.versions.0.version

Версия NATS Streaming для первого профиля

latest

configs.nats.versions.0.natsStreamingImage

Образ сервера NATS Streaming

nats-streaming:latest

configs.nats.versions.0.metricsExporterImage

Образ экспортера метрик NATS

natsio/prometheus-nats-exporter:latest

configs.nats.versions.1.version

Альтернативная версия NATS

0.22.1

configs.nats.versions.1.natsStreamingImage

Образ конкретной версии 0.22.1

nats-streaming:0.22.1

configs.nats.versions.1.metricsExporterImage

Экспортер метрик для 0.22.1

natsio/prometheus-nats-exporter:0.8.0

configs.jetstream.settings.maxMemoryStore

Лимит объема памяти под хранимые сообщения JetStream (-1 без лимита)

-1

configs.jetstream.settings.maxFileStore

Лимит дискового хранилища JetStream (-1 без лимита)

-1

configs.jetstream.streamConfig.maxMsgs

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

1000000

configs.jetstream.streamConfig.maxAge

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

72h

configs.jetstream.streamConfig.maxBytes

Совокупный размер сообщений, после которого начинает удалять старые

1GB

configs.jetstream.streamConfig.replicas

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

3

configs.jetstream.streamConfig.duplicates

Интервал дедупликации дубликатов — 300 s

300s

configs.jetstream.streamConfig.retention

Политика retention: 0 = Limits, 1 = Interest, 2 = WorkQueue

0

configs.jetstream.streamConfig.discard

Поведение при превышении лимитов: 0 = DiscardOld, 1 = DiscardNew

0

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

Параметр

Описание

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

extraObjects

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

[]

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

Параметр

Описание

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

controller.name

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

controller-manager

controller.rbac.enabled

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

true

controller.rbac.namespaced

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

false

controller.rbac.managedNamespace

Дополнительный Namespace под управление

""

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.6

controller.image.imagePullPolicy

Политика pull образа (берет из global, если не задано)

""

controller.revisionHistoryLimit

Хранить не более N ReplicaSet в истории

5

controller.replicas

Количество pods контроллера

1

controller.pdb.enabled

Создавать PodDisruptionBudget

false

controller.env

Список переменных окружения

[]

controller.envFrom

Подключение ConfigMap/Secret целиком

[]

controller.podAnnotations

Дополнительные аннотации pod

{}

controller.podLabels

Дополнительные метки pod

{}

controller.containerSecurityContext

SecurityContext контейнера

{}

controller.readinessProbe.failureThreshold

Сколько неудач до статуса Unready

3

controller.readinessProbe.initialDelaySeconds

Задержка до первой проверки

10

controller.readinessProbe.periodSeconds

Интервал проверок

10

controller.readinessProbe.successThreshold

Сколько успешных проверок до Ready

1

controller.readinessProbe.timeoutSeconds

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

1

controller.livenessProbe.failureThreshold

Порог рестарта по liveness

3

controller.livenessProbe.initialDelaySeconds

Задержка liveness проверок

10

controller.livenessProbe.periodSeconds

Периодичность liveness проверок

10

controller.livenessProbe.successThreshold

Успешные проверки до Healthy

1

controller.livenessProbe.timeoutSeconds

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

1

controller.volumes

Дополнительные Volume pod

[]

controller.volumeMounts

VolumeMount основного контейнера

[]

controller.nodeSelector

NodeSelector для pod контроллера

{}

controller.tolerations

Toleration под taints

[]

controller.affinity

Правила Affinity/Anti-Affinity

{}

controller.topologySpreadConstraints

Ограничения распределения по зонам

[]

controller.priorityClassName

Имя PriorityClass

""

controller.resources

Ресурсные запросы/лимиты

{}

controller.extraContainers

Сторонние контейнеры sidecar

[]

controller.initContainers

Дополнительные init-контейнеры

[]

controller.serviceAccount.create

Создавать ServiceAccount

true

controller.serviceAccount.name

Имя заранее созданного ServiceAccount

""

controller.serviceAccount.annotations

Аннотации для SA

{}

controller.serviceAccount.automountServiceAccountToken

Автомонтировать токен в pod

true

controller.metrics.enabled

Экспортировать метрики контроллера

false

controller.metrics.service.annotations

Аннотации Service-метрик

{}

controller.metrics.service.labels

Метки Service-метрик

{}

controller.metrics.service.servicePort

Порт Prometheus-endpoint

8082

controller.metrics.serviceMonitor.enabled

Создавать ServiceMonitor (Prometheus Operator)

false

controller.metrics.serviceMonitor.interval

Интервал scrape

30s

controller.metrics.serviceMonitor.relabelings

relabel-правила до парсинга

[]

controller.metrics.serviceMonitor.metricRelabelings

relabel-правила после парсинга

[]

controller.metrics.serviceMonitor.selector

Selector для Prometheus

{}

controller.metrics.serviceMonitor.namespace

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.6

webhook.image.imagePullPolicy

Политика pull образа

""

webhook.revisionHistoryLimit

Количество ReplicaSet истории

5

webhook.replicas

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

1

webhook.pdb.enabled

Создавать PodDisruptionBudget для webhook

false

webhook.env

Переменные окружения контейнера

[]

webhook.envFrom

EnvFrom ConfigMap/Secret

[]

webhook.podAnnotations

Дополнительные аннотации pod

{}

webhook.podLabels

Дополнительные метки pod

{}

webhook.port

HTTPS-порт webhook

443

webhook.containerSecurityContext

SecurityContext контейнера

{}

webhook.readinessProbe.failureThreshold

Порог ошибок readiness

3

webhook.readinessProbe.initialDelaySeconds

Задержка перед первой readiness проверкой

10

webhook.readinessProbe.periodSeconds

Интервал readiness проверок

10

webhook.readinessProbe.successThreshold

Успехов до Ready

1

webhook.readinessProbe.timeoutSeconds

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

1

webhook.livenessProbe.failureThreshold

Порог liveness-ошибок

3

webhook.livenessProbe.initialDelaySeconds

Задержка liveness

10

webhook.livenessProbe.periodSeconds

Интервал liveness проверок

10

webhook.livenessProbe.successThreshold

Успехов до Healthy

1

webhook.livenessProbe.timeoutSeconds

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

1

webhook.volumeMounts

Дополнительные VolumeMount

[]

webhook.volumes

Дополнительные Volume pod

[]

webhook.nodeSelector

NodeSelector для webhook

{}

webhook.tolerations

Toleration для узлов tainted

[]

webhook.affinity

Affinity-правила

{}

webhook.topologySpreadConstraints

Spread-правила по зонам/узлам

[]

webhook.priorityClassName

PriorityClass webhook

""

webhook.resources

Ресурсные запросы/лимиты

{}

webhook.serviceAccount.create

Создать ServiceAccount для webhook

true

webhook.serviceAccount.name

Имя существующего ServiceAccount

""

webhook.serviceAccount.annotations

Аннотации SA

{}

webhook.serviceAccount.automountServiceAccountToken

Автомонтировать токен в Pod

true