apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization # Explicit allowlist, matching k8s/apps/api. Anything added to this directory # and not listed here is silently dropped — no error, no drift shown. # # These five were adopted from live state on 2026-08-15; they had been applied # by hand and carried no ArgoCD ownership. Each was exported and verified with # `kubectl diff -f ` returning empty before the Application below was # created, so the first sync was a no-op rather than a redeploy. Re-verify that # way after any edit here: a GPU predictor restart is a weights reload measured # in tens of seconds, not a rolling update. resources: # clef-flash runs through clef-serve.yaml, not through an SGLang runtime. SGLang needs # v0.5.22+, published only on CUDA 13, and CUDA 13 dropped Volta kernels. The model # instead runs the implementation it ships (joint_schema_model.py) in fp16 on one V100. # coder-14b-fp16.yaml owns the `candle-vllm` Deployment name and the # `app: candle-vllm` label that coder-service.yaml selects. It must be the only # workload with that label, or the Service splits traffic across two models. # # fp16 on two V100s, not GPTQ on one: measured 39.7 ms ITL and 287 tok/s at 16 # streams against 71.5 ms and 215 tok/s for the 4-bit MoE. The V100 has FP16 # tensor cores and no INT4 ones, so 4-bit pays dequantisation on the SM while # the memory controller idles at 19%. - coder-14b-fp16.yaml - clef-serve.yaml # Stable client-facing name for the chat model. poimen-memory points at this Service, # so the vLLM -> candle-vllm handoff is a selector edit here and no client change. - coder-service.yaml - reasoning-long-service.yaml # ornith is retired: its InferenceService still reports Ready=True while running zero # replicas, because desired equals available at 0. Its manifest was never committed, # so it is left unmanaged and is not listed here. Delete the CR when convenient. - embeddings.yaml - reranker.yaml - qwen-cpu.yaml - networkpolicy.yaml # No namespace transformer: every file sets its own, and the transformer would # rewrite metadata.namespace on anything cross-namespace added later. # app.py lives in git next to this file. The generator hashes the ConfigMap name, so an # edit to app.py rolls the pod instead of leaving a stale copy mounted. configMapGenerator: - name: clef-serve-app namespace: llm-serving files: - clef-serve/app.py options: disableNameSuffixHash: false