CAC-262: Add NFS remote storage for SGLang HiCache - #172
Conversation
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlocking
Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlocking
Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlocking
Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
Review — high quality; no blocking defects, main item is merge coordination with #171Read the full diff and ran the suite on the PR head ( Correctness — strong
Findings (all non-blocking)🟡 Coordinate the merge with #171. This branch predates #171; both edit the same HiCache dispatch branch, 🟡 🟢 Minor — 🟢 Minor — inline 🟢 Nits. Two near-identical path validators ( Tests / docsExcellent lockstep: deepcopy + CRD + schema assertions + validation table + full args/env/volume/mount injection test + binding + provider + doctor branches + controller + committed sample + design doc + install-smoke NFS lifecycle. The PR is upfront that no real NFS/SGLang data-plane test runs — appropriate given the mount is externally owned. VerdictApprove-worthy on its own — nothing blocking. Main actionable item is merge coordination with #171 (overlap + the nil-binding convergence assumption for any future NFS readiness); the |
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fixNone. Nit
Per-category coverage
Verdictapprove-with-nits |
|
@EdHasNoLife Thanks for the thorough review. I addressed the two in-scope operational/documentation notes in
For the #171 coordination point, I’m intentionally leaving #172’s dispatch unchanged: NFS-backed HiCache remains on the endpoint-free External/ The broader |
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fixNone. NitNone. Per-category coverage
Verdictapprove |
Summary
Add NFS as an externally owned remote-storage provider, with initial runtime support for SGLang HiCache.
This PR introduces the following canonical configuration:
NFS is modeled as a generic
remoteStorage.provider, rather than as an SGLang-specific API. The currently supported runtime/cache pair is(SGLang, SGLangHiCache).For matching SGLang engine Pods, the webhook injects:
--hicache-storage-backend file--hicache-storage-prefetch-policy <value>SGLANG_HICACHE_FILE_BACKEND_STORAGE_DIR=<mountPath>mountPathThe NFS mount target is externally owned. inference-cache does not create a PV, PVC, StorageClass, NFS export, mount target, Deployment, Service, or HPA.
Because NFS is mounted directly into the engine Pod, it has no CacheBackend network endpoint. The controller acknowledges the current generation but does not publish an endpoint or synthetic
Readycondition. HiCache readiness remains a separate contract tracked by CAC-260.This PR does not claim an NFS or SGLang data-plane test. The configured NFS server must be reachable from the engine nodes, and runtime store/read behavior should be verified in the target cluster.
Change breakdown
feat: add NFS remote storage for SGLang HiCache(891d949)NFSto the generic remote-storage provider API.remoteStorage.nfsfields:serverpathmountPathstoragePrefetchPolicyfield.ownership: ExternalremoteStorage.endpointstoragePrefetchPolicybeing required with NFS and rejected without NFSLinked issues
CAC-262
Validation
Passed locally:
make buildmake testmake lintmake verify-namingmake manifests generate— generated CRD and deepcopy code are committedmake verify-samples— 22 passed, 2 intentional skipsmake cibash -n docs/reference-stack/scripts/default_install_smoke.shgit diff --checkThe optional golden-vector verification was skipped by the local CI script because the local Python environment does not have
xxhashinstalled.The installed-cluster smoke script now asserts the NFS lifecycle and server-side dry-run Pod mutation, but the full kind install-smoke was not executed locally for this commit.
Checklist
Vendor-neutral naming (required — see CONTRIBUTING.md)
oci/oracle/*.oci.com/oraclecloud.comin any API group, CRD group, proto package, gRPC service/package, Kubernetes namespace, image registry, Helm chart, or Go module path.pkg/adapters/.../) — never in core controllers, CRD types, the proto contract, or default config.Quality
make buildandmake testpass locally.make lintis clean.make manifests generateproduces no uncommitted generated drift.Contracts (only if touching CRDs or proto)
v1alpha1consumers; the API changes are additive.proto/is unchanged.