Argo-workflows#

Argo Workflows — это container-native-движок для оркестрации параллельных задач в Kubernetes. Он реализован как пользовательское расширение Kubernetes (CRD) и позволяет запускать сложные многошаговые процессы в виде графов зависимостей.

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

  • Работа с DAG (Directed Acyclic Graph): Поддерживает определение зависимостей между задачами в виде направленного ациклического графа, что удобно для сложных вычислительных процессов и CI/CD процессов.

  • Интеграция с Kubernetes API: Управление и запуск workflow осуществляется через стандартные механизмы Kubernetes, такие как kubectl или UI-панели.

  • Поддержка разных типов шагов: В одном workflow можно комбинировать вызовы контейнеров, скриптов, шаблонов, условий, pod workflows и другие элементы.

  • Визуализация и мониторинг выполнения: Предоставляет веб-интерфейс для просмотра состояния и прогресса выполнения задач в реальном времени.

  • Использование в CI/CD и ML-задачах: Широко применяется не только для автоматизации развертывания, но и в машинном обучении, ETL-процессах, тестировании и других сценариях с множеством зависимых этапов.

Примечание

Argo-workflows является инструментом по умолчанию в составе «Devops» и устанавливается с ним автоматически. UI Argo-workflows автоматически интегрирован с инструментом Dex и пользователь kubeadmin является администратором.

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

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

images – параметры контейнерного образа#

Параметр

Описание

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

images.tag

Общий тег для всех образов Argo Workflows, по умолчанию используется версия чарта

"v3.7.16"

images.pullPolicy

Политика загрузки образа контейнера для пода

IfNotPresent

images.pullSecrets

Secret с учетными данными для авторизации при загрузке образов из приватного реестра.
Пример конфигурации:

- name: argo-pull-secret

[]

crds – настройки установки и обновления Custom Resource Definitions (CRD)#

Параметр

Описание

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

crds.install

Установка и обновление CRD

true

crds.keep

Сохранение CRD при удалении чарта

true

crds.full

Использование полных CRD с полной OpenAPI-схемой, при отключении используются сокращенные CRD с x-kubernetes-preserve-unknown-fields

false

crds.annotations

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

{}

createAggregateRoles – создание агрегированных ролей#

Параметр

Описание

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

createAggregateRoles

Создание ClusterRole, расширяющих существующие ClusterRole для взаимодействия с CRD Argo Workflows

true

nameOverride – переопределение имени чарта#

Параметр

Описание

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

nameOverride

Переопределение имени чарта

~

fullnameOverride – полное переопределение имени чарта#

Параметр

Описание

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

fullnameOverride

Полное переопределение имени чарта для всех создаваемых ресурсов

~

namespaceOverride – переопределение пространства имен#

Параметр

Описание

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

namespaceOverride

Переопределение пространства имен вместо значения по умолчанию

""

commonLabels – общие метки для всех ресурсов#

Параметр

Описание

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

commonLabels

Метки, применяемые ко всем ресурсам

{}

kubeVersionOverride – переопределение версии Kubernetes#

Параметр

Описание

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

kubeVersionOverride

Переопределение версии Kubernetes, используемой при вычислении условных манифестов чарта

""

apiVersionOverrides – переопределение версий API#

Параметр

Описание

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

apiVersionOverrides.autoscaling

Строка для переопределения apiVersion автомасштабирования, создаваемого Helm-чартом

""

apiVersionOverrides.cloudgoogle

Строка для переопределения apiVersion ресурсов GKE, создаваемых Helm-чартом

""

apiVersionOverrides.monitoring

Строка для переопределения apiVersion CRD мониторинга (ServiceMonitor), создаваемых Helm-чартом

""

singleNamespace – режим работы в одном пространстве имен#

Параметр

Описание

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

singleNamespace

Ограничение работы Argo только в одном пространстве имен путем применения Role и RoleBinding вместо ClusterRole и ClusterRoleBinding, а также запуск workflow-controller с флагом --namespaced

false

workflow – настройки workflow#

Параметр

Описание

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

workflow.namespace

Пространство имен workflow. Устаревший параметр, используйте controller.workflowNamespaces

~

workflow.serviceAccount.create

Создание ServiceAccount

false

workflow.serviceAccount.labels

Метки для созданного ServiceAccount

{}

workflow.serviceAccount.annotations

Аннотации для созданного ServiceAccount

{}

workflow.serviceAccount.name

Имя ServiceAccount для запуска workflow

"argo-workflow"

workflow.serviceAccount.pullSecrets

Секреты для загрузки образов из приватного реестра, формат аналогичен .Values.images.pullSecrets

[]

workflow.rbac.create

Добавление Role и RoleBinding для указанного ServiceAccount для запуска workflow; также создается пара Role/RoleBinding для каждого пространства имен в controller.workflowNamespaces

true

workflow.rbac.agentPermissions

Разрешение прав для агента Argo, требуется только при использовании http/plugin-шаблонов

false

workflow.rbac.artifactGC

Разрешение прав для pod сборщика мусора артефактов Argo

false

workflow.rbac.serviceAccounts

Дополнительные ServiceAccount для добавления в RoleBinding.
Пример конфигурации:

- name: my-service-account
  namespace: my-namespace

[]

workflow.rbac.rules

Дополнительные правила для Role и RoleBinding

[]

controller – настройки контроллера workflow#

Параметр

Описание

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

controller.image.registry

Реестр контейнерного образа контроллера

'{{ .Values.global.image.registry }}'

controller.image.repository

Репозиторий контейнерного образа контроллера

'{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-argo-workflows/workflow-controller'

controller.image.tag

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

"v3.7.16"

controller.parallelism

Количество workflow, которые могут выполняться одновременно

~

controller.resourceRateLimit

Глобальное ограничение скорости создания pod для предотвращения перегрузки API-сервера Kubernetes.
Пример конфигурации:

limit: 10
burst: 1

{}

controller.rbac.create

Добавление Role и RoleBinding для контроллера

true

controller.rbac.secretWhitelist

Разрешение контроллеру получать, перечислять и отслеживать определенные Secret

[]

controller.rbac.accessAllSecrets

Разрешение контроллеру получать, перечислять и отслеживать все Secret; может использоваться только если secretWhitelist пуст

false

controller.rbac.writeConfigMaps

Разрешение контроллеру создавать и обновлять ConfigMap, включает функцию мемоизации

false

controller.configMap.create

Создание ConfigMap для контроллера

true

controller.configMap.name

Имя ConfigMap

""

controller.configMap.annotations

Аннотации ConfigMap

{}

controller.namespaceParallelism

Ограничение максимального количества незавершенных workflow в пространстве имен

~

controller.initialDelay

Начальная задержка для обхода известной ошибки AWS EKS

~

controller.deploymentAnnotations

Необязательная карта аннотаций для Deployment контроллера

{}

controller.podAnnotations

Аннотации для pod контроллера

{}

controller.podLabels

Метки для pod контроллера

{}

controller.podSecurityContext

Параметры контекста безопасности pod

{}

controller.metricsConfig.enabled

Включение сервера метрик Prometheus

true

controller.metricsConfig.path

Путь публикации метрик, должен начинаться с /

/metrics

controller.metricsConfig.interval

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

30s

controller.metricsConfig.port

Порт контейнера для публикации метрик

9090

controller.metricsConfig.metricsTTL

Период очистки пользовательских метрик из памяти

""

controller.metricsConfig.ignoreErrors

Флаг игнорирования ошибок генерации метрик Prometheus

false

controller.metricsConfig.secure

Флаг использования самоподписанного сертификата для TLS

false

controller.metricsConfig.portName

Имя порта метрик контейнера

metrics

controller.metricsConfig.servicePort

Порт метрик Service

8080

controller.metricsConfig.servicePortName

Имя порта метрик Service

metrics

controller.metricsConfig.scheme

Схема подключения ServiceMonitor

http

controller.metricsConfig.headlessService

Включение Headless Service

false

controller.metricsConfig.honorLabels

При значении true сохраняются метки при конфликте с метками цели

false

controller.metricsConfig.relabelings

Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик в ServiceMonitor

[]

controller.metricsConfig.metricRelabelings

Правила фильтрации и преобразования меток, применяемые к собранным метрикам в ServiceMonitor

[]

controller.metricsConfig.targetLabels

Метки ServiceMonitor, добавляемые к метрике Prometheus из Service

[]

controller.metricsConfig.modifiers

Модификаторы метрик, создаваемых workflow-контроллером

{}

controller.securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

true

controller.securityContext.runAsNonRoot

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

true

controller.securityContext.allowPrivilegeEscalation

Запрет повышения привилегий

false

controller.securityContext.capabilities.drop

Список capabilities для удаления

- ALL

controller.persistence

Включение workflow-архива для хранения статуса workflow; доступны PostgreSQL и MySQL.
Пример конфигурации:

connectionPool:
  maxIdleConns: 100
  maxOpenConns: 0
nodeStatusOffLoad: false
archive: false
postgresql:
  host: localhost
  port: 5432
  database: postgres
  tableName: argo_workflows
  userNameSecret:
    name: argo-postgres-config
    key: username
  passwordSecret:
    name: argo-postgres-config
    key: password
  ssl: true
  sslMode: require
mysql:
  host: localhost
  port: 3306
  database: argo
  tableName: argo_workflows
  userNameSecret:
    name: argo-mysql-config
    key: username
  passwordSecret:
    name: argo-mysql-config
    key: password

{}

controller.workflowDefaults

Значения по умолчанию для всех workflow от данного контроллера.
Пример конфигурации:

spec:
  ttlStrategy:
    secondsAfterCompletion: 86400
  artifactRepositoryRef:
    configMap: my-artifact-repository
    key: v2-s3-artifact-repository

{}

controller.workflowWorkers

Количество workflow-воркеров

~

controller.workflowTTLWorkers

Количество воркеров TTL workflow

~

controller.podCleanupWorkers

Количество воркеров очистки pod

~

controller.cronWorkflowWorkers

Количество воркеров cron-workflow

~

controller.workflowRestrictions

Ограничения workflow для контроллера.
Пример конфигурации:

templateReferencing: Strict

{}

controller.telemetryConfig.enabled

Включение сервера телеметрии Prometheus

false

controller.telemetryConfig.path

Путь телеметрии

/telemetry

controller.telemetryConfig.interval

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

30s

controller.telemetryConfig.port

Порт контейнера телеметрии

8081

controller.telemetryConfig.metricsTTL

Период очистки пользовательских метрик телеметрии из памяти

""

controller.telemetryConfig.ignoreErrors

Флаг игнорирования ошибок генерации метрик телеметрии Prometheus

false

controller.telemetryConfig.secure

Флаг использования самоподписанного сертификата для TLS телеметрии

false

controller.telemetryConfig.servicePort

Порт Service телеметрии

8081

controller.telemetryConfig.servicePortName

Имя порта Service телеметрии

telemetry

controller.telemetryConfig.scheme

Схема ServiceMonitor для телеметрии

http

controller.serviceMonitor.enabled

Включение ServiceMonitor Prometheus

true

controller.serviceMonitor.additionalLabels

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

{}

controller.serviceMonitor.namespace

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

""

controller.serviceAccount.create

Создание ServiceAccount для контроллера

true

controller.serviceAccount.name

Имя ServiceAccount

""

controller.serviceAccount.labels

Метки для созданного ServiceAccount

{}

controller.serviceAccount.annotations

Аннотации для созданного ServiceAccount

{}

controller.name

Имя workflow-контроллера

workflow-controller

controller.workflowNamespaces

Список пространств имен для управления workflow; управляет созданием ServiceAccount и RBAC-ресурсов; используется приsingleNamespace равному false

- default

controller.instanceID.enabled

Фильтрация pod workflow контроллером по совпадению атрибута instanceID

false

controller.instanceID.useReleaseName

Использование имени релиза как instanceID

false

controller.instanceID.explicitID

Пользовательский instanceID

""

controller.logging.level

Уровень логирования.
Возможные значения: debug, info, warn, error

info

controller.logging.globallevel

Уровень логирования glog

"0"

controller.logging.format

Формат логирования.
Возможные значения: text, json

"text"

controller.serviceType

Тип Service контроллера

ClusterIP

controller.serviceAnnotations

Аннотации для Service контроллера

{}

controller.serviceLabels

Дополнительные метки для Service контроллера

{}

controller.loadBalancerClass

Класс LoadBalancer

""

controller.loadBalancerSourceRanges

Диапазоны источников для доступа к Service типа LoadBalancer

[]

controller.resources

Запросы и ограничения ресурсов для контейнера

{}

controller.livenessProbe.httpGet.port

Порт проверки жизнеспособности

6060

controller.livenessProbe.httpGet.path

Путь проверки жизнеспособности

/healthz

controller.livenessProbe.failureThreshold

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

3

controller.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой

90

controller.livenessProbe.periodSeconds

Период выполнения проверки в секундах

60

controller.livenessProbe.timeoutSeconds

Тайм-аут проверки в секундах

30

controller.extraEnv

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

[]

controller.extraArgs

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

[]

controller.volumeMounts

Точки монтирования Volume для pod

[]

controller.volumes

Список volumes для pod

[]

controller.replicas

Количество реплик pod

1

controller.revisionHistoryLimit

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

10

controller.pdb.enabled

Включение PodDisruptionBudget для pod.
Пример конфигурации:

minAvailable: 1
maxUnavailable: 1

false

controller.nodeSelector

Метки узла для планирования pod

kubernetes.io/os: linux

controller.tolerations

Толерантности для pod

[]

controller.affinity

Правила affinity для pod

{}

controller.topologySpreadConstraints

Ограничения topological distribution для pod

[]

controller.priorityClassName

Имя PriorityClass для pod

""

controller.links

Настройка пользовательских ссылок в сервере Argo

[]

controller.columns

Настройка пользовательских столбцов в сервере Argo

[]

controller.navColor

Цвет навигационной панели интерфейса

""

controller.clusterWorkflowTemplates.enabled

Создание ClusterRole и CRB для доступа контроллера к ClusterWorkflowTemplates

true

controller.clusterWorkflowTemplates.serviceAccounts

Дополнительные ServiceAccount для добавления в ClusterRoleBinding.
Пример конфигурации:

- name: my-service-account
  namespace: my-namespace

[]

controller.extraContainers

Список дополнительных контейнеров для pod

[]

controller.extraInitContainers

Список дополнительных init-контейнеров для pod

[]

controller.retentionPolicy

Политика удержания workflow по количеству.
Пример конфигурации:

completed: 10
failed: 3
errored: 3

{}

controller.nodeEvents.enabled

Включение генерации Event при завершении узлов

true

controller.workflowEvents.enabled

Включение генерации Event при изменении статуса workflow

true

controller.kubeConfig

Настройка связи контроллера с API-сервером Kubernetes из другого кластера через Secret kubeconfig.
Пример конфигурации:

secretName: kubeconfig-secret
secretKey: kubeconfig
mountPath: /kubeconfig/mount/path
volumeName: kube-config-volume

{}

controller.podGCGracePeriodSeconds

Задержка в секундах перед принудительным удалением завершенных pod сборщиком мусора Argo

~

controller.podGCDeleteDelayDuration

Задержка перед постановкой завершенного pod в очередь на удаление сборщиком мусора

""

controller.synchronization

Включение синхронизации с использованием базы данных; доступны PostgreSQL и MySQL.
Пример конфигурации:

controllerName: argo-workflows
connectionPool:
  maxIdleConns: 100
  maxOpenConns: 0
postgresql:
  host: localhost
  port: 5432
  database: postgres
  tableName: argo_workflows
  userNameSecret:
    name: argo-postgres-config
    key: username
  passwordSecret:
    name: argo-postgres-config
    key: password
  ssl: true
  sslMode: require
mysql:
  host: localhost
  port: 3306
  database: argo
  tableName: argo_workflows
  userNameSecret:
    name: argo-mysql-config
    key: username
  passwordSecret:
    name: argo-mysql-config
    key: password

{}

mainContainer – настройки основного контейнера workflow#

Параметр

Описание

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

mainContainer.imagePullPolicy

Политика загрузки образа для основного контейнера workflow, по умолчанию используется .Values.images.pullPolicy

""

mainContainer.resources

Запросы и ограничения ресурсов для контейнера

{}

mainContainer.env

Список переменных окружения для контейнера

[]

mainContainer.envFrom

Список источников переменных окружения для контейнера

[]

mainContainer.securityContext

Параметры контекста безопасности контейнера

{}

executor – настройки исполнителя workflow#

Параметр

Описание

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

executor.image.registry

Реестр для workflow-исполнителей

'{{ .Values.global.image.registry }}'

executor.image.repository

Репозиторий для workflow-исполнителей

'{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-argo-workflows/argoexec'

executor.image.tag

Тег образа workflow-исполнителей, по умолчанию используется .Values.images.tag

"v3.7.16"

executor.image.pullPolicy

Политика загрузки образа workflow-исполнителей, по умолчанию используется .Values.images.pullPolicy

""

executor.resources

Запросы и ограничения ресурсов для контейнера

{}

executor.args

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

[]

executor.env

Список переменных окружения для контейнера

[]

executor.securityContext

Параметры контекста безопасности контейнера

{}

server – настройки сервера Argo#

Параметр

Описание

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

server.enabled

Развертывание сервера Argo

true

server.baseHref

Значение base href в index.html; используется при запуске за обратным прокси под путем отличным от /

/

server.image.registry

Реестр контейнерного образа для сервера

'{{ .Values.global.image.registry }}'

server.image.repository

Репозиторий контейнерного образа для сервера

'{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-argo-workflows/argocli'

server.image.tag

Тег образа сервера Argo Workflows, по умолчанию используется .Values.images.tag

"v3.7.16"

server.deploymentAnnotations

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

{}

server.podAnnotations

Аннотации для pod сервера

{}

server.podLabels

Метки для pod сервера

{}

server.podSecurityContext

Параметры контекста безопасности pod

{}

server.rbac.create

Добавление Role и RoleBinding для сервера

true

server.securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

false

server.securityContext.runAsNonRoot

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

true

server.securityContext.allowPrivilegeEscalation

Разрешение повышения привилегий

false

server.securityContext.capabilities.drop

Список capabilities для удаления

- ALL

server.name

Имя сервера

server

server.serviceType

Тип Service для pod сервера

ClusterIP

server.servicePort

Порт Service сервера

2746

server.serviceTargetPort

Целевой порт Service сервера

2746

server.serviceNodePort

Порт узла Service

~

server.servicePortName

Имя порта Service

""

server.hostAliases

Список псевдонимов хостов для добавления в /etc/hosts.
Пример конфигурации:

- ip: 10.20.30.40
  hostnames:
    - git.myhostname

[]

server.serviceAccount.create

Создание нового ServiceAccount; при значении false в serviceAccount.name указывается существующий

true

server.serviceAccount.name

Имя ServiceAccount; при пустом значении и serviceAccount.create: true имя генерируется автоматически

""

server.serviceAccount.labels

Метки для созданного ServiceAccount

{}

server.serviceAccount.annotations

Дополнительные аннотации для ServiceAccount

{}

server.serviceAnnotations

Аннотации для Service UI

{}

server.serviceLabels

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

{}

server.loadBalancerClass

Класс LoadBalancer

""

server.loadBalancerIP

Статический IP-адрес для Service типа LoadBalancer

""

server.loadBalancerSourceRanges

Диапазоны источников для доступа к Service типа LoadBalancer

[]

server.resources

Запросы и ограничения ресурсов для контейнера

{}

server.replicas

Количество реплик pod

1

server.revisionHistoryLimit

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

10

server.autoscaling.enabled

Включение Horizontal Pod Autoscaler (HPA) для сервера Argo

false

server.autoscaling.minReplicas

Минимальное количество реплик HPA сервера Argo

1

server.autoscaling.maxReplicas

Максимальное количество реплик HPA сервера Argo

5

server.autoscaling.targetCPUUtilizationPercentage

Средняя загрузка CPU для HPA сервера Argo в процентах

50

server.autoscaling.targetMemoryUtilizationPercentage

Средняя загрузка памяти для HPA сервера Argo в процентах

50

server.autoscaling.behavior

Конфигурация поведения масштабирования HPA.
Пример конфигурации:

scaleDown:
  stabilizationWindowSeconds: 300
  policies:
    - type: Pods
      value: 1
      periodSeconds: 180
scaleUp:
  stabilizationWindowSeconds: 300
  policies:
    - type: Pods
      value: 2

{}

server.pdb.enabled

Включение PodDisruptionBudget для pod

false

server.nodeSelector

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

kubernetes.io/os: linux

server.tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

server.affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

server.topologySpreadConstraints

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

[]

server.priorityClassName

Имя PriorityClass для pod

""

server.secure

Запуск сервера Argo в безопасном режиме

false

server.extraEnv

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

[]

server.authMode

Список методов аутентификации. Устаревший параметр, используйте server.authModes

""

server.authModes

Список методов аутентификации пользователей при доступе к Argo Workflows.
Возможные значения: server, client, sso

- sso
- client

server.extraArgs

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

[]

server.logging.level

Уровень логирования.
Возможные значения: debug, info, warn, error

info

server.logging.globallevel

Уровень логирования glog

"0"

server.logging.format

Формат логирования.
Возможные значения: text, json

"text"

server.tmpVolume.emptyDir

Volume для монтирования в pod для временных файлов

{}

server.volumeMounts

Дополнительные точки монтирования томов (VolumeMount)

- name: ingress-tls
  readOnly: true
  mountPath: /etc/ssl/certs/tls.crt
  subPath: tls.crt

server.volumes

Дополнительные тома (Volume) для pod

- name: ingress-tls
  secret:
    secretName: ingress-tls
    items:
      - key: tls.crt
        path: tls.crt
    defaultMode: 420

server.consoleLink.enabled

Включение создания ConfigMap типа ConsoleLink для перехода в Argo Workflows из консоли платформы

true

server.ingress.enabled

Включение Ingress-контроллера для публикации сервера Argo Workflows

true

server.ingress.annotations

Аннотации для Ingress-контроллера.
Пример конфигурации:

annotations:
  kubernetes.io/ingress.class: "nginx"
  nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
  nginx.ingress.kubernetes.io/ssl-redirect: "true"

{}

server.ingress.labels

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

{}

server.ingress.ingressClassName

Класс Ingress.
Возможные значения: nginx для NGINX Ingress, gce для GKE Ingress

"nginx"

server.ingress.hosts

Основной хост для ресурсов Ingress Argo Workflows

- 'argowf.{{ include "ingress.domain" . }}'

server.ingress.paths

Список путей Ingress

- /

server.ingress.pathType

Тип пути Ingress.
Возможные значения: Exact, Prefix, ImplementationSpecific

Prefix

server.ingress.extraPaths

Дополнительные пути Ingress.
Пример конфигурации:

- path: /*
  backend:
    serviceName: ssl-redirect
    servicePort: use-annotation

[]

server.ingress.tls

Включение TLS-конфигурации для Ingress

- hosts:
    - 'argowf.{{ include "ingress.domain" . }}'
  secretName: ingress-tls

server.GKEbackendConfig.enabled

Включение BackendConfig для Google Kubernetes Engine

false

server.GKEbackendConfig.spec

Спецификация BackendConfig для Google Kubernetes Engine

{}

server.GKEmanagedCertificate.enabled

Включение ManagedCertificate для Google Kubernetes Engine

false

server.GKEmanagedCertificate.domains

Домены для ManagedCertificate Google Kubernetes Engine

- argoworkflows.example.com

server.GKEfrontendConfig.enabled

Включение FrontendConfig для Google Kubernetes Engine

false

server.GKEfrontendConfig.spec

Спецификация FrontendConfig для Google Kubernetes Engine.
Пример конфигурации:

spec:
  redirectToHttps:
    enabled: true
    responseCodeName: RESPONSE_CODE

{}

server.httproute.enabled

Включение ресурса HTTPRoute для сервера Argo Workflows (Gateway API)

false

server.httproute.labels

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

{}

server.httproute.annotations

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

{}

server.httproute.parentRefs

Ссылки на родительские Gateway для HTTPRoute.
Пример конфигурации:

- name: example-gateway
  namespace: example-gateway-namespace
  sectionName: https

[]

server.httproute.hostnames

Список имен хостов для HTTPRoute.
Пример конфигурации:

- argoworkflows.example.com

[]

server.httproute.rules

Правила HTTPRoute.
Пример конфигурации:

- matches:
    - path:
        type: PathPrefix
        value: /
    filters: []
      - type: RequestHeaderModifier
        requestHeaderModifier:
          add:
            - name: X-Custom-Header
              value: custom-value
- matches:
    - path:
        type: PathPrefix
        value: /

server.backendTLSPolicy.enabled

Включение ресурса BackendTLSPolicy для сервера Argo Workflows (Gateway API)

false

server.backendTLSPolicy.labels

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

{}

server.backendTLSPolicy.annotations

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

{}

server.backendTLSPolicy.targetRefs

Целевые ссылки для BackendTLSPolicy.
Пример конфигурации:

- group: ""
  kind: Service
  name: argo-workflows-server
  sectionName: https

[]

server.backendTLSPolicy.validation

TLS-валидация для BackendTLSPolicy.
Пример конфигурации:

hostname: argo-workflows-server.argo.svc.cluster.local
caCertificateRefs:
  - name: example-ca-cert
    group: ""
    kind: ConfigMap
wellKnownCACertificates: System

{}

server.clusterWorkflowTemplates.enabled

Создание ClusterRole и CRB для сервера для доступа к ClusterWorkflowTemplates

true

server.clusterWorkflowTemplates.enableEditing

Разрешение серверу редактировать ClusterWorkflowTemplates

true

server.sso.enabled

Включение аутентификации через SSO с использованием OIDC провайдера. При значении true установите .Values.server.authModes как sso

true

server.sso.issuer

Корневой URL провайдера идентификации OIDC

https://auth.{{ include "ingress.domain" . }}

server.sso.clientId.name

Имя Secret, содержащего ID клиента для OIDC-аутентификации в SSO

server.sso.clientId.key

Ключ Secret для получения OIDC ID клиента

client-id

server.sso.clientSecret.name

Имя Secret содержащего пароль (client secret) для OIDC-аутентификации в SSO

argo-server-sso

server.sso.clientSecret.key

Ключ в Secret, содержащий пароль (client secret) для OIDC-аутентификации

client-secret

server.sso.redirectUrl

URL перенаправления OIDC, должен иметь вид <argo-root-url>/oauth2/callback

""

server.sso.rbac.enabled

Включение авторизации на основе ролей (RBAC) для SSO-пользователей.

true

server.sso.rbac.secretWhitelist

Белый список для ограничения чтения Secret сервером

[]

server.sso.scopes

Запрашиваемые области доступа от SSO ID провайдера

- openid
- profile
- email
- groups

server.sso.sessionExpiry

Длительность сессии в часах

""

server.sso.issuerAlias

Альтернативные корневые URL для OIDC провайдеров

""

server.sso.customGroupClaimName

Переопределение имени claim для групп OIDC

""

server.sso.userInfoPath

Путь эндпоинта пользовательской информации с claim групп (например, для Okta)

""

server.sso.insecureSkipVerify

Пропуск верификации TLS для HTTP-клиента

false

server.sso.filterGroupsRegex

Фильтрация групп, возвращаемых OIDC провайдером.
Пример конфигурации:

- ".*argo-wf.*"
- ".*argo-workflow.*"

[]

server.extraContainers

Список дополнительных контейнеров для pod

[]

server.extraInitContainers

Список дополнительных init-контейнеров для pod

[]

server.lifecycle

Параметры lifecycle для контейнера

{}

server.terminationGracePeriodSeconds

Время, отведенное на корректное завершение работы pod

30

server.livenessProbe.enabled

Включение проверки работоспособности контейнера сервера

false

server.livenessProbe.httpGet.port

Порт HTTP для проверки работоспособности контейнера

2746

server.livenessProbe.httpGet.path

Путь HTTP для проверки работоспособности контейнера

/

server.livenessProbe.failureThreshold

Количество неудачных попыток до перевода контейнера в статус NotReady

3

server.livenessProbe.initialDelaySeconds

Задержка в секундах перед первой проверкой работоспособности

10

server.livenessProbe.periodSeconds

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

10

server.livenessProbe.timeoutSeconds

Тайм-аут проверки работоспособности

1

server.livenessProbe.successThreshold

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

1

extraObjects – дополнительные объекты Helm-чарта#

Параметр

Описание

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

extraObjects

Дополнительные ресурсы для развертывания вместе с Argo Workflows.
Пример конфигурации:

- apiVersion: secrets-store.csi.x-k8s.io/v1
  kind: SecretProviderClass
  metadata:
    name: argo-server-sso
  spec:
    provider: aws
    parameters:
      objects: |
        - objectName: "argo/server/sso"
          objectType: "secretsmanager"
          jmesPath:
              - path: "client_id"
                objectAlias: "client_id"
              - path: "client_secret"
                objectAlias: "client_secret"
    secretObjects:
    - data:
      - key: client_id
        objectName: client_id
      - key: client_secret
        objectName: client_secret
      secretName: argo-server-sso-secrets-store
      type: Opaque

[]

useStaticCredentials – использование статических учетных данных#

Параметр

Описание

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

useStaticCredentials

Использование статических учетных данных для S3

true

artifactRepository – репозиторий артефактов#

Параметр

Описание

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

artifactRepository.archiveLogs

Архивация логов основного контейнера как артефакта

false

artifactRepository.s3

Хранение артефактов в S3-совместимом объектном хранилище.
Пример конфигурации:

accessKeySecret:
  name: "{{ .Release.Name }}-minio"
  key: accesskey
secretKeySecret:
  name: "{{ .Release.Name }}-minio"
  key: secretkey
sessionTokenSecret:
  name: "{{ .Release.Name }}-minio"
  key: sessionToken
insecure: false
caSecret:
  name: ca-root
  key: cert.pem
bucket:
endpoint:
region:
roleARN:
useSDKCreds: true
encryptionOptions:
  enableEncryption: true

{}

artifactRepository.gcs

Хранение артефактов в объектном хранилище GCS.
Пример конфигурации:

bucket: <project>-argo
keyFormat: "{{workflow.namespace}}/{{workflow.name}}/{{pod.name}}"
serviceAccountKeySecret:
  name: my-gcs-credentials
  key: serviceAccountKey

{}

artifactRepository.azure

Хранение артефактов в Azure Blob Storage.
Пример конфигурации:

endpoint: https://mystorageaccountname.blob.core.windows.net
container: my-container-name
blobNameFormat: path/in/container
useSDKCreds: true
accountKeySecret:
  name: my-azure-storage-credentials
  key: account-access-key

{}

customArtifactRepository – пользовательский репозиторий артефактов#

Параметр

Описание

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

customArtifactRepository

Пользовательский репозиторий артефактов, отличный от базовых (S3, GCS, Azure).
Пример конфигурации:

artifactory:
  repoUrl: https://artifactory.example.com/raw
  usernameSecret:
    name: artifactory-creds
    key: username
  passwordSecret:
    name: artifactory-creds
    key: password

{}

artifactRepositoryRef – ссылка на репозиторий артефактов#

Параметр

Описание

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

artifactRepositoryRef

Ссылка на ConfigMap с конфигурацией репозитория артефактов.
Пример конфигурации:

artifact-repositories:
  annotations:
    workflows.argoproj.io/default-artifact-repository: default-v1-s3-artifact-repository
  default-v1-s3-artifact-repository:
    archiveLogs: false
    s3:
      bucket: my-bucket
      endpoint: minio:9000
      insecure: true
      accessKeySecret:
        name: my-minio-cred
        key: accesskey
      secretKeySecret:
        name: my-minio-cred
        key: secretkey

{}

emissary – настройки emissary executor#

Параметр

Описание

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

emissary.images

Emissary задает команды по умолчанию для используемых в Workflow Docker-образов.
Пример конфигурации:

argoproj/argosay:v2:
  cmd: [/argosay]
docker/whalesay:latest:
  cmd: [/bin/bash]

{}