# Wave 6 — the model servers behind api.riotpiao.com (namespace `llm-serving`). # # Syncs before wave 7 (api-gw), so the predictor Services exist before the # gateway that routes to them. KServe itself is part of the substrate; this Application # owns only the InferenceServices. # # Adopted from live state on 2026-08-15. These five had been `kubectl apply`-ed # by hand — no ArgoCD ownership, present in no repo — so every change to them # was drift by definition. Each manifest was exported from the cluster and # verified with `kubectl diff` returning empty before this file existed; the # first sync therefore adopted them without restarting anything. apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: llm-serving namespace: argocd annotations: argocd.argoproj.io/sync-wave: "6" spec: project: homelab revisionHistoryLimit: 3 source: repoURL: https://forgejo.riotpiao.com/rock/homelab.git targetRevision: main path: k8s/apps/llm-serving destination: server: https://kubernetes.default.svc namespace: llm-serving syncPolicy: automated: # `prune: false` here, unlike every other Application in this repo, and it # is not an oversight. # # ArgoCD tracks ownership with the `argocd.argoproj.io/instance` label # (argocd-cm `application.instanceLabelKey`). KServe copies an # InferenceService's labels onto the Deployment and Service it generates — # visible today as `app.kubernetes.io/name` and `part-of` on # `ornith-predictor`. So once ArgoCD labels an InferenceService, KServe # propagates that tracking label to children that are not in git, ArgoCD # reads them as extraneous, prunes them, and KServe recreates them. That # loop churns GPU pods. # # Deleting an InferenceService therefore means deleting the file AND # removing the object, rather than relying on prune. prune: false selfHeal: true syncOptions: - CreateNamespace=true # KServe CRDs are large; server-side apply avoids the # "metadata.annotations: Too long" failure client-side apply hits, and is # the correct mode for adopting objects an operator also writes to. - ServerSideApply=true retry: limit: 3 backoff: duration: 10s factor: 2 maxDuration: 3m