Skip to content

Helm Chart Values

When installing Precept into Kubernetes with Helm, override the chart values below. For a local preview-style stack, start from deploy/helm/precept-server/values-local.yaml.

Precept-specific values

Valuetyperequireddefaultnotes
nameOverridestringno""Set to server so the release <name> produces a Service named <name>-server.
initDb.enabledbooleannofalseRun the init-db Job (post-install hook) to create the app user and database.
initDb.imagestringnopostgres:17-alpineImage for the init-db Job (includes psql).
credentials.createbooleannofalseCreate a Secret with POSTGRES_*, connection URLs, and credentials.env.
credentials.existingSecretstringno""Use an existing Secret instead of credentials.create. Must include DATABASE_URL, PRECEPT_STORAGE_CONNECTION, and POSTGRES_* keys.
credentials.postgresPasswordstringwhen create""Application database password.
credentials.envobjectno{}Shared variables (PRECEPT_HTTP_BASE_URL, PRECEPT_TASK_QUEUE, OTEL_*, …) injected into the server from the credentials Secret.
database.hoststringwhen external""Postgres host for init-db; defaults to the bundled subchart service when postgresql.enabled.
database.sslModestringnorequireAppended to DATABASE_URL / PRECEPT_STORAGE_CONNECTION. Use disable for local bundled Postgres.
postgresql.enabledbooleannofalseBundled PostgreSQL (local dev substitute for an external shared host).
worker.enabledbooleannotrueDeploy worker with node dist/temporal/worker.mjs.
migrate.noCheckOrderbooleannotruePass --no-check-order to node-pg-migrate.
temporal.enabledbooleannofalseBundled Temporal stack (Elasticsearch + auto-setup). Enabled in values-local.yaml; cloud previews use a shared frontend instead.
localDev.enabledbooleannofalseMount localDev.secretsJwe as /config/secrets.jwe.json (local clusters only).
server.envobjectno{}Extra server environment variables (e.g. PRECEPT_MODULE_PATHS, Auth0 settings).
worker.envobjectno{}Extra worker environment variables.
resourcesobjectnorequests: 100m/256Mi, limits: 1000m/512MiCPU and memory requests/limits for the server pod. Override per environment as needed.
worker.resourcesobjectnorequests: 250m/512Mi, limits: 2000m/1GiCPU and memory requests/limits for the worker pod. Higher defaults reflect Temporal workflow execution and DuckDB ingestion workloads.
securityContextobjectnorunAsNonRoot: true, runAsUser: 1001, allowPrivilegeEscalation: falseContainer-level security context applied to both the server and worker pods. The image runs as system user precept (UID 1001); Kubernetes enforces this independently at admission.
startupProbeobjectnofailureThreshold: 30, periodSeconds: 10Startup probe on GET /health. Gives the pod up to 5 minutes to become healthy before liveness kicks in, preventing premature restarts during slow starts.
podDisruptionBudget.enabledbooleannotrueCreate a PodDisruptionBudget for the server deployment.
podDisruptionBudget.minAvailableintegerno1Minimum server pods that must remain available during node drains or rolling updates.
worker.podDisruptionBudget.enabledbooleannotrueCreate a PodDisruptionBudget for the worker deployment.
worker.podDisruptionBudget.minAvailableintegerno1Minimum worker pods that must remain available during disruptions.
autoscaling.enabledbooleannofalseEnable HPA for the server deployment. Requires the Kubernetes Metrics Server to be installed on the cluster. Disabled by default — opt in explicitly.
autoscaling.minReplicasintegerno1Minimum server replicas.
autoscaling.maxReplicasintegerno5Maximum server replicas. Override upward for high-traffic deployments.
autoscaling.targetCPUUtilizationPercentageintegerno70Scale out when average CPU across server pods exceeds this percentage.
autoscaling.targetMemoryUtilizationPercentageintegerno80Scale out when average memory across server pods exceeds this percentage. Acts as a leading signal before GC pressure degrades response times.
autoscaling.behaviorobjectnoscale-down 5 min window, scale-up 2 pods/minHPA scaling behaviour. Default prevents flapping after short traffic spikes by requiring 5 minutes of sustained low utilisation before scaling in.
networkPolicy.enabledbooleannofalseCreate NetworkPolicy resources for the server and worker pods. Requires a CNI plugin that enforces NetworkPolicy (e.g. Calico, Cilium). Has no effect on clusters using Flannel or other non-enforcing CNIs.
networkPolicy.ingressNamespaceslistno[]Namespaces allowed to reach the server on port 8080 (e.g. ingress-nginx). When empty, all sources are permitted. Same-namespace pods are always allowed.
image.tagstringnochart appVersionImage tag for ghcr.io/precept-sh/server. values-local.yaml uses latest.
imagePullSecretslistno[]Required for private GHCR pulls; values-local.yaml uses ghcr-credentials.

Published chart defaults

sh
helm show values deploy/helm/precept-server
# or
helm show values oci://ghcr.io/precept-sh/helm/precept-server