splunk-ai-operator

Object Storage Selection

This document describes how the Splunk AI Operator chooses the object storage backend and how to configure AWS S3, MinIO, SeaweedFS, or any S3-compatible storage.

How the operator decides the backend

The operator selects the storage backend only by the path scheme in spec.objectStorage.path:

Path scheme Backend behavior cloudProvider artifactsProvider
s3:// AWS S3 (region, IRSA, no custom endpoint) aws s3
s3compat:// S3-compatible (generic; requires endpoint + secretRef) s3compat s3
minio:// MinIO (alias for S3-compatible) s3compat s3
seaweedfs:// SeaweedFS (alias for S3-compatible) s3compat s3
gs:// / gcs:// GCP Cloud Storage gcp gcs
azure:// Azure Blob Storage azure azure

cloudProvider vs artifactsProvider

Path schemes and required fields

Optional provider field

spec.objectStorage.provider is an optional hint for documentation and tooling. Allowed values: aws, minio, seaweedfs, s3compat, gcs, azure. The operator does not use this field to select the backend; behavior is derived only from the path scheme (and for s3://, absence of endpoint). Use it for clarity in manifests or scripts.

YAML examples

AWS S3

spec:
  objectStorage:
    path: s3://my-ai-bucket/artifacts
    region: us-east-2
    # secretRef optional when using IRSA

MinIO (in-cluster)

spec:
  objectStorage:
    path: minio://ai-platform-bucket/artifacts
    endpoint: http://minio.minio.svc.cluster.local:9000
    region: us-east-1
    secretRef: minio-credentials

MinIO (external, e.g. EC2)

spec:
  objectStorage:
    path: minio://ai-platform-bucket/artifacts
    endpoint: http://10.0.1.50:9000
    region: us-east-1
    secretRef: minio-credentials

SeaweedFS

spec:
  objectStorage:
    path: seaweedfs://my-bucket/artifacts
    endpoint: http://seaweedfs-s3.my-namespace.svc:8333
    region: us-east-1
    secretRef: minio-credentials

Generic S3-compatible (e.g. Ceph, custom endpoint)

spec:
  objectStorage:
    path: s3compat://my-bucket/artifacts
    endpoint: http://s3-gateway.my-namespace.svc:8333
    region: us-east-1
    secretRef: minio-credentials

The same Kubernetes secret format is used for all S3-compatible backends: keys s3_access_key and s3_secret_key. Pods receive S3COMPAT_OBJECT_STORE_ENDPOINT_URL (when endpoint is set), S3COMPAT_OBJECT_STORE_ACCESS_KEY, and S3COMPAT_OBJECT_STORE_SECRET_KEY from the operator.

Adding new S3-compatible backends

Any storage that exposes an S3-compatible API (e.g. Ceph, DigitalOcean Spaces) can be used by using s3compat://bucket with the appropriate endpoint and secretRef. No new client code or scheme is required; minio:// and seaweedfs:// remain as optional aliases for clarity.