Environment configuration reference#
Both binaries are configured entirely through environment variables (every variable also has a --kebab-case
command-line flag). This page lists every variable the orchestrator and the task-worker
read, its default, and the Helm value that sets it. For the deployment walkthrough see
Thumbnail Service Configuration; for the identity variables in context see
Authenticating with an OpenID Connect Identity Provider.
How configuration is supplied#
Fail-fast startup. A required variable that is missing or malformed stops the process before any listener is bound, with an error naming the variable. Conditionally required variables (the notification settings when consumption is enabled) fail the same way.
Durations accept strings like
250ms,2s, or1h, or a bare integer of milliseconds, exceptSTREAM_TIMEOUT_SECS, which is a whole number of seconds as its name says. Booleans accepttrue/false/1/0, case-insensitively.Endpoints are plaintext. Every gRPC dependency endpoint is reached over plaintext HTTP/2 inside the cluster; a value beginning
https://is refused at startup with an explanation. Supply a scheme-less orhttp://address. TLS terminates at the ingress.Helm mapping. The chart injects these variables from the values listed in the Helm value column; anything not exposed as a value can be added through
thumbnailService.extraVarsorthumbnailWorker.extraVars.
Server environment variables#
Listeners and request handling#
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
|
|
REST listener port. |
|
|
|
gRPC bind address, host and port together. |
|
|
— |
Per-call deadline on the service’s own unary outbound calls: the generate publish and the association-event publish. Deliberately per call rather than on the channel, because the same channel carries the long-lived consume stream. |
|
|
— |
Answer cross-origin REST requests. |
|
|
— |
Comma-separated origins permitted when CORS is enabled. Empty permits none; only |
|
|
— |
Never set in a deployed environment. Makes |
Dependency endpoints#
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
|
|
Storage service gRPC endpoint for |
|
— |
|
Notification Event Consumer API. Required when this process is the assigned, enabled storage-event consumer. |
|
— |
|
Notification Event Aggregation API where |
|
— |
|
Comma-separated storage-container URL prefixes. Each entry becomes one greedy-prefix filter on StorageEventQueue and is an input to the derived queue id. Required for the consumer; blank entries ( |
Event consumer#
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
|
— |
Which role consumes StorageEventQueue: |
|
|
injected as |
Hard off-switch for storage-event consumption, checked before the role. |
|
— |
none — use |
Optional principal identity of the thumbnail writer (the task-worker). When set, |
Stream and redelivery tuning#
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
|
|
Deliveries processed at once. A permit is reserved before a delivery is read, so the loop keeps observing shutdown and token expiry at saturation. |
|
|
|
Per-attempt deadline for durable-queue provisioning calls. Not an idle teardown — a quiet, healthy stream is never rebuilt for silence. |
|
|
|
Ceiling of the reconnect backoff. |
|
|
— |
First reconnect backoff step; doubled per attempt (≥ 1). |
|
|
— |
Doublings before the backoff stops growing ( |
|
|
— |
Transient retries ( |
|
|
— |
Reconnect attempts between repeated health warnings. |
|
|
— |
Grace period for in-flight event tasks when a consume session ends (≥ 1). |
|
|
— |
How long a retryably-failed delivery’s negative acknowledgement is held before it is sent. The broker requeues immediately, so this is the spacing between attempts at the same work. Keep it far inside the broker’s acknowledgement timeout (1800 s observed). |
|
|
— |
Most negative acknowledgements held at once. Past the bound a failure is negatively acknowledged immediately. |
|
|
— |
Consecutive early redeliveries of one delivery key before the consume session is recycled (circuit breaker). |
|
|
— |
Parsed and logged at startup; not enforced by the current release. |
See Storage event consumption for how these values interact.
Storage channel and retries#
Variable |
Default |
Purpose |
|---|---|---|
|
|
Connect deadline for the storage channel. |
|
|
Per-request deadline on the storage channel; also bounds the |
|
|
HTTP/2 keepalive ping interval. Keepalive notices a peer that has gone away; it does not bound a peer that answers and then goes quiet — the request timeout does. |
|
|
How long to wait for a keepalive acknowledgement. |
|
|
TCP keepalive on the storage channel. |
|
|
Attempts for storage metadata reads and writes on |
|
|
First retry delay, doubled per attempt. |
|
|
Retry delay ceiling. |
None of these are Helm values; set them through thumbnailService.extraVars if an environment needs them.
Thumbnail processing defaults#
All seven are required and have no default; the process refuses to start if any is missing or malformed.
The five THUMBNAIL_* processing values are injected whenever a request or event specification omits that field;
THUMBNAIL_SIZES drives fan-out; THUMBNAIL_PATH_TEMPLATE resolves destinations.
Variable |
Helm value |
Purpose |
|---|---|---|
|
|
Template resolved into one exact, absolute output address per generated thumbnail. See Supported variables and Validation at startup. |
|
|
Comma-separated |
|
|
One of |
|
|
One of |
|
|
One of |
|
|
Integer |
|
|
Explicit boolean value ( |
Outbound authentication#
Exactly one mode must be enabled; the process fails at startup if both or neither is. The variables are shared by both binaries. See Authenticating with an OpenID Connect Identity Provider for the flows.
Variable |
Mode |
Helm value |
Purpose |
|---|---|---|---|
|
client credentials |
|
Enable the in-process OAuth 2.0 client-credentials exchange. |
|
client credentials |
|
OAuth 2.0 client (application) id. Required in this mode. |
|
client credentials |
— |
Client secret as a literal. Exactly one of |
|
client credentials |
|
Path to a file holding the client secret; how the chart mounts a Kubernetes |
|
client credentials |
|
OAuth 2.0 scope sent with the exchange, typically |
|
client credentials |
|
OIDC discovery document URL; |
|
client credentials |
|
Optional extra HTTP headers on the token request, comma-separated |
|
client credentials |
|
Optional extra form parameters on the token request, comma-separated |
|
access-token file |
|
Enable the sidecar-provisioned token file. |
|
access-token file |
|
Path of the JSON token file. Required in this mode. |
|
access-token file |
|
How often the file is re-read looking for a rotation. |
Observability#
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
|
|
Log filter: a level ( |
|
— |
|
OTLP/gRPC collector for trace spans. Injected only when |
|
— |
|
OTLP/gRPC collector for metrics, independent of the tracing endpoint. Injected only when |
|
|
(fixed), |
Head-based sampling; child spans — including the worker’s conversion spans — inherit the producer’s decision. |
|
unset; |
|
Resource attributes on every span and metric. Injected, together with |
|
|
injected unconditionally |
Logs go to stdout as JSON for the cluster’s log collector. |
|
— |
— |
Full kill switch: disables traces and metrics and suppresses stdout logging. To disable OTLP export only, use the per-signal |
Logs are always structured JSON; there is no plain-text toggle, and no logs-only way to suppress them short of
OTEL_SDK_DISABLED, which also disables traces and metrics. See
Configuring Observability with the Helm Chart.
Worker environment variables#
The task-worker reads no THUMBNAIL_* specification settings and no path template: every processing field
arrives on the omni.thumbnail.generate message, so a local default could only drift from what the publisher
resolved. It configures where to talk, how hard to work, and how much decode it will accept. The outbound
authentication variables above apply unchanged.
Variable |
Default |
Helm value |
Purpose |
|---|---|---|---|
|
— (required) |
|
Event Consumer API hosting WorkerEventQueue. |
|
— (required) |
|
Same prefix set as the orchestrator; filters |
|
— (required) |
|
Storage service for source reads and thumbnail writes. |
|
— (required) |
derived: |
Where the worker calls |
|
|
|
Conversions in flight per replica (≥ 1). Each additional slot costs |
|
|
|
Delay before a retryably-failed delivery’s negative acknowledgement is sent; the spacing between attempts at the same work. Values below |
|
|
— |
Most negative acknowledgements held at once (≥ 1). |
|
|
— |
Consecutive early redeliveries of one delivery key before the stream is recycled (≥ 1). |
|
|
|
Deadline on every outbound call — storage read, storage write, and |
|
|
|
Grace period for in-flight conversions after |
|
|
|
Whole seconds to wait for the consume stream to be accepted; also the provisioning deadline. |
|
|
— |
First reconnect backoff step (≥ 1). |
|
|
|
Reconnect backoff ceiling (≥ 1). |
|
|
|
Largest source the worker downloads and decodes. |
|
|
|
Largest decoded image the worker allocates for. |
|
|
|
Largest peak allocation one resample may reach; the figure the pod’s memory limit is sized against. See Conversion bounds. |
|
|
|
Probe and |
|
|
— |
Parsed for parity with the orchestrator; the worker does not act on it. |
Helm values to environment variables#
The table below is the reverse index: which Deployment each root value reaches.
Helm value |
Environment variable |
orchestrator |
worker |
|---|---|---|---|
|
|
yes |
yes |
|
|
when consumer enabled |
yes |
|
|
when consumer enabled |
yes |
|
|
yes |
— |
|
|
when enabled |
— |
|
|
yes |
— |
|
|
yes |
yes |
|
|
yes |
yes |
|
|
yes |
— |
|
|
yes |
— |
|
|
yes |
— |
|
|
— |
yes |
|
|
— |
yes |
|
the outbound authentication variables |
yes |
yes |
|
|
yes |
yes |
|
|
yes |
yes |
|
any |
yes |
yes |
thumbnailWorker.enabled (default true) is a Deployment-level toggle, not an environment variable, so it has
no row above: setting it false skips rendering the worker Deployment (and its HPA, ServiceAccount, and
Secret) entirely rather than changing anything either binary reads. See
Thumbnail Service Configuration for the
orchestrator-only install path.
See also#
Thumbnail Service Configuration — the Helm values these variables are rendered from, and the render-time checks.
Authenticating with an OpenID Connect Identity Provider — the two outbound authentication modes in detail.
Thumbnail destination path template — what
THUMBNAIL_PATH_TEMPLATEaccepts and how it is validated.Storage event consumption — how the stream and redelivery settings behave at runtime.
Thumbnail generation worker — what the worker’s bounds and concurrency settings control.