- cluster/applications/litellm: multi-source Application (oci litellm-helm 1.106.1), values, ExternalSecrets (1Password wdw-labs), HTTPRoute, ExternalName services for fantasmic/wishes, namespace - gateway: https-skyliner listener + skyliner.wdw-labs.cloud certificate, ReferenceGrant for litellm namespace - cert-manager: add wdw-labs.cloud to ClusterIssuer dnsZones - external-dns: add wdw-labs.cloud zone (Technitium RFC2136) - onepassword-connect: add wdw-labs vault to ClusterSecretStore Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0118eUSMQitZMHN7qaCvynA3
171 lines
5.9 KiB
YAML
171 lines
5.9 KiB
YAML
# ============================================================================
|
|
# LiteLLM Helm values — overrides for oci://ghcr.io/berriai/litellm-helm 1.106.1
|
|
# Cluster: fastpass (Talos). Host: skyliner.wdw-labs.cloud. Wave 8.
|
|
# Upstream defaults for reference: values.upstream.yaml (same dir; not applied).
|
|
# ============================================================================
|
|
|
|
replicaCount: 1
|
|
|
|
image:
|
|
repository: ghcr.io/berriai/litellm
|
|
# Empty tag => chart appVersion (1.106.1). Version is pinned via chart version
|
|
# in application.yaml; bump both together.
|
|
tag: ""
|
|
pullPolicy: IfNotPresent
|
|
|
|
# Exposure is via Gateway API HTTPRoute (httproute.yaml), not the chart ingress.
|
|
ingress:
|
|
enabled: false
|
|
|
|
service:
|
|
type: ClusterIP
|
|
port: 4000
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 250m
|
|
memory: 512Mi
|
|
limits:
|
|
memory: 2Gi
|
|
|
|
# --- Secrets -----------------------------------------------------------------
|
|
# Master key from ExternalSecret litellm-credentials (key: master-key) -> PROXY_MASTER_KEY
|
|
masterkeySecretName: litellm-credentials
|
|
masterkeySecretKey: master-key
|
|
|
|
# All keys of litellm-env exported as env vars (LITELLM_SALT_KEY, ILLUMINATIONS_/FANTASMIC_/WISHES_API_KEY)
|
|
# (includes DATABASE_URL: the Deployment template ignores db.useExisting and would
|
|
# otherwise use the chart's placeholder DB password; envFrom supplies the real URL.
|
|
# Not extraEnvVars: the chart also injects those into the migration Job -> duplicate env.)
|
|
environmentSecrets:
|
|
- litellm-env
|
|
|
|
# --- Database: bundled Bitnami PostgreSQL ------------------------------------
|
|
db:
|
|
# Bundled Postgres is still deployed (deployStandalone), but the app and the
|
|
# migration job are pointed at it as an "existing" DB so credentials come from
|
|
# litellm-credentials (ExternalSecret) instead of the chart's placeholder secret.
|
|
deployStandalone: true
|
|
useExisting: true
|
|
endpoint: litellm-postgresql
|
|
database: litellm
|
|
secret:
|
|
name: litellm-credentials
|
|
usernameKey: username
|
|
passwordKey: password
|
|
|
|
postgresql:
|
|
architecture: standalone
|
|
auth:
|
|
username: litellm
|
|
database: litellm
|
|
existingSecret: litellm-credentials
|
|
secretKeys:
|
|
adminPasswordKey: postgres-password
|
|
userPasswordKey: password
|
|
primary:
|
|
persistence:
|
|
enabled: true
|
|
storageClass: px-fa-direct-access # Portworx direct access to FlashArray (as openviking)
|
|
size: 10Gi
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
memory: 1Gi
|
|
|
|
redis:
|
|
enabled: false
|
|
|
|
# Schema migrations. The chart's default is an ArgoCD PreSync hook, which runs
|
|
# BEFORE Postgres/ExternalSecrets exist and would block first install. Instead run
|
|
# it as a Sync-phase hook ordered by wave: ExternalSecrets (-1) -> Postgres (0)
|
|
# -> migration Job (1) -> Deployment (2).
|
|
migrationJob:
|
|
enabled: true
|
|
hooks:
|
|
argocd:
|
|
enabled: false
|
|
helm:
|
|
enabled: false
|
|
jobAnnotations:
|
|
argocd.argoproj.io/hook: Sync
|
|
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
|
|
deploymentAnnotations:
|
|
argocd.argoproj.io/sync-wave: "2"
|
|
|
|
logLevel: INFO
|
|
|
|
# --- Prometheus ----------------------------------------------------------------
|
|
serviceMonitor:
|
|
enabled: true
|
|
labels:
|
|
release: monitoring # kube-prometheus-stack selector (matches Harbor/external-dns)
|
|
interval: 30s
|
|
scrapeTimeout: 10s
|
|
namespaceSelector:
|
|
matchNames:
|
|
- litellm
|
|
|
|
# --- LiteLLM proxy config (rendered to ConfigMap) ------------------------------
|
|
proxy_config:
|
|
model_list:
|
|
# --- illuminations (RTX 3090, vLLM) --------------------------------------
|
|
- model_name: Gemma-4-26B-A4B-it-AWQ
|
|
litellm_params:
|
|
model: openai/Gemma-4-26B-A4B-it-AWQ
|
|
api_base: http://illuminations.wdw-labs.cloud:8000/v1
|
|
api_key: os.environ/ILLUMINATIONS_API_KEY
|
|
|
|
# --- Mac Studio (fantasmic, oMLX) — Tier 1 Hermes ------------------------
|
|
- model_name: Gemma-4-26B-A4B-Hermes-VLM-MLX
|
|
litellm_params:
|
|
model: openai/Gemma-4-26B-A4B-Hermes-VLM-MLX
|
|
api_base: http://fantasmic.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/FANTASMIC_API_KEY
|
|
- model_name: Qwen3.8-27B-4bit
|
|
litellm_params:
|
|
model: openai/mlx-community--Qwen3.8-27B-4bit
|
|
api_base: http://fantasmic.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/FANTASMIC_API_KEY
|
|
# Also served, not exposed: incoai--Qwen3.8-27B-DFlash2, ukisai-Swift-Qwen3.8-27b-MTPLX
|
|
|
|
# --- Mac Mini M4 (wishes, oMLX) — Tier 3 aux tasks -----------------------
|
|
- model_name: Qwen2.5-7B-Instruct-4bit
|
|
litellm_params:
|
|
model: openai/Qwen2.5-7B-Instruct-4bit
|
|
api_base: http://wishes.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/WISHES_API_KEY
|
|
- model_name: Phi-3.5-mini-instruct-4bit
|
|
litellm_params:
|
|
model: openai/Phi-3.5-mini-instruct-4bit
|
|
api_base: http://wishes.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/WISHES_API_KEY
|
|
- model_name: Phi-3.5-mini-instruct-bf16
|
|
litellm_params:
|
|
model: openai/Phi-3.5-mini-instruct-bf16
|
|
api_base: http://wishes.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/WISHES_API_KEY
|
|
- model_name: Phi-3.5-vision-instruct-4bit
|
|
litellm_params:
|
|
model: openai/Phi-3.5-vision-instruct-4bit
|
|
api_base: http://wishes.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/WISHES_API_KEY
|
|
- model_name: gemma-2-2b-it-4bit
|
|
litellm_params:
|
|
model: openai/gemma-2-2b-it-4bit
|
|
api_base: http://wishes.litellm.svc.cluster.local:8000/v1
|
|
api_key: os.environ/WISHES_API_KEY
|
|
|
|
litellm_settings:
|
|
drop_params: true
|
|
callbacks: ["prometheus"] # exposes /metrics for the ServiceMonitor
|
|
|
|
general_settings:
|
|
master_key: os.environ/PROXY_MASTER_KEY
|
|
# Allow adding models / virtual keys from the Admin UI (/ui), stored in Postgres
|
|
store_model_in_db: true
|