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 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. |
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. |
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. |
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. |
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 |
|---|---|---|---|
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 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 |
|---|---|---|---|
ALLOWED_LINK_PROTOCOL |
string |
http,https |
List of comma separated protocols allowed for the Links feature |
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 |
BASE_HREF |
string |
/ |
Base HREF of the Server |
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). |
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:
# ...