104 lines
4.8 KiB
YAML
104 lines
4.8 KiB
YAML
# Non-secret configuration shared by every service. Keys mirror the
|
|
# ENKLY_* env vars from docker-compose.yml / .env.example 1:1 so the
|
|
# application code needs zero changes — only the hostnames change,
|
|
# from docker-compose service names to in-cluster Kubernetes Service
|
|
# names (which are identical, so most values don't even change).
|
|
# NOTE: the three *_POSTGRES_DSN values are NOT here — ConfigMap data
|
|
# is static text and cannot expand $(POSTGRES_PASSWORD); each DSN is
|
|
# instead composed inline in its Deployment's env: list (see the
|
|
# per-service files), where Kubernetes does support that expansion.
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: enkly-config
|
|
namespace: enkly
|
|
data:
|
|
# --- shared ---
|
|
ENKLY_BASE_URL: "https://ai.enkly.org" # set to your real public URL / Ingress host
|
|
# Back on vLLM (per your request), still on a GPU-less cluster: both
|
|
# Deployments in 11-vllm.yaml now run vLLM's CPU backend — a custom
|
|
# build with AVX-512 disabled (registry.enkly.org/enkly/vllm-cpu),
|
|
# not vLLM's official pre-built image, after vllm-embed's init
|
|
# container confirmed this cluster's nodes actually lack avx512f —
|
|
# instead of the CUDA vllm/vllm-openai image, with no nvidia.com/gpu
|
|
# request and no GPU-pool nodeSelector/toleration. See 11-vllm.yaml's
|
|
# header for the build command and the memory-sizing fix that went
|
|
# with it (vllm-chat's original 8Gi request exceeded this cluster's
|
|
# confirmed ~7.76Gi per-node RAM outright).
|
|
# Two Deployments, two Services, same as the original GPU manifest
|
|
# (one vLLM engine process serves exactly one model — see
|
|
# pkg/vllmkit's doc comment) — unlike the brief Ollama detour this
|
|
# cluster also tried, which could multiplex both models behind one
|
|
# daemon. Internal-only ClusterIP Services this time (no public
|
|
# vllm-chat.enkly.org/vllm-embed.enkly.org Ingress) since agent and
|
|
# knowledge are the only callers and both are in-cluster.
|
|
ENKLY_VLLM_CHAT_URL: "http://vllm-chat:8000/v1"
|
|
ENKLY_VLLM_EMBED_URL: "http://vllm-embed:8000/v1"
|
|
# qwen3.5 (the original GPU deployment's model, ~35B-parameter MoE,
|
|
# served via a GPTQ-Marlin checkpoint) isn't viable here twice over:
|
|
# Marlin's INT4 kernels are CUDA-only, and 35B active-weight decode
|
|
# at CPU speeds wouldn't be usable latency regardless. Went with
|
|
# qwen2.5-1.5b-instruct rather than the 3B variant tried first —
|
|
# unquantized bf16 (CPU quantized-GPTQ/AWQ kernel support exists but
|
|
# is far less battle-tested than Marlin's GPU path, so plain bf16 is
|
|
# the safer default here) — specifically because this cluster's
|
|
# nodes only have ~7.76Gi RAM total each (see 11-vllm.yaml's header):
|
|
# the 3B model's 8Gi request alone couldn't fit on any node, full
|
|
# stop. 1.5B still supports OpenAI-style tool calling via vLLM's
|
|
# hermes parser (required by
|
|
# services/agent/internal/infrastructure/agentrun). See
|
|
# 11-vllm.yaml's resources/VLLM_CPU_KVCACHE_SPACE for how this maps
|
|
# to actual CPU/RAM, and its header for going back up to 3B or
|
|
# higher once `kubectl describe node` confirms real free headroom.
|
|
ENKLY_CHAT_MODEL: "qwen2.5-1.5b-instruct"
|
|
# Note one real behavior gap versus the original Qwen3.5 GPU
|
|
# deployment: Qwen2.5 has no equivalent to --reasoning-parser=qwen3's
|
|
# separate "thinking" trace (Message.Thinking / wire
|
|
# reasoning_content) — vLLM won't emit that field for this model, so
|
|
# Thinking comes back empty. Doesn't break chat or tool calling,
|
|
# just drops the reasoning-trace UI panel's content.
|
|
#
|
|
# Unchanged — nomic-embed-text was already the right size/cost
|
|
# trade-off on CPU (see pkg/vllmkit's DefaultEmbedModel comment and
|
|
# 11-vllm.yaml's vllm-embed Deployment), and no schema.sql
|
|
# vector(768) dimension change is needed either.
|
|
ENKLY_EMBED_MODEL: "nomic-embed-text"
|
|
|
|
# --- iam ---
|
|
ENKLY_IAM_GRPC_ADDR: ":9001"
|
|
ENKLY_SMTP_HOST: "smtp.gmail.com"
|
|
ENKLY_SMTP_PORT: "587"
|
|
|
|
# --- billing ---
|
|
ENKLY_BILLING_GRPC_ADDR: ":9002"
|
|
|
|
# --- conversation ---
|
|
ENKLY_CONVERSATION_GRPC_ADDR: ":9003"
|
|
|
|
# --- workspace ---
|
|
ENKLY_WORKSPACE_GRPC_ADDR: ":9004"
|
|
ENKLY_WORKSPACE: "/data/workspace"
|
|
ENKLY_BASH_TIMEOUT_SECONDS: "120"
|
|
# Only tools actually present in the workspace image (see its
|
|
# Dockerfile: ca-certificates + git). Extend the image before
|
|
# widening this list.
|
|
ENKLY_BASH_ALLOWLIST: "git,ls,cat,grep,find,pwd,echo"
|
|
|
|
# --- knowledge ---
|
|
ENKLY_KNOWLEDGE_GRPC_ADDR: ":9005"
|
|
|
|
# --- agent ---
|
|
ENKLY_AGENT_GRPC_ADDR: ":9006"
|
|
|
|
# --- notification ---
|
|
ENKLY_NOTIFICATION_HEALTH_ADDR: ":9007"
|
|
ENKLY_SMTP_FROM: "noreply <contact.enkly@gmail.com>"
|
|
|
|
# --- gateway ---
|
|
ENKLY_GATEWAY_HTTP_ADDR: ":8080"
|
|
ENKLY_TEMPLATES_DIR: "/app/web/templates"
|
|
ENKLY_STATIC_DIR: "/app/web/static"
|
|
|
|
# --- rabbitmq (non-secret half; the password half is in enkly-secrets) ---
|
|
RABBITMQ_DEFAULT_USER: "enkly"
|