Skip to Content
Unified docs shell with shared Classifyre tokens and acid-green highlight accents.
DeploymentKubernetes

Kubernetes Deployment

The official Classifyre Helm chart deploys the API, web UI, database migrations, and CLI scan jobs to any Kubernetes cluster. It is the recommended path for production workloads.

Supports

  • k3s, K3d, kind, EKS, GKE, AKS, and any conformant cluster
  • External PostgreSQL, embedded single-pod PostgreSQL, or CloudNativePG
  • Horizontal autoscaling (HPA) for API and web deployments
  • OCI Helm registry — no helm repo add needed

Prerequisites

  • Kubernetes ≥ 1.26
  • Helm ≥ 3.8
  • An ingress controller (nginx is the default ingress.className)
  • A PostgreSQL 14+ database (or use the embedded option for demos)

Images

All images are published to GHCR alongside each release.

ComponentImage
API (NestJS backend)ghcr.io/andrebanandre/unstructured/api
Web (Next.js frontend)ghcr.io/andrebanandre/unstructured/web
CLI (Python scan worker)ghcr.io/andrebanandre/unstructured/cli

Available tags

Every GitHub release publishes the following tags simultaneously:

TagExampleMeaningRecommended for
{major}.{minor}.{patch}0.1.2Exact releaseProduction
{major}.{minor}0.1Latest patch in 0.1.xOpt-in to patches
{major}0Latest minor in 0.xNot recommended
latest-Latest stable releaseDemos / quick evals
main-Latest commit on mainCI / development

All images are multi-arch: linux/amd64 + linux/arm64.

When you install the chart at a specific version and leave image tags empty, the chart defaults every image to its own appVersion automatically — no manual tag management needed.

# Pull a specific version
docker pull ghcr.io/andrebanandre/unstructured/api:0.1.8

Helm Chart

The chart is published as an OCI artifact:

oci://ghcr.io/andrebanandre/unstructured/charts/classifyre

Helm 3.8+ supports OCI natively, so there is no helm repo add step.

# Inspect available versions
helm show chart oci://ghcr.io/andrebanandre/unstructured/charts/classifyre
 
# Pull chart locally to inspect values before installing
helm pull oci://ghcr.io/andrebanandre/unstructured/charts/classifyre --version 0.1.8 --untar

Quick start

Create a namespace

kubectl create namespace classifyre

Install the chart

helm install classifyre \
  oci://ghcr.io/andrebanandre/unstructured/charts/classifyre \
  --namespace classifyre \
  --version 0.1.8 \
  --set postgres.mode=embedded \
  --set postgres.embedded.password=changeme \
  --set ingress.host=classifyre.local

Helm uses the chart appVersion (0.1.8) as the image tag automatically — no extra --set needed.

Verify rollout

kubectl -n classifyre rollout status deployment/classifyre-api
kubectl -n classifyre rollout status deployment/classifyre-web

Open the UI

Add classifyre.local to your /etc/hosts pointing at the cluster IP, then open http://classifyre.local in your browser.

The embedded PostgreSQL option uses a single pod with a ReadWriteOnce PVC. It has no replication or automated backups. Use it for local dev and demos only.


Encryption key

Classifyre encrypts connector credentials (API tokens, passwords) at rest using CLASSIFYRE_MASKED_CONFIG_KEY.

By default the chart auto-generates a 32-character key on first install and stores it in a Kubernetes Secret. Subsequent helm upgrade runs look up the existing secret and reuse the same key — so credentials stay readable across upgrades.

Do not delete the secret. If the secret is deleted, the key is lost and all stored connector credentials become permanently unreadable. You must re-enter them.

To supply your own key (useful when migrating from Docker or another cluster):

api:
  maskedConfigEncryption:
    value: "your-exactly-32-character-key-here"
    autoGenerate: false

Or reference an existing Kubernetes Secret:

api:
  maskedConfigEncryption:
    existingSecret: "my-classifyre-secrets"
    secretKey: CLASSIFYRE_MASKED_CONFIG_KEY
    autoGenerate: false

Database migrations

Migrations run automatically as an init container in each API pod on every startup. You never need to run them manually. The init container uses the same image as the API and runs:

npx prisma migrate deploy

This is idempotent — if migrations are already applied, the init container exits immediately and the API starts normally.


Ingress

The chart creates three ingress rules on a single host using the nginx ingress controller:

PathTarget
/Web UI
/api/*REST API
/socket.io/*WebSocket

The default class is nginx. Change it with:

ingress:
  className: traefik   # or any other installed controller

TLS

Add cert-manager annotations to get automatic certificates:

ingress:
  host: classifyre.example.com
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  tls:
    - secretName: classifyre-tls
      hosts:
        - classifyre.example.com

Upgrading

# Pull the latest chart information
helm show chart oci://ghcr.io/andrebanandre/unstructured/charts/classifyre --version 0.2.0
 
# Upgrade in place — migrations run automatically
helm upgrade classifyre \
  oci://ghcr.io/andrebanandre/unstructured/charts/classifyre \
  --namespace classifyre \
  --version 0.2.0 \
  -f values-prod.yaml

The upgrade is rolling — pods are replaced one at a time. The API and web deployments each have a minAvailable: 1 PodDisruptionBudget so at least one pod stays up during the rollout.


Scaling

Horizontal autoscaling is enabled by default for both the API and web deployments:

api:
  autoscaling:
    enabled: true
    minReplicas: 2
    maxReplicas: 10
    targetCPUUtilizationPercentage: 70

CLI scan jobs are ephemeral Kubernetes Jobs — they scale naturally since each scan spawns its own job and the cluster schedules them as capacity allows. Tune their resources with api.cliJobs.resources.


Storage

The chart provisions three PVCs by default.

PVCPurposeDefault size
runner-logsScan execution logs (mounted in API pods)20 Gi
uv-cachePython package cache shared across CLI jobs20 Gi
playwright-cachePlaywright browser binaries for CLI jobs10 Gi

All three require ReadWriteMany access mode. On clusters without a ReadWriteMany storage class (e.g. bare k3s), set a compatible storageClassName or point them at an existing NFS/CSI-backed PVC:

api:
  runnerLogs:
    storageClassName: nfs-client
  cliJobs:
    uvCache:
      storageClassName: nfs-client
    playwrightCache:
      storageClassName: nfs-client

Uninstalling

helm uninstall classifyre --namespace classifyre

PVCs are not deleted automatically. To remove them:

kubectl -n classifyre delete pvc --all

Deleting PVCs removes the encryption key secret and all scan logs. Export anything you need first.


All values

KeyTypeDefaultDescription
api.affinityobject{}API scheduling: affinity rules. When empty, default soft anti-affinity is applied.
api.argslist[]Optional API container args override.
api.autoscaling.enabledbooltrueEnable HPA for API deployment.
api.autoscaling.maxReplicasint10Maximum API replicas under HPA.
api.autoscaling.minReplicasint2Minimum API replicas under HPA.
api.autoscaling.targetCPUUtilizationPercentageint70Target average CPU utilization for API HPA.
api.autoscaling.targetMemoryUtilizationPercentageint75Target average memory utilization for API HPA.
api.cliJobs.activeDeadlineSecondsint3600Max runtime per CLI job (seconds).
api.cliJobs.affinityobject{}CLI job scheduling: affinity rules.
api.cliJobs.autoInstallOptionalDepsbooltrueAllow CLI to auto-install optional detector dependencies.
api.cliJobs.automountServiceAccountTokenboolfalseMount service account token into CLI job pods.
api.cliJobs.backoffLimitint2Retry attempts for failed CLI jobs.
api.cliJobs.cleanupPolicystring"always"Cleanup policy for CLI jobs: none, failed, or always.
api.cliJobs.containerSecurityContextobject{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":false}Container security context for CLI job container.
api.cliJobs.enabledbooltrueEnable Kubernetes-backed CLI jobs.
api.cliJobs.extraEnvlist[]Additional environment variables for CLI jobs (list of EnvVar objects; supports secretKeyRef etc.).
api.cliJobs.image.pullPolicystring"IfNotPresent"CLI job image pull policy.
api.cliJobs.image.repositorystring"ghcr.io/andrebanandre/unstructured/cli"CLI job image repository.
api.cliJobs.image.tagstring""CLI job image tag. Defaults to the chart appVersion when empty.
api.cliJobs.namespacestring""Namespace used for CLI jobs. Empty means release namespace.
api.cliJobs.nodeSelectorobject{}CLI job scheduling: node selector.
api.cliJobs.playwrightCache.accessModeslist["ReadWriteMany"]Access modes for Playwright cache PVC.
api.cliJobs.playwrightCache.enabledbooltrueEnable shared PVC for Playwright browser cache.
api.cliJobs.playwrightCache.existingClaimstring""Existing PVC name for Playwright cache. Empty creates a new PVC.
api.cliJobs.playwrightCache.mountPathstring"/ms-playwright"Mount path for Playwright cache.
api.cliJobs.playwrightCache.sizestring"10Gi"Requested size for Playwright cache PVC.
api.cliJobs.playwrightCache.storageClassNamestring""Storage class for Playwright cache PVC.
api.cliJobs.podSecurityContextobject{"fsGroup":10001,"runAsGroup":10001,"runAsNonRoot":true,"runAsUser":10001,"seccompProfile":{"type":"RuntimeDefault"}}Pod security context for CLI job pods.
api.cliJobs.pollIntervalMsint2000Poll interval while waiting for job completion (milliseconds).
api.cliJobs.priorityClassNamestring""CLI job priority class.
api.cliJobs.resources.limitsobject{"cpu":"2","memory":"4Gi"}CLI job resource limits.
api.cliJobs.resources.requestsobject{"cpu":"500m","memory":"1Gi"}CLI job resource requests.
api.cliJobs.serviceAccountNamestring""Service account for CLI jobs. Empty uses API service account.
api.cliJobs.tolerationslist[]CLI job scheduling: tolerations.
api.cliJobs.ttlSecondsAfterFinishedint1800TTL for completed CLI jobs (seconds). Ignored when cleanup policy deletes jobs immediately.
api.cliJobs.uvCache.accessModeslist["ReadWriteMany"]Access modes for uv cache PVC.
api.cliJobs.uvCache.enabledbooltrueEnable shared PVC for uv cache.
api.cliJobs.uvCache.existingClaimstring""Existing PVC name for uv cache. Empty creates a new PVC.
api.cliJobs.uvCache.mountPathstring"/cache/uv"Mount path for uv cache in CLI job container.
api.cliJobs.uvCache.sizestring"20Gi"Requested size for uv cache PVC.
api.cliJobs.uvCache.storageClassNamestring""Storage class for uv cache PVC.
api.cliJobs.waitTimeoutSecondsint3900Max time API waits for job completion (seconds).
api.cliJobs.workDirstring"/app/apps/cli"Working directory inside CLI job container.
api.commandlist[]Optional API container command override.
api.containerSecurityContext.allowPrivilegeEscalationboolfalseDisallow privilege escalation in API container.
api.containerSecurityContext.capabilities.droplist["ALL"]Drop all Linux capabilities in API container.
api.containerSecurityContext.readOnlyRootFilesystemboolfalsepath the app writes to at runtime (e.g. /tmp, log dirs). Hardening step for advanced users.
api.env.ENVIRONMENTstring"kubernetes"Execution mode used by API.
api.env.NODE_ENVstring"production"Runtime environment passed to API container.
api.env.PORTstring"8000"API listen port.
api.env.RUNNER_LOGS_DIRstring"/var/lib/classifyre/runner-logs"Filesystem directory for runner execution logs.
api.env.TEMP_DIRstring"/tmp"Temporary directory used by API.
api.extraEnvlist[]Extra environment variables for API container.
api.extraEnvFromlist[]Extra envFrom sources for API container.
api.image.pullPolicystring"IfNotPresent"API image pull policy.
api.image.repositorystring"ghcr.io/andrebanandre/unstructured/api"API container image repository.
api.image.tagstring""API container image tag. Defaults to the chart appVersion when empty.
api.lifecycleobject{"preStop":{"exec":{"command":["/bin/sh","-c","sleep 5"]}}}during rolling updates by giving kube-proxy time to drain in-flight requests.
api.livenessProbe.enabledbooltrueEnable API liveness probe.
api.livenessProbe.failureThresholdint6API liveness failure threshold.
api.livenessProbe.initialDelaySecondsint30Delay before starting API liveness checks.
api.livenessProbe.pathstring"/ping"HTTP path for API liveness probe.
api.livenessProbe.periodSecondsint15API liveness check period.
api.livenessProbe.timeoutSecondsint5API liveness check timeout.
api.maskedConfigEncryption.autoGeneratebooltrueGenerated key is persisted via Kubernetes Secret lookup across upgrades.
api.maskedConfigEncryption.existingSecretstring""When set, chart will not create or manage this secret.
api.maskedConfigEncryption.secretKeystring"CLASSIFYRE_MASKED_CONFIG_KEY"Secret key name used for CLASSIFYRE_MASKED_CONFIG_KEY.
api.maskedConfigEncryption.secretNamestring""Secret name created by this chart when existingSecret is empty.
api.maskedConfigEncryption.valuestring""Must be exactly 32 chars when using raw string format.
api.migration.containerSecurityContextobject{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}}Override with runAsUser/runAsNonRoot: false if the migration toolchain requires root (e.g. Prisma on Bun).
api.migration.enabledbooltrueRun database migrations as an API init container.
api.migration.scriptstring"npx prisma migrate deploy --schema /app/api/prisma/schema.prisma"Migration command/script.
api.nodeSelectorobject{}API scheduling: node selector.
api.pdb.enabledbooltrueEnable PodDisruptionBudget for API deployment.
api.pdb.minAvailableint1API minimum pods available during disruptions.
api.podAnnotationsobject{}Additional pod annotations for API deployment.
api.podLabelsobject{}Additional pod labels for API deployment.
api.podSecurityContext.fsGroupint10001API fsGroup for mounted volumes.
api.podSecurityContext.runAsGroupint10001API pod group ID.
api.podSecurityContext.runAsNonRootbooltrueRequire API container to run as non-root.
api.podSecurityContext.runAsUserint10001API pod user ID.
api.podSecurityContext.seccompProfile.typestring"RuntimeDefault"API pod seccomp profile type.
api.priorityClassNamestring""API pod priority class.
api.readinessProbe.enabledbooltrueEnable API readiness probe.
api.readinessProbe.failureThresholdint6API readiness failure threshold.
api.readinessProbe.initialDelaySecondsint10Delay before starting API readiness checks.
api.readinessProbe.pathstring"/ping"HTTP path for API readiness probe.
api.readinessProbe.periodSecondsint10API readiness check period.
api.readinessProbe.timeoutSecondsint3API readiness check timeout.
api.replicaCountint2Number of API replicas when autoscaling is disabled.
api.resources.limitsobject{"cpu":"1","memory":"1Gi"}API resource limits.
api.resources.requestsobject{"cpu":"250m","memory":"512Mi"}API resource requests.
api.runnerLogs.accessModeslist["ReadWriteMany"]Access modes for runner logs PVC.
api.runnerLogs.enabledbooltrueEnable PVC-backed storage for runner logs.
api.runnerLogs.existingClaimstring""Existing PVC name for runner logs. Empty creates a new PVC.
api.runnerLogs.mountPathstring"/var/lib/classifyre/runner-logs"Mount path for runner logs directory.
api.runnerLogs.sizestring"20Gi"Requested size for runner logs PVC.
api.runnerLogs.storageClassNamestring""Storage class for runner logs PVC.
api.service.annotationsobject{}Additional API service annotations.
api.service.nodePortstringnilFixed nodePort when type is NodePort or LoadBalancer.
api.service.portint8000API service port.
api.service.typestring"ClusterIP"API service type.
api.startCommandstring"node dist/src/main.js"Default API process command when command/args are not set.
api.startupProbe.enabledbooltrueEnable API startup probe.
api.startupProbe.failureThresholdint30API startup failure threshold.
api.startupProbe.pathstring"/ping"HTTP path for API startup probe.
api.startupProbe.periodSecondsint10API startup check period.
api.startupProbe.timeoutSecondsint3API startup check timeout.
api.strategyobject{}API deployment strategy override.
api.terminationGracePeriodSecondsstringnilAPI pod termination grace period (seconds). Set to null to use Kubernetes default.
api.tolerationslist[]API scheduling: tolerations.
api.topologySpreadConstraintslist[]API topology spread constraints. When empty, a default hostname spread is applied.
api.workingDirstring""Working directory used by default shell command.
commonAnnotationsobject{}Additional annotations added to supported chart resources.
commonLabelsobject{}Additional labels added to all chart resources.
frontend.affinityobject{}Web scheduling: affinity rules. When empty, default soft anti-affinity is applied.
frontend.argslist[]Optional web container args override.
frontend.autoscaling.enabledbooltrueEnable HPA for web deployment.
frontend.autoscaling.maxReplicasint10Maximum web replicas under HPA.
frontend.autoscaling.minReplicasint2Minimum web replicas under HPA.
frontend.autoscaling.targetCPUUtilizationPercentageint70Target average CPU utilization for web HPA.
frontend.autoscaling.targetMemoryUtilizationPercentageint75Target average memory utilization for web HPA.
frontend.commandlist[]Optional web container command override.
frontend.containerSecurityContext.allowPrivilegeEscalationboolfalseDisallow privilege escalation in web container.
frontend.containerSecurityContext.capabilities.droplist["ALL"]Drop all Linux capabilities in web container.
frontend.containerSecurityContext.readOnlyRootFilesystemboolfalsepath the app writes to at runtime. Hardening step for advanced users.
frontend.env.HOSTNAMEstring"0.0.0.0"Bind address for Next.js standalone server.
frontend.env.NEXT_PUBLIC_API_URLstring"/api"Browser-side API base path.
frontend.env.NODE_ENVstring"production"Runtime environment passed to web container.
frontend.env.PORTstring"3100"Web listen port.
frontend.extraEnvlist[]Extra environment variables for web container.
frontend.extraEnvFromlist[]Extra envFrom sources for web container.
frontend.image.pullPolicystring"IfNotPresent"Web image pull policy.
frontend.image.repositorystring"ghcr.io/andrebanandre/unstructured/web"Web container image repository.
frontend.image.tagstring""Web container image tag. Defaults to the chart appVersion when empty.
frontend.lifecycleobject{"preStop":{"exec":{"command":["/bin/sh","-c","sleep 5"]}}}Lifecycle hooks for the web container.
frontend.livenessProbe.enabledbooltrueEnable web liveness probe.
frontend.livenessProbe.failureThresholdint6Web liveness failure threshold.
frontend.livenessProbe.initialDelaySecondsint30Delay before starting web liveness checks.
frontend.livenessProbe.pathstring"/"HTTP path for web liveness probe.
frontend.livenessProbe.periodSecondsint15Web liveness check period.
frontend.livenessProbe.timeoutSecondsint5Web liveness check timeout.
frontend.nodeSelectorobject{}Web scheduling: node selector.
frontend.pdb.enabledbooltrueEnable PodDisruptionBudget for web deployment.
frontend.pdb.minAvailableint1Web minimum pods available during disruptions.
frontend.podAnnotationsobject{}Additional pod annotations for web deployment.
frontend.podLabelsobject{}Additional pod labels for web deployment.
frontend.podSecurityContext.fsGroupint10001Web fsGroup for mounted volumes.
frontend.podSecurityContext.runAsGroupint10001Web pod group ID.
frontend.podSecurityContext.runAsNonRootbooltrueRequire web container to run as non-root.
frontend.podSecurityContext.runAsUserint10001Web pod user ID.
frontend.podSecurityContext.seccompProfile.typestring"RuntimeDefault"Web pod seccomp profile type.
frontend.priorityClassNamestring""Web pod priority class.
frontend.readinessProbe.enabledbooltrueEnable web readiness probe.
frontend.readinessProbe.failureThresholdint6Web readiness failure threshold.
frontend.readinessProbe.initialDelaySecondsint10Delay before starting web readiness checks.
frontend.readinessProbe.pathstring"/"HTTP path for web readiness probe.
frontend.readinessProbe.periodSecondsint10Web readiness check period.
frontend.readinessProbe.timeoutSecondsint3Web readiness check timeout.
frontend.replicaCountint2Number of web replicas when autoscaling is disabled.
frontend.resources.limitsobject{"cpu":"1","memory":"1Gi"}Web resource limits.
frontend.resources.requestsobject{"cpu":"200m","memory":"384Mi"}Web resource requests.
frontend.service.annotationsobject{}Additional web service annotations.
frontend.service.nodePortstringnilFixed nodePort when type is NodePort or LoadBalancer.
frontend.service.portint3100Web service port.
frontend.service.typestring"ClusterIP"Web service type.
frontend.startCommandstring"node /app/apps/web/server.js"Default web process command when command/args are not set.
frontend.startupProbe.enabledbooltrueEnable web startup probe.
frontend.startupProbe.failureThresholdint30Web startup failure threshold.
frontend.startupProbe.pathstring"/"HTTP path for web startup probe.
frontend.startupProbe.periodSecondsint10Web startup check period.
frontend.startupProbe.timeoutSecondsint3Web startup check timeout.
frontend.strategyobject{}Web deployment strategy override.
frontend.terminationGracePeriodSecondsstringnilWeb pod termination grace period (seconds). Set to null to use Kubernetes default.
frontend.tolerationslist[]Web scheduling: tolerations.
frontend.topologySpreadConstraintslist[]Web topology spread constraints. When empty, a default hostname spread is applied.
fullnameOverridestring""Fully override release-based resource names.
imagePullSecretslist[]Image pull secrets for all workloads.
ingress.annotationsobject{}Shared ingress annotations (nginx-specific rewrite annotations are applied to API ingress automatically).
ingress.classNamestring"nginx"Ingress class name.
ingress.enabledboolfalseEnable ingress resources for web/api/socket routes.
ingress.hoststring""Hostname for all ingress rules. Required when ingress.enabled=true.
ingress.tlslist[]TLS configuration for ingress.
nameOverridestring""Override chart name used in resource names.
networkPolicy.enabledboolfalseEnable network policies for API and web pods.
networkPolicy.ingressNamespaceSelectorobject{}Namespace selector allowed to reach API/web when network policy is enabled.
postgres.cnpg.appPasswordstring""Application password for generated CNPG secret.
postgres.cnpg.bootstrapSecretNamestring""Existing CNPG app secret name.
postgres.cnpg.clusterNamestring"classifyre-cnpg"CloudNativePG cluster resource name.
postgres.cnpg.databasestring"classifyre"Database bootstrapped by CNPG.
postgres.cnpg.imageNamestring"ghcr.io/cloudnative-pg/postgresql:17"CNPG Postgres image.
postgres.cnpg.instancesint3Number of CNPG instances.
postgres.cnpg.storage.sizestring"20Gi"CNPG storage size per instance.
postgres.cnpg.storage.storageClassNamestring""CNPG storage class name.
postgres.cnpg.superuserSecretNamestring""Existing CNPG superuser secret name.
postgres.cnpg.userstring"classifyre"Owner user bootstrapped by CNPG.
postgres.connection.sslModestring"disable"sslmode used by API when connecting to PostgreSQL (disable, require, verify-ca, verify-full).
postgres.embedded.affinityobject{}Embedded Postgres scheduling: affinity rules.
postgres.embedded.containerSecurityContextobject{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}}Embedded Postgres container security context.
postgres.embedded.databasestring"classifyre"Embedded Postgres database name.
postgres.embedded.existingSecretstring""Existing secret name holding embedded Postgres password.
postgres.embedded.existingSecretPasswordKeystring"password"Secret key name for embedded Postgres password.
postgres.embedded.image.pullPolicystring"IfNotPresent"Embedded Postgres image pull policy.
postgres.embedded.image.repositorystring"postgres"Embedded Postgres image repository.
postgres.embedded.image.tagstring"18"Embedded Postgres image tag.
postgres.embedded.nodeSelectorobject{}Embedded Postgres scheduling: node selector.
postgres.embedded.passwordstring""Embedded Postgres password (required when existingSecret is empty).
postgres.embedded.persistence.accessModeslist["ReadWriteOnce"]Access modes for embedded Postgres PVC.
postgres.embedded.persistence.enabledbooltrueEnable persistent volume for embedded Postgres data.
postgres.embedded.persistence.existingClaimstring""Existing PVC name for embedded Postgres data.
postgres.embedded.persistence.sizestring"20Gi"Requested size for embedded Postgres PVC.
postgres.embedded.persistence.storageClassNamestring""Storage class for embedded Postgres PVC.
postgres.embedded.podAnnotationsobject{}Additional annotations for embedded Postgres pod.
postgres.embedded.podLabelsobject{}Additional labels for embedded Postgres pod.
postgres.embedded.podSecurityContextobject{"fsGroup":999,"runAsGroup":999,"runAsUser":999,"seccompProfile":{"type":"RuntimeDefault"}}Embedded Postgres pod security context.
postgres.embedded.portint5432Embedded Postgres service and container port.
postgres.embedded.priorityClassNamestring""Embedded Postgres pod priority class.
postgres.embedded.resources.limitsobject{"cpu":"1","memory":"1Gi"}Embedded Postgres resource limits.
postgres.embedded.resources.requestsobject{"cpu":"100m","memory":"256Mi"}Embedded Postgres resource requests.
postgres.embedded.service.annotationsobject{}Additional annotations for embedded Postgres service.
postgres.embedded.terminationGracePeriodSecondsstringnilEmbedded Postgres pod termination grace period (seconds). Set to null to use Kubernetes default.
postgres.embedded.tolerationslist[]Embedded Postgres scheduling: tolerations.
postgres.embedded.usernamestring"postgres"Embedded Postgres user name.
postgres.external.databasestring"classifyre"External Postgres database name.
postgres.external.existingSecretstring""Existing secret name for external Postgres credentials.
postgres.external.existingSecretPasswordKeystring"password"Secret key name for external Postgres password.
postgres.external.existingSecretUrlKeystring""Optional secret key containing full DATABASE_URL.
postgres.external.hoststring""External Postgres host.
postgres.external.passwordstring""External Postgres password (required when existingSecret is empty).
postgres.external.portint5432External Postgres port.
postgres.external.sslModestring"disable"Deprecated: use postgres.connection.sslMode instead.
postgres.external.usernamestring"classifyre"External Postgres user name.
postgres.modestring"external"PostgreSQL mode: external, cnpg, or embedded.
priorityClasses.batchNamestring"batch-low-priority"Priority class name for batch workloads.
priorityClasses.batchValueint1000Numeric priority value for batch workloads.
priorityClasses.createboolfalseCreate service and batch priority classes.
priorityClasses.serviceNamestring"service-standard"Priority class name for service workloads.
priorityClasses.serviceValueint10000Numeric priority value for service workloads.
rbac.createbooltrueCreate Role/RoleBinding for API CLI job orchestration.
serviceAccount.annotationsobject{}Extra annotations for the API service account.
serviceAccount.automountbooltrueMount service account token into API pods (required for Kubernetes CLI jobs).
serviceAccount.createbooltrueCreate the API service account.
serviceAccount.namestring""Existing service account name to use when create=false.
Last updated on