Helm Values & CLI Flags Reference
Reloader is configured through Helm values, which the chart translates into CLI flags on the Reloader process. This page documents every available setting, its CLI flag equivalent, default value, and what it does.
How to apply settings
Values file (recommended for production):
# values.yaml
reloader:
autoReloadAll: true
logLevel: debug
helm install reloader stakater/reloader -f values.yaml
Inline --set:
helm install reloader stakater/reloader \
--set reloader.autoReloadAll=true \
--set reloader.logLevel=debug
Core behavior
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.autoReloadAll |
--auto-reload-all |
bool |
false |
Treat every workload as if it has reloader.stakater.com/auto: "true". Individual workloads can still opt out by setting the annotation to "false". |
reloader.reloadOnCreate |
--reload-on-create |
bool |
false |
Also trigger reloads when a ConfigMap or Secret is created, not just updated. |
reloader.reloadOnDelete |
--reload-on-delete |
bool |
false |
Also trigger reloads when a ConfigMap or Secret is deleted. |
reloader.reloadStrategy |
--reload-strategy |
string |
env-vars |
How Reloader forces a rolling update. See Reload strategies. |
reloader.webhookUrl |
--webhook-url |
string |
"" |
Send an http request to this URL on change instead of restarting workloads. When set, no workloads are restarted. |
reloader.isArgoRollouts |
--is-Argo-Rollouts |
bool |
false |
Enable support for Argo Rollout resources. |
reloader.isOpenshift |
(Helm only) |
bool |
false |
Enable OpenShift DeploymentConfig support. Reloader auto-detects OpenShift at startup; only set this if auto-detection fails. |
reloader.enableCSIIntegration |
--enable-csi-integration |
bool |
false |
Enable watching SecretProviderClass resources via the Secrets Store CSI Driver. Required for file-based CSI secret mounts. |
Reload strategies
| Value |
Behaviour |
env-vars (default) |
Patches a dummy environment variable onto the pod template to force a rolling update. |
annotations |
Adds reloader.stakater.com/last-reloaded-from to the pod template. Produces less drift when using GitOps tools (Argo CD, Flux). |
Namespace and resource filtering
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.watchGlobally |
(Helm only) |
bool |
true |
When false, Reloader only watches the namespace it is deployed in. When true, it watches all namespaces (subject to namespaceSelector and ignoreNamespaces). |
reloader.namespaceSelector |
--namespace-selector |
string |
"" |
Comma-separated key=value label selectors. Only namespaces matching all selectors are watched. Example: environment=production. |
reloader.ignoreNamespaces |
--namespaces-to-ignore |
string |
"" |
Comma-separated list of namespace names to exclude entirely. |
reloader.resourceLabelSelector |
--resource-label-selector |
string |
"" |
Comma-separated key=value label selectors. Only ConfigMaps and Secrets matching all selectors are watched. |
reloader.ignoreSecrets |
--resources-to-ignore=secrets |
bool |
false |
Ignore all Secrets cluster-wide. Reloader will not watch or react to any Secret changes. |
reloader.ignoreConfigMaps |
--resources-to-ignore=configMaps |
bool |
false |
Ignore all ConfigMaps cluster-wide. |
reloader.ignoreJobs |
--ignored-workload-types=jobs |
bool |
false |
Skip Job workloads — changes to referenced ConfigMaps/Secrets will not trigger Job restarts. |
reloader.ignoreCronJobs |
--ignored-workload-types=cronjobs |
bool |
false |
Skip CronJob workloads. |
When both namespaceSelector and resourceLabelSelector are set, both conditions must match for a resource to be watched.
High availability
Running more than one Reloader replica without HA enabled causes duplicate reloads. Enable HA to use leader election so only one replica acts at a time.
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.enableHA |
--enable-ha |
bool |
false |
Enable leader election via a Kubernetes Lease lock. Required when running multiple replicas. |
reloader.syncAfterRestart |
--sync-after-restart |
bool |
false |
When a new leader is elected, it re-evaluates all tracked workloads and triggers any missed reloads. Requires reloadOnCreate: true. |
reloader.deployment.replicas |
(Helm only) |
int |
1 |
Number of Reloader replicas. Set to 2 or more only when enableHA: true. |
Minimum HA configuration:
reloader:
enableHA: true
reloadOnCreate: true
syncAfterRestart: true
deployment:
replicas: 2
HA uses a Lease object named stakater-reloader-lock in the Reloader namespace. The pod must have POD_NAME and POD_NAMESPACE environment variables set (the Helm chart sets these automatically).
Logging
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.logLevel |
--log-level |
string |
info |
Log verbosity. Valid values: trace, debug, info, warning, error, fatal, panic. |
reloader.logFormat |
--log-format |
string |
"" |
Log format. Empty string produces structured text output. Set to json for machine-readable logs. |
Metrics and monitoring
Reloader exposes a Prometheus metrics endpoint on :9090/metrics.
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.enableMetricsByNamespace |
(Helm only) |
bool |
false |
Expose a per-namespace reload counter. May produce high cardinality in clusters with many namespaces. |
reloader.podMonitor.enabled |
(Helm only) |
bool |
false |
Create a PodMonitor resource for Prometheus Operator scraping (recommended). |
reloader.serviceMonitor.enabled |
(Helm only) |
bool |
false |
Create a ServiceMonitor resource. Deprecated — use podMonitor instead. Requires a Service to be configured. |
Enable PodMonitor:
reloader:
podMonitor:
enabled: true
labels:
release: prometheus # match your Prometheus Operator selector
Custom annotation keys
All annotation key names can be overridden cluster-wide. This is useful when the default reloader.stakater.com/* keys conflict with another tool, or when your organisation enforces a custom annotation domain.
| Helm value |
CLI flag |
Default annotation key |
reloader.custom_annotations.auto |
--auto-annotation |
reloader.stakater.com/auto |
reloader.custom_annotations.configmap |
--configmap-annotation |
configmap.reloader.stakater.com/reload |
reloader.custom_annotations.secret |
--secret-annotation |
secret.reloader.stakater.com/reload |
reloader.custom_annotations.configmap_auto |
--configmap-auto-annotation |
configmap.reloader.stakater.com/auto |
reloader.custom_annotations.secret_auto |
--secret-auto-annotation |
secret.reloader.stakater.com/auto |
reloader.custom_annotations.search |
--auto-search-annotation |
reloader.stakater.com/search |
reloader.custom_annotations.match |
--search-match-annotation |
reloader.stakater.com/match |
reloader.custom_annotations.pausePeriod |
--pause-deployment-annotation |
deployment.reloader.stakater.com/pause-period |
reloader.custom_annotations.pauseTime |
--pause-deployment-time-annotation |
deployment.reloader.stakater.com/paused-at |
When any custom annotation key is configured, only that key is recognised — the default key is no longer active.
Deployment configuration
Resources
No resource requests or limits are set by default. Set them explicitly for production:
reloader:
deployment:
resources:
requests:
cpu: 10m
memory: 128Mi
limits:
cpu: 150m
memory: 512Mi
Scheduling
| Helm value |
Type |
Default |
Description |
reloader.deployment.nodeSelector |
object |
{} |
Node selector labels for pod scheduling. |
reloader.deployment.affinity |
object |
{} |
Affinity and anti-affinity rules. |
reloader.deployment.tolerations |
list |
[] |
Tolerations for tainted nodes. |
reloader.deployment.topologySpreadConstraints |
list |
[] |
Spread pods across zones or nodes. |
reloader.deployment.priorityClassName |
string |
"" |
PriorityClass name for the pod. |
Security context
| Helm value |
Type |
Default |
Description |
reloader.deployment.securityContext |
object |
runAsNonRoot: true, runAsUser: 65534, seccompProfile: RuntimeDefault |
Pod-level security context. |
reloader.deployment.containerSecurityContext |
object |
{} |
Container-level security context. |
reloader.readOnlyRootFileSystem |
bool |
false |
Mount the container root filesystem as read-only. |
OpenShift note: On OpenShift 4.13.3+, set reloader.deployment.securityContext.runAsUser: null to allow OpenShift to assign the UID dynamically.
Other deployment options
| Helm value |
Type |
Default |
Description |
reloader.deployment.replicas |
int |
1 |
Number of replicas. Only increase when enableHA: true. |
reloader.deployment.revisionHistoryLimit |
int |
2 |
Number of old ReplicaSets to retain. |
reloader.deployment.annotations |
object |
{} |
Annotations on the Deployment resource. |
reloader.deployment.pod.annotations |
object |
{} |
Annotations on the pod template. |
reloader.deployment.dnsConfig |
object |
{} |
Custom DNS configuration for pods. |
reloader.deployment.volumeMounts |
list |
[] |
Additional volume mounts. |
reloader.deployment.volumes |
list |
[] |
Additional volumes. |
reloader.deployment.gomaxprocsOverride |
string |
"" |
Override GOMAXPROCS. Set to "0" for Go runtime default. |
reloader.deployment.gomemlimitOverride |
string |
"" |
Override GOMEMLIMIT. Set to "0" for Go runtime default. |
Environment variables
Pass additional environment variables to the Reloader container. Used primarily for webhook alerting.
reloader:
deployment:
env:
open:
ALERT_ON_RELOAD: "true"
ALERT_SINK: "slack"
ALERT_WEBHOOK_URL: "https://hooks.slack.com/..."
ALERT_ADDITIONAL_INFO: "prod-cluster"
secret:
# read from the default reloader Secret by key name
ALERT_WEBHOOK_URL: alert_webhook_key
existing:
my-existing-secret:
ALERT_WEBHOOK_URL: webhook_url_key
RBAC and service account
| Helm value |
Type |
Default |
Description |
reloader.rbac.enabled |
bool |
true |
Create ClusterRole and ClusterRoleBinding granting Reloader read access to ConfigMaps, Secrets, Deployments, etc. |
reloader.serviceAccount.create |
bool |
true |
Create a dedicated ServiceAccount for Reloader. |
reloader.serviceAccount.name |
string |
"" |
Name of the ServiceAccount. If empty, a name is generated from the Helm release. |
reloader.serviceAccount.annotations |
object |
{} |
Annotations on the ServiceAccount — useful for IRSA (AWS) or Workload Identity (GCP). |
Image
| Helm value |
Type |
Default |
Description |
image.repository |
string |
ghcr.io/stakater/reloader |
Container image repository. Override to ghcr.io/stakater/reloader-enterprise for the Enterprise image. |
image.tag |
string |
v1.4.16 |
Image tag. |
image.pullPolicy |
string |
IfNotPresent |
Kubernetes image pull policy. |
global.imagePullSecrets |
list |
[] |
Image pull secrets for private registries. |
global.imageRegistry |
string |
"" |
Global image registry prefix. |
Advanced
Pod Disruption Budget
reloader:
podDisruptionBudget:
enabled: true
minAvailable: 1
| Helm value |
Type |
Default |
Description |
reloader.podDisruptionBudget.enabled |
bool |
false |
Create a PodDisruptionBudget. |
reloader.podDisruptionBudget.minAvailable |
int |
— |
Minimum available replicas during disruption. |
reloader.podDisruptionBudget.maxUnavailable |
int |
— |
Maximum unavailable replicas. If both are set, only maxUnavailable is used. |
Vertical Pod Autoscaler
reloader:
verticalPodAutoscaler:
enabled: true
updatePolicy:
updateMode: Auto
| Helm value |
Type |
Default |
Description |
reloader.verticalPodAutoscaler.enabled |
bool |
false |
Create a VerticalPodAutoscaler resource. Requires VPA CRDs installed. |
reloader.verticalPodAutoscaler.updatePolicy.updateMode |
string |
Auto |
VPA update mode: Off, Initial, Recreate, or Auto. |
reloader.verticalPodAutoscaler.controlledResources |
list |
[] |
Resources VPA can adjust. Defaults to CPU and memory. |
reloader.verticalPodAutoscaler.minAllowed |
object |
{} |
Minimum resource bounds. |
reloader.verticalPodAutoscaler.maxAllowed |
object |
{} |
Maximum resource bounds. |
Network Policy
reloader:
netpol:
enabled: true
from:
- podSelector:
matchLabels:
app.kubernetes.io/name: prometheus
| Helm value |
Type |
Default |
Description |
reloader.netpol.enabled |
bool |
false |
Create a NetworkPolicy to restrict traffic to Reloader pods. |
reloader.netpol.from |
list |
[] |
Ingress rules — pods/namespaces allowed to reach Reloader (e.g. Prometheus for scraping). |
reloader.netpol.to |
list |
[] |
Egress rules. |
Profiling (pprof)
| Helm value |
CLI flag |
Type |
Default |
Description |
reloader.enablePProf |
--enable-pprof |
bool |
false |
Start a pprof http server for Go runtime profiling. |
reloader.pprofAddr |
--pprof-addr |
string |
:6060 |
Address for the pprof server. |