Skip to main content

Helm Values Reference

The Stoker operator is installed via Helm:

helm install stoker oci://ghcr.io/ia-eknorr/charts/stoker-operator \
-n stoker-system --create-namespace

All Values

KeyTypeDefaultDescription
replicaCountint1Number of controller replicas. Only one replica holds the leader lock at a time; additional replicas provide fast failover.
image.repositorystringghcr.io/ia-eknorr/stoker-operatorImage repository for the controller manager.
image.tagstring""Image tag. Defaults to the chart's appVersion if empty.
image.pullPolicystringIfNotPresentImage pull policy.
imagePullSecretslist[]Credentials for private container registries.
nameOverridestring""Override the chart name used in resource names.
fullnameOverridestring""Override the full release name.
agentImage.repositorystringghcr.io/ia-eknorr/stoker-agentImage repository for the sync agent sidecar.
agentImage.tagstring""Agent image tag. Defaults to the chart's appVersion if empty.
leaderElection.enabledbooltrueEnable leader election. Disable only for single-replica dev setups.
resources.requests.cpustring10mController CPU request.
resources.requests.memorystring64MiController memory request.
resources.limits.cpustring500mController CPU limit.
resources.limits.memorystring128MiController memory limit.
nodeSelectorobject{}Node selector labels for the controller pod.
tolerationslist[]Tolerations for scheduling on tainted nodes.
podAnnotationsobject{}Additional annotations to add to the controller pod.
podLabelsobject{}Additional labels to add to the controller pod.
affinityobject{}Affinity rules for the controller pod.
controller.logDevModestring"false"Enable zap Development mode for the controller logger. Development mode disables V-level filtering and uses console-friendly output. Set to "true" only for local development.

cert-manager

KeyTypeDefaultDescription
certManager.enabledbooltrueCreate a self-signed Issuer and Certificate for webhook TLS. Requires cert-manager.

Metrics & Monitoring

KeyTypeDefaultDescription
metrics.enabledbooltrueEnable the metrics Service.
metrics.service.typestringClusterIPService type for the metrics endpoint.
metrics.service.portint8443Port the metrics service listens on.
serviceMonitor.enabledboolfalseCreate a Prometheus ServiceMonitor for the controller. Requires prometheus-operator CRDs.
serviceMonitor.labelsobject{}Additional labels for the ServiceMonitor (e.g. for Prometheus selector matching).
serviceMonitor.intervalstring""Scrape interval. Falls back to the Prometheus default if empty.
serviceMonitor.scrapeTimeoutstring""Scrape timeout. Falls back to the Prometheus default if empty.
podMonitor.enabledboolfalseCreate a PodMonitor for agent sidecar metrics. Requires prometheus-operator CRDs.
podMonitor.labelsobject{}Additional labels for the PodMonitor.
podMonitor.intervalstring""Scrape interval for agent metrics.
podMonitor.scrapeTimeoutstring""Scrape timeout for agent metrics.
grafanaDashboard.enabledboolfalseCreate a ConfigMap containing Grafana dashboards (fleet overview + CR detail). Enable when using the k8s-sidecar for auto-discovery.
grafanaDashboard.namespacestring""Namespace for the dashboard ConfigMap. Defaults to the release namespace. Set to your Grafana namespace if the sidecar only watches a specific namespace.
grafanaDashboard.labelsobject{}Additional labels for the dashboard ConfigMap. Override if your sidecar uses a label other than grafana_dashboard: "1".
grafanaDashboard.annotationsobject{}Annotations for the dashboard ConfigMap.
networkPolicy.enabledboolfalseCreate a NetworkPolicy restricting ingress to the metrics port.

See the Monitoring guide for details on available metrics and dashboard setup.

Sidecar Injection Webhook

KeyTypeDefaultDescription
webhook.enabledbooltrueEnable the MutatingWebhookConfiguration.
webhook.portint9443Webhook server port on the controller container.
webhook.namespaceSelector.requireLabelboolfalseRequire stoker.io/injection=enabled label on namespaces for injection. When false, injection works in all namespaces except kube-system and kube-node-lease.

The webhook injects the agent sidecar into pods with annotation stoker.io/inject: "true". By default, injection works in all namespaces except kube-system and kube-node-lease. Set webhook.namespaceSelector.requireLabel=true to require the stoker.io/injection=enabled namespace label.

Agent RBAC

KeyTypeDefaultDescription
rbac.autoBindAgent.enabledbooltrueAutomatically create RoleBindings for the agent sidecar in namespaces where GatewaySync CRs exist. The controller discovers ServiceAccounts from gateway pods and binds them to the stoker-agent ClusterRole. Disable for environments that manage RBAC externally.

Push Receiver (Webhook)

KeyTypeDefaultDescription
webhookReceiver.enabledboolfalseEnable the webhook receiver HTTP server and its Service. When disabled, the controller does not start the receiver.
webhookReceiver.portint9444Port for the inbound git webhook receiver (when enabled).
webhookReceiver.hmac.secretstring""HMAC secret value for X-Hub-Signature-256 validation. Ignored if secretRef is set.
webhookReceiver.hmac.secretRef.namestring""Name of an existing Secret containing the HMAC key.
webhookReceiver.hmac.secretRef.keystringwebhook-secretKey within the HMAC Secret.
webhookReceiver.token.secretstring""Static bearer token for Authorization: Bearer validation. Ignored if secretRef is set.
webhookReceiver.token.secretRef.namestring""Name of an existing Secret containing the bearer token.
webhookReceiver.token.secretRef.keystringwebhook-tokenKey within the token Secret.
webhookReceiver.ingress.enabledboolfalseCreate an Ingress resource for the webhook receiver.
webhookReceiver.ingress.ingressClassNamestring""Ingress class name (e.g. nginx, traefik, alb). Uses cluster default when empty.
webhookReceiver.ingress.annotationsobject{}Annotations for the Ingress resource (ingress controller config, cert-manager, etc.).
webhookReceiver.ingress.hostslist[]List of {host, paths[]} entries. Each path requires path and pathType.
webhookReceiver.ingress.tlslist[]TLS configuration — list of {secretName, hosts[]} entries.

The push receiver accepts POST /webhook/{namespace}/{crName} and auto-detects payload format from GitHub releases, ArgoCD notifications, Kargo promotions, or generic {"ref": "..."} bodies. If both HMAC and bearer token are configured, either method can authorize a request.

warning

When enabled without any auth, any client that can reach the endpoint can trigger a reconcile. Configure hmac (GitHub-style) or token (bearer token, for Kargo and other CI/CD systems) for production use.