Skip to content

Helm chart values

Reference for deploy/helm/spinup/values.yaml.

Top-level

KeyDefaultPurpose
dnsNamespinup.example.comPublic DNS used by the Istio VirtualService for external routing.

Functions namespace

KeyDefaultPurpose
functionsNamespace.namespinup-functionsNamespace for function pods, SpinApps, and build Jobs.
functionsNamespace.createtrueLet the chart create the namespace. Set false if you provision it externally.

SpinAppExecutor

KeyDefaultPurpose
spinAppExecutor.createtrueCreate the executor in functionsNamespace. Set to false when the cluster already has one there (platform-managed SpinKube install) — SpinApps still reference spinAppExecutor.name.
spinAppExecutor.namecontainerd-shim-spinExecutor name (referenced by every SpinApp we apply).
spinAppExecutor.runtimeClassNamewasmtime-spin-v2RuntimeClass the executor asks the kubelet for.
spinAppExecutor.installDefaultCACertstrueMount the K8s cluster's CA bundle so guest code can reach TLS hosts.

Observability

KeyDefaultPurpose
observability.otelCollector.enabledfalseDeploy an OpenTelemetry Collector alongside the control plane.
observability.otelCollector.image.repositoryotel/opentelemetry-collector-contribCollector image.
observability.otelCollector.image.tag0.111.0Collector version.
observability.otelCollector.resources{cpu 100m/1, mem 256Mi/512Mi}Standard resource block.

When enabled, the SpinAppExecutor also gets its otel.exporter_otlp_endpoint pointed at the collector's cluster-DNS Service (spinup-otel-collector.{ns}.svc.cluster.local:4318).

Worker

KeyDefaultPurpose
worker.image.tag0.1.0Worker version.
worker.replicas1Number of worker pods. Scale up under load.
worker.resources{cpu 100m/2, mem 128Mi/2Gi}Standard resource block.
worker.controlPlaneToken(empty)Bearer token the worker uses to authenticate against /api/v1/worker-config. Unset when the CP runs with dev-skip.

When enabled, SPINUP_WORKER_URL on the CP is set to the worker Service DNS automatically.

OCI registry

KeyDefaultPurpose
oci.modeexternalexternal (bring your own) or zot (chart deploys Zot).
oci.registryUrl(empty)Push prefix. Required when mode=external. Auto-computed for mode=zot.
oci.auth.existingSecret(empty)Name of a dockerconfigjson Secret to mount into build Jobs.
oci.auth.inline.enabledfalseLet the chart create the Secret from an inline JSON string.
oci.auth.inline.dockerconfigjson(empty)Plain JSON string; the chart base64-encodes it. Do not commit this to git.

Zot sub-config (when oci.mode=zot)

KeyDefaultPurpose
oci.zot.image.repositoryghcr.io/project-zot/zot-linux-amd64Zot image (pick amd64 or arm64).
oci.zot.image.tagv2.1.2Zot version.
oci.zot.service.namezotService name.
oci.zot.service.port5000Registry port.
oci.zot.persistence.enabledtruePVC for storage.
oci.zot.persistence.size5GiPVC size.
oci.zot.persistence.storageClassName(empty)Storage class.

Control plane

KeyDefaultPurpose
controlPlane.image.repositoryghcr.io/emdzej/spinup-control-planeCP image.
controlPlane.image.tag0.1.0CP version.
controlPlane.replicas1Number of CP pods.
controlPlane.resources{cpu 100m/500m, mem 128Mi/512Mi}Standard resource block.

OIDC

KeyDefaultPurpose
oidc.issuerUrl(empty)OIDC discovery URL. Required.
oidc.clientId(empty)Application client / audience. Required.
oidc.audience(= clientId)Override the expected audience.
oidc.redirectUrl(= https://{dnsName}/auth/callback)Fully-qualified callback URL registered with the IdP. Must match byte-for-byte.
oidc.clientSecret.existingSecret(empty)Name of a Secret holding the confidential-client secret. Preferred.
oidc.clientSecret.secretKeyclient-secretKey inside existingSecret.
oidc.clientSecret.value(empty)Inline client secret (dev only — never commit real values). Ignored when existingSecret is set.

Authorization

KeyDefaultPurpose
authz.requiredRoles[]Any-of match against the ID token roles claim. Empty list = every authenticated user is allowed. Configure the IdP to project the assigned role into a top-level roles array — Keycloak: client role mapper; Entra: App Role; Auth0: post-login action.

Database

KeyDefaultPurpose
db.driversqlitesqlite or postgres.
db.sqlite.dsn/var/lib/spinup/spinup.dbPath inside the CP pod.
db.sqlite.persistence.enabledtrueCreate a PVC for the SQLite file.
db.sqlite.persistence.size2GiPVC size.
db.postgres.secretName(empty)Name of a Secret with the DSN.
db.postgres.secretKeydsnKey inside the Secret.

Istio ingress

KeyDefaultPurpose
istio.enabledtrueInstall a Gateway + VirtualService.
istio.gatewaySelector.istioingressgatewayMatch label on the Istio Gateway.
istio.tls.credentialNamespinup-gw-credentialName of a cert-manager-issued cert Secret.

Disable this and install your own Ingress / native Gateway API if you don't run Istio.

Alpha — API and chart values may change.