Environment Variables¶
This document outlines the set of environment variables that can be used to customize the behavior at different levels.
⚠️ 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 pprofendpoints | 
| 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-protectionfinalizer 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. | 
| 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. | 
| 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. | 
| GRPC_MESSAGE_SIZE | string | Use different GRPC Max message size for Argo server deployment (supporting huge workflows). | |
| 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. | 
| HEALTHZ_LIST_LIMIT | int | 200 | The maximum number of responses to return for a list call on workflows for liveness check. | 
| 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. | 
| 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. | 
| 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 | 
CLI parameters of the argo-server and workflow-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 variable for the argo-server deployment, for example:
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:
          ..
          ...
          ....
You can set the environment variables for controller in controller'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 | 
|---|---|---|---|
| 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 the environment variables for executor by customizing executor container's environment variables in your controller's config-map 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 | 
|---|---|---|---|
| FIRST_TIME_USER_MODAL | bool | true | Show this modal. | 
| FEEDBACK_MODAL | bool | true | Show this modal. | 
| 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 |