Skip to content

Environment Variables

This document outlines environment variables that can be used to customize behavior.

Warning

Environment variables are typically added to test out experimental features and should not be used by most users. Environment variables may be removed at any time.

Controller

Name Type Default Description
ARGO_AGENT_TASK_WORKERS int 16 The number of task workers for the agent pod.
ALL_POD_CHANGES_SIGNIFICANT bool false Whether to consider all pod changes as significant during pod reconciliation.
ALWAYS_OFFLOAD_NODE_STATUS bool false Whether to always offload the node status.
ARCHIVED_WORKFLOW_GC_PERIOD time.Duration 24h The periodicity for GC of archived workflows.
ARGO_PPROF bool false Enable pprof endpoints
ARGO_PROGRESS_PATCH_TICK_DURATION time.Duration 1m How often self reported progress is patched into the pod annotations which means how long it takes until the controller picks up the progress change. Set to 0 to disable self reporting progress.
ARGO_PROGRESS_FILE_TICK_DURATION time.Duration 3s How often the progress file is read by the executor. Set to 0 to disable self reporting progress.
ARGO_REMOVE_PVC_PROTECTION_FINALIZER bool true Remove the kubernetes.io/pvc-protection finalizer from persistent volume claims (PVC) after marking PVCs created for the workflow for deletion, so deleted is not blocked until the pods are deleted. #6629
ARGO_TRACE string `` Whether to enable tracing statements in Argo components.
ARGO_AGENT_PATCH_RATE time.Duration DEFAULT_REQUEUE_TIME Rate that the Argo Agent will patch the workflow task-set.
ARGO_AGENT_CPU_LIMIT resource.Quantity 100m CPU resource limit for the agent.
ARGO_AGENT_MEMORY_LIMIT resource.Quantity 256m Memory resource limit for the agent.
ARGO_POD_STATUS_CAPTURE_FINALIZER bool false The finalizer blocks the deletion of pods until the controller captures their status.
BUBBLE_ENTRY_TEMPLATE_ERR bool true Whether to bubble up template errors to workflow.
CACHE_GC_PERIOD time.Duration 0s How often to perform memoization cache GC, which is disabled by default and can be enabled by providing a non-zero duration.
CACHE_GC_AFTER_NOT_HIT_DURATION time.Duration 30s When a memoization cache has not been hit after this duration, it will be deleted.
CRON_SYNC_PERIOD time.Duration 10s How often to sync cron workflows.
DEFAULT_REQUEUE_TIME time.Duration 10s The re-queue time for the rate limiter of the workflow queue.
DISABLE_MAX_RECURSION bool false Set to true to disable the recursion preventer, which will stop a workflow running which has called into a child template 100 times
EXPRESSION_TEMPLATES bool true Escape hatch to disable expression templates.
EVENT_AGGREGATION_WITH_ANNOTATIONS bool false Whether event annotations will be used when aggregating events.
GZIP_IMPLEMENTATION string PGZip The implementation of compression/decompression. Currently only "PGZip" and "GZip" are supported.
INFORMER_WRITE_BACK bool true Whether to write back to informer instead of catching up.
HEALTHZ_AGE time.Duration 5m How old a un-reconciled workflow is to report unhealthy.
INDEX_WORKFLOW_SEMAPHORE_KEYS bool true Whether or not to index semaphores.
LEADER_ELECTION_IDENTITY string Controller's metadata.name The ID used for workflow controllers to elect a leader.
LEADER_ELECTION_DISABLE bool false Whether leader election should be disabled.
LEADER_ELECTION_LEASE_DURATION time.Duration 15s The duration that non-leader candidates will wait to force acquire leadership.
LEADER_ELECTION_RENEW_DEADLINE time.Duration 10s The duration that the acting master will retry refreshing leadership before giving up.
LEADER_ELECTION_RETRY_PERIOD time.Duration 5s The duration that the leader election clients should wait between tries of actions.
MAX_OPERATION_TIME time.Duration 30s The maximum time a workflow operation is allowed to run for before re-queuing the workflow onto the work queue.
OFFLOAD_NODE_STATUS_TTL time.Duration 5m The TTL to delete the offloaded node status. Currently only used for testing.
OPERATION_DURATION_METRIC_BUCKET_COUNT int 6 The number of buckets to collect the metric for the operation duration.
POD_NAMES string v2 Whether to have pod names contain the template name (v2) or be the node id (v1) - should be set the same for Argo Server.
RECENTLY_STARTED_POD_DURATION time.Duration 10s The duration of a pod before the pod is considered to be recently started.
RECENTLY_DELETED_POD_DURATION time.Duration 2m The duration of a pod before the pod is considered to be recently deleted.
RETRY_BACKOFF_DURATION time.Duration 10ms The retry back-off duration when retrying API calls.
RETRY_BACKOFF_FACTOR float 2.0 The retry back-off factor when retrying API calls.
RETRY_BACKOFF_STEPS int 5 The retry back-off steps when retrying API calls.
RETRY_HOST_NAME_LABEL_KEY string kubernetes.io/hostname The label key for host name used when retrying templates.
TRANSIENT_ERROR_PATTERN string "" The regular expression that represents additional patterns for transient errors.
WF_DEL_PROPAGATION_POLICY string "" The deletion propagation policy for workflows.
WORKFLOW_GC_PERIOD time.Duration 5m The periodicity for GC of workflows.
SEMAPHORE_NOTIFY_DELAY time.Duration 1s Tuning Delay when notifying semaphore waiters about availability in the semaphore
WATCH_CONTROLLER_SEMAPHORE_CONFIGMAPS bool true Whether to watch the Controller's ConfigMap and semaphore ConfigMaps for run-time changes. When disabled, the Controller will only read these ConfigMaps once and will have to be manually restarted to pick up new changes.
SKIP_WORKFLOW_DURATION_ESTIMATION bool false Whether to lookup resource usage from prior workflows to estimate usage for new workflows.

CLI parameters of the Controller can be specified as environment variables with the ARGO_ prefix. For example:

workflow-controller --managed-namespace=argo

Can be expressed as:

ARGO_MANAGED_NAMESPACE=argo workflow-controller

You can set environment variables for the Controller Deployment's container spec like the following:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: workflow-controller
spec:
  selector:
    matchLabels:
      app: workflow-controller
  template:
    metadata:
      labels:
        app: workflow-controller
    spec:
      containers:
        - env:
            - name: WORKFLOW_GC_PERIOD
              value: 30s

Executor

Name Type Default Description
ARGO_DEBUG_PAUSE_AFTER bool false Enable Debug Pause after step execution
ARGO_DEBUG_PAUSE_BEFORE bool false Enable Debug Pause before step execution
EXECUTOR_RETRY_BACKOFF_DURATION time.Duration 1s The retry back-off duration when the workflow executor performs retries.
EXECUTOR_RETRY_BACKOFF_FACTOR float 1.6 The retry back-off factor when the workflow executor performs retries.
EXECUTOR_RETRY_BACKOFF_JITTER float 0.5 The retry back-off jitter when the workflow executor performs retries.
EXECUTOR_RETRY_BACKOFF_STEPS int 5 The retry back-off steps when the workflow executor performs retries.
REMOVE_LOCAL_ART_PATH bool false Whether to remove local artifacts.
RESOURCE_STATE_CHECK_INTERVAL time.Duration 5s The time interval between resource status checks against the specified success and failure conditions.
WAIT_CONTAINER_STATUS_CHECK_INTERVAL time.Duration 5s The time interval for wait container to check whether the containers have completed.

You can set environment variables for the Executor in your workflow-controller-configmap like the following:

apiVersion: v1
kind: ConfigMap
metadata:
  name: workflow-controller-configmap
data:
  config: |
    executor:
      env:
      - name: RESOURCE_STATE_CHECK_INTERVAL
        value: 3s

Argo Server

Name Type Default Description
ARGO_ARTIFACT_SERVER bool true Enable Workflow Archive endpoints
ARGO_PPROF bool false Enable pprof endpoints
ARGO_SERVER_METRICS_AUTH bool true Enable auth on the /metrics endpoint
DISABLE_VALUE_LIST_RETRIEVAL_KEY_PATTERN string "" Disable the retrieval of the list of label values for keys based on this regular expression.
FIRST_TIME_USER_MODAL bool true Show this modal.
FEEDBACK_MODAL bool true Show this modal.
GRPC_MESSAGE_SIZE string 104857600 Use different GRPC Max message size for Server (supporting huge workflows).
IP_KEY_FUNC_HEADERS string "" List of comma separated request headers containing IPs to use for rate limiting. For example, "X-Forwarded-For,X-Real-IP". By default, uses the request's remote IP address.
NEW_VERSION_MODAL bool true Show this modal.
POD_NAMES string v2 Whether to have pod names contain the template name (v2) or be the node id (v1) - should be set the same for Controller
SSO_DELEGATE_RBAC_TO_NAMESPACE bool false Enable SSO RBAC Namespace Delegation

CLI parameters of the Server can be specified as environment variables with the ARGO_ prefix. For example:

argo server --managed-namespace=argo

Can be expressed as:

ARGO_MANAGED_NAMESPACE=argo argo server

You can set environment variables for the Server Deployment's container spec like the following:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: argo-server
spec:
  selector:
    matchLabels:
      app: argo-server
  template:
    metadata:
      labels:
        app: argo-server
    spec:
      containers:
        - args:
            - server
          image: argoproj/argocli:latest
          name: argo-server
          env:
            - name: GRPC_MESSAGE_SIZE
              value: "209715200"
          ports:
          # ...

Have a question?

Search on GitHub Discussions and Slack.