Skip to main content

Helm values

Generated against chart presponsieve 0.1.0. The commented source of truth is charts/presponsievelite/values.yaml.

Image

ValueDefaultNotes
image.repositoryghcr.io/m-a-m-a-ai/presponsievelite
image.tag""Falls back to .Chart.AppVersion
image.pullPolicyIfNotPresent
imagePullSecrets[]

Workload

ValueDefaultNotes
replicaCount1Two is the production floor
nameOverride""
fullnameOverride""Set this to presponsieve. Otherwise resources render as <release>-<chart>
resources.requests.cpu250m
resources.requests.memory512Mi
resources.limits.cpu1
resources.limits.memory1Gi
autoscaling.enabledfalse
autoscaling.minReplicas1
autoscaling.maxReplicas5
autoscaling.targetCPUUtilizationPercentage75
podAnnotations{}
podSecurityContextnon-root, uid 10001
securityContextread-only rootfs, no caps

Service account

ValueDefaultNotes
serviceAccount.createtrue
serviceAccount.name""Defaults to the full name
serviceAccount.annotations{}Workload identity goes here

Service and ingress

ValueDefaultNotes
service.typeClusterIP
service.port80
service.targetPort8080
service.annotations{}cloud.google.com/neg for GKE
ingress.enabledtrue
ingress.classNamenginxgce, alb, etc.
ingress.hostpresponsieve.local
ingress.annotationsbody size and timeouts
ingress.tls.enabledfalse
ingress.tls.secretNamepresponsieve-tls
ingress.managedCertificate.enabledfalseGKE only
ingress.managedCertificate.name""Defaults to <fullname>-cert
ingress.managedCertificate.domains[]Defaults to [ingress.host]

Probes

All three hit GET /healthz.

ValueDefaultNotes
probes.startup.failureThreshold30~150s budget
probes.startup.periodSeconds5
probes.liveness.periodSeconds15
probes.liveness.failureThreshold690s of headroom
probes.liveness.timeoutSeconds5
probes.readiness.periodSeconds10
probes.readiness.failureThreshold3
probes.readiness.timeoutSeconds3
probes.readiness.path/healthz

Application config

Non-secret. Rendered into a ConfigMap.

KeyDefaultNotes
OPENAI_RESPONSES_MODELgpt-4o-miniRendering only
SIMULATION_SAMPLES1000Local computation
AUTH_COOKIE_SECURE1
S3_FORCE_PATH_STYLEtruefalse for real S3
S3_PREFIXreports
STORAGE_BACKENDunsetgcs for native GCS
GCS_SIGNER_SERVICE_ACCOUNTunsetRequired for GCS signed URLs
KMS_BACKENDk8sk8s, aws, gcp, vault
LICENSE_PUBLIC_KEY""Blank disables the gate
LICENSE_ENFORCEMENTenforceenforce, warn, disabled
LICENSE_VALIDATION_URL""Blank means fully offline. https://presponsieve.ai/validate enables revocation polling
LICENSE_REFRESH_INTERVAL_HOURS12How often to poll the validation URL
TRANSCRIPTION_BACKENDdisabledgcp enables Speech-to-Text
SPEECH_LOCATIONglobal
SPEECH_LANGUAGE_CODESen-US
SPEECH_MAX_SPEAKERS6

Application secrets

ValueNotes
app.existingSecretUse this. Names a secret you manage
app.secrets.OPENAI_API_KEYOptional. Rendering and chat
app.secrets.MODEL_CONTENT_KEYRequired unless the license carries it
app.secrets.LICENSE_KEYRequired when the gate is on
app.secrets.APP_KEKRequired when KMS_BACKEND=k8s
app.secrets.INDEX_PEPPERBlind index HMAC
app.secrets.AUTH_TOKEN_PEPPERToken hashing HMAC
app.secrets.SESSION_SECRETRequired for >1 replica

Setting values under app.secrets puts plaintext in your values file. Use app.existingSecret.

Database

ValueDefaultNotes
postgresql.enabledtrueWires to <release>-postgresql. Does not install it
postgresql.auth.usernamepresponsieve
postgresql.auth.passwordchangeme-postgres
postgresql.auth.databasepresponsieve
externalDatabase.url""Full SQLAlchemy DSN
cloudSqlProxy.enabledfalseTakes precedence over both above
cloudSqlProxy.imagecloud-sql-proxy:2.14.1
cloudSqlProxy.instanceConnectionName""PROJECT:REGION:INSTANCE
cloudSqlProxy.port5432
cloudSqlProxy.autoIamAuthntrue
cloudSqlProxy.iamUser""GSA email, suffix stripped
cloudSqlProxy.dbNamepresponsieve

Object storage

ValueDefaultNotes
minio.enabledtrueWires to <release>-minio. Does not install it
minio.defaultBucketspresponsieve-artifacts
externalObjectStore.endpointUrl""
externalObjectStore.bucketpresponsieve-artifacts
externalObjectStore.regionus-east-1
externalObjectStore.accessKeyId""Leave empty with IRSA or WI
externalObjectStore.secretAccessKey""

Identity

ValueDefaultNotes
keycloak.enabledtrueDerives the issuer from <release>-keycloak
oidc.issuerUrl""
oidc.clientIdpresponsieve
oidc.clientSecret""Prefer the secret

Jobs

ValueDefaultNotes
migration.enabledtruePre-install and pre-upgrade hook
backfill.enabledfalseOne-off encryption backfill. Idempotent

GKE

Off by default so the chart stays portable.

ValueDefaultNotes
gke.iap.enabledfalseRequires ingress.className: gce
gke.iap.oauthClientSecretName""Secret with client_id, client_secret
gke.backendConfig.enabledfalseRendered when IAP is on
gke.backendConfig.timeoutSec600GCLB default is 30
gke.backendConfig.drainingTimeoutSec60