Files
duocthu/infra/helm/medical-chatbot/values.yaml
T

143 lines
3.6 KiB
YAML

nameOverride: ""
fullnameOverride: ""
global:
environment: local
imagePullSecrets: []
serviceAccount:
create: true
name: ""
annotations: {}
secret:
create: true
existingSecret: ""
postgresPassword: duoc_thu
# Set when postgres runs in a different Application/release (the
# data/app split pattern) — overrides the default in-release host.
postgresHost: ""
grafanaAdminPassword: change-me
aiService:
enabled: true
replicaCount: 1
image:
repository: duocthu-ai-service
tag: local
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8000
config:
embeddingProvider: disabled
embeddingDimensions: 1024
evidenceMinimumScore: 0.12
awsRegion: us-east-1
answerProvider: disabled
answerModelId: deepseek.v3.2
rerankEnabled: false
# The Dockerfile bakes the catalog file in at this path; config.py's own
# repo-relative default only resolves inside a full monorepo checkout,
# not this flattened image layout. Matches apps/ai-service/.env.example.
entitiesPath: ./ingestion_data/drug_entities.json
qdrantCollection: duocthu_v1
metricsEnabled: true
otelEnabled: true
otelSampleRatio: 1.0
maxWallClockMs: 40000
maxLlmCallsPerTurn: 8
migration:
enabled: true
resources:
requests: { cpu: 100m, memory: 256Mi }
limits: { cpu: "1", memory: 1Gi }
web:
enabled: true
replicaCount: 1
image:
repository: duocthu-web
tag: local
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 3000
nodePort: null
resources:
requests: { cpu: 50m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
ingress:
enabled: false
className: nginx
annotations: {}
host: duocthu.local
# Additional hostnames served by the same rules as `host`. Used during a
# cutover, when one release must answer to both the old and the new name.
# A host here is routed but gets no certificate unless it also appears in
# `tls` below — see the note in templates/ingress.yaml.
extraHosts: []
tls: []
postgres:
enabled: true
image: postgres:16-alpine
storage: 5Gi
resources:
requests: { cpu: 50m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
qdrant:
enabled: true
# Set when using an external/managed Qdrant; empty uses the bundled Service.
url: ""
image: qdrant/qdrant:v1.19.0
storage: 10Gi
resources:
requests: { cpu: 100m, memory: 256Mi }
limits: { cpu: "1", memory: 1Gi }
observability:
enabled: true
prometheus:
image: prom/prometheus:v3.3.0
retention: 7d
storage: 5Gi
resources:
requests: { cpu: 100m, memory: 256Mi }
limits: { cpu: 500m, memory: 1Gi }
tempo:
image: grafana/tempo:2.7.2
retention: 24h
storage: 5Gi
resources:
requests: { cpu: 100m, memory: 256Mi }
limits: { cpu: 500m, memory: 1Gi }
collector:
image: otel/opentelemetry-collector-contrib:0.123.0
resources:
requests: { cpu: 50m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
grafana:
image: grafana/grafana:11.5.2
service:
type: ClusterIP
port: 3000
nodePort: null
storage: 2Gi
# Anonymous access, when enabled, must stay read-only. `role: Admin` on an
# internet-reachable Grafana exposes the datasource and dashboard APIs to
# anyone; the login form is always available for real admin access.
anonymous:
enabled: false
role: Viewer
resources:
requests: { cpu: 50m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
serviceMonitor:
enabled: false
interval: 15s
additionalLabels: {}