Problem
The provider ships the ClusterStorageContainer CRD but does not expose any way for users to define or reference custom storage initializer containers. By default, KServe uses its built-in storage initializer image, which works for s3://, gs://, hf://, pvc://, etc. However, teams often need:
- Custom download logic: A proprietary model registry, P2P model sync (e.g., Dragonfly, IPFS), or an internal artifact store not supported by the default initializer.
- Custom S3/GCS client: A hardened S3 client with specific CA certificates, proxy settings, or dual-stack endpoint configuration.
- Model decryption / verification: Decrypting encrypted model weights or verifying signatures during download.
- Caching layer: Using a local cache proxy (e.g., Squid, Nginx cache) to avoid repeated downloads.
A ClusterStorageContainer CRD allows administrators to register custom storage containers that can be referenced from InferenceService storage URIs.
Suggested approach
Option A (Provider-level): Add a Helm chart value and provider CRD / Instance parameter that lets users reference a custom ClusterStorageContainer by name.
Option B (Admin-level): Document how cluster admins can create ClusterStorageContainer CRs manually, and add a field to the predictor/LLM topology to select which storage container to use for this Instance.
For the provider itself, the minimal MVP is:
- Add a
storageContainer field to ModelServerCustomSpec and VllmCustomSpec.
- When set, the provider adds the appropriate KServe annotation or storage spec to use the named
ClusterStorageContainer.
Acceptance criteria
Problem
The provider ships the
ClusterStorageContainerCRD but does not expose any way for users to define or reference custom storage initializer containers. By default, KServe uses its built-in storage initializer image, which works fors3://,gs://,hf://,pvc://, etc. However, teams often need:A
ClusterStorageContainerCRD allows administrators to register custom storage containers that can be referenced fromInferenceServicestorage URIs.Suggested approach
Option A (Provider-level): Add a Helm chart value and provider CRD / Instance parameter that lets users reference a custom
ClusterStorageContainerby name.Option B (Admin-level): Document how cluster admins can create
ClusterStorageContainerCRs manually, and add a field to the predictor/LLM topology to select which storage container to use for this Instance.For the provider itself, the minimal MVP is:
storageContainerfield toModelServerCustomSpecandVllmCustomSpec.ClusterStorageContainer.Acceptance criteria
storageContainername.ClusterStorageContainerfor model download.ClusterStorageContainerexists (optional — can also defer to KServe controller).