144 lines
4.1 KiB
YAML
144 lines
4.1 KiB
YAML
# Chat Switchboard — Helm values
|
|
# helm install switchboard ./chart
|
|
|
|
# ── Images ─────────────────────────────────
|
|
backend:
|
|
image:
|
|
repository: git.gobha.me/xcaliber/chat-switchboard
|
|
tag: "" # defaults to Chart.appVersion
|
|
pullPolicy: IfNotPresent
|
|
replicaCount: 2 # v0.32.0: multi-replica HA
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: "1"
|
|
memory: 1Gi
|
|
port: 8080
|
|
|
|
frontend:
|
|
image:
|
|
repository: git.gobha.me/xcaliber/chat-switchboard-frontend
|
|
tag: "" # defaults to Chart.appVersion
|
|
pullPolicy: IfNotPresent
|
|
replicaCount: 1
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 64Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 256Mi
|
|
port: 80
|
|
|
|
# ── Database ───────────────────────────────
|
|
database:
|
|
# "postgres" or "sqlite"
|
|
driver: postgres
|
|
# For postgres: full DSN or assembled from postgres.* below
|
|
url: ""
|
|
postgres:
|
|
host: postgresql
|
|
port: 5432
|
|
user: switchboard
|
|
password: "" # set via secret
|
|
database: switchboard
|
|
sslmode: disable
|
|
# For sqlite: path inside the container (requires persistence)
|
|
sqlitePath: /data/switchboard.db
|
|
|
|
# ── Core ───────────────────────────────────
|
|
basePath: "" # URL prefix, e.g. "/dev"
|
|
environment: production
|
|
jwtSecret: "" # REQUIRED — set via secret or --set
|
|
encryptionKey: "" # REQUIRED for BYOK — set via secret
|
|
|
|
# ── Admin bootstrap ────────────────────────
|
|
admin:
|
|
username: admin
|
|
password: "" # set via secret
|
|
email: ""
|
|
|
|
# ── Storage ────────────────────────────────
|
|
storage:
|
|
backend: pvc # "pvc" or "s3"
|
|
path: /data/storage
|
|
s3:
|
|
endpoint: ""
|
|
bucket: ""
|
|
region: us-east-1
|
|
accessKey: ""
|
|
secretKey: ""
|
|
prefix: ""
|
|
forcePathStyle: true
|
|
|
|
# ── Persistence (PVC) ─────────────────────
|
|
persistence:
|
|
enabled: true
|
|
storageClass: "" # use cluster default
|
|
size: 10Gi
|
|
accessMode: ReadWriteOnce
|
|
|
|
# ── Ingress ────────────────────────────────
|
|
ingress:
|
|
enabled: true
|
|
className: traefik
|
|
annotations: {}
|
|
host: switchboard.local
|
|
tls:
|
|
enabled: false
|
|
secretName: ""
|
|
# Traefik retry middleware (auto-applied when className=traefik).
|
|
# The Middleware CRD is always created. Set annotateIngress: true to wire
|
|
# it to the ingress. Only enable after confirming the middleware CRD exists
|
|
# (Traefik invalidates the entire router if a referenced middleware is missing).
|
|
retry:
|
|
attempts: 2
|
|
initialInterval: 100ms
|
|
annotateIngress: false
|
|
|
|
# ── Auth ───────────────────────────────────
|
|
auth:
|
|
mode: builtin # builtin | mtls | oidc
|
|
oidc:
|
|
issuerURL: ""
|
|
externalIssuerURL: ""
|
|
clientID: ""
|
|
clientSecret: ""
|
|
redirectURL: ""
|
|
autoActivate: true
|
|
defaultTeam: ""
|
|
defaultRole: user
|
|
rolesClaim: "realm_access.roles"
|
|
groupsClaim: groups
|
|
adminRole: admin
|
|
mtls:
|
|
headerDN: X-SSL-Client-DN
|
|
headerVerify: X-SSL-Client-Verify
|
|
headerFingerprint: X-SSL-Client-Fingerprint
|
|
autoActivate: true
|
|
defaultTeam: ""
|
|
defaultRole: user
|
|
|
|
# ── Tuning ─────────────────────────────────
|
|
sessionExpiryDays: 30
|
|
workflowStaleHours: 72
|
|
providerAutoDisableThreshold: 3
|
|
extraction:
|
|
mode: inline
|
|
concurrency: 3
|
|
workspace:
|
|
indexingEnabled: true
|
|
indexConcurrency: 2
|
|
|
|
# ── CORS ───────────────────────────────────
|
|
corsAllowedOrigins: "*"
|
|
|
|
# ── Existing secret reference ──────────────
|
|
# If set, skips creating a Secret and mounts this one instead.
|
|
existingSecret: ""
|
|
|
|
# ── Image pull secrets ─────────────────────
|
|
imagePullSecrets: []
|