Skip to content

[FEATURE] Air-gapped: s3:// model source support (#53) #1098

Description

@Defilan

Feature Description

Support s3:// (S3-compatible: MinIO, etc.) as a Model.source, with credentials via secretRef. One additive slice of the #53 air-gapped epic. Additive: keeps the existing string source; no CRD refactor.

Problem Statement

As an operator in a private/air-gapped network, I want to stage models from internal S3-compatible storage so no public egress is required.

Proposed Solution

  • Recognize an s3://bucket/key scheme in the existing Model.spec.source string.
  • Add an optional spec.sourceSecretRef (name of a Secret with S3 creds/endpoint) if one is not already present; wire it as env into the model-downloader.
  • In the download/staging path, construct the correct S3 fetch (endpoint, bucket, key, credentials from the mounted secret).
  • Ship an example manifest: config/samples/ Model with an s3:// source + Secret.

Scope

In: scheme parsing, secret plumbing, download-command construction, sample. Out: the full typed-source-object refactor (separate design), OCI/private-registry (later phases).

Acceptance Criteria

  • Unit tests: s3:// parse (bucket/key/endpoint), and the constructed download invocation/env is correct given a secret.
  • make test, make lint, cross-arch lint clean.
  • Sample manifest applies against the CRD schema (kubectl apply --dry-run=server or envtest).

Note

Full end-to-end pull requires a live MinIO and is validated manually; the code paths above are the in-workspace-provable slice.

Additional Context

Priority

  • High

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions