Skip to content

feat: support s3-integrator as an object storage backend#955

Closed
mvlassis wants to merge 1 commit into
mainfrom
kf-8704
Closed

feat: support s3-integrator as an object storage backend#955
mvlassis wants to merge 1 commit into
mainfrom
kf-8704

Conversation

@mvlassis

@mvlassis mvlassis commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add s3 interface support (via an s3-credentials relation) to kfp-api, kfp-ui and kfp-profile-controller, letting them use an s3-integrator as an alternative to the in-cluster MinIO (object-storage) backend.
  • Exactly one of object-storage or s3-credentials may be related at a time; relating both blocks the charm (enforced by a RelationCountGateComponent conflict gate in kfp-ui/kfp-profile-controller, and inline in kfp-api).
  • The s3 endpoint is parsed into the host, port and TLS flag the workloads expect. The kfp-profile-controller sync.py hook now derives SSL/region and omits the .namespace suffix when using s3.

Changes

  • charm.py (×3): normalized _get_object_storage_data() + _parse_s3_endpoint() supporting both backends. kfp-api uses object_storage.S3Requirer; kfp-ui/kfp-profile-controller use chisme S3RequirerComponent + RelationCountGateComponent.
  • Workload: profile-controller sync.py (minio_ssl/minio_region, empty-namespace endpoint) and pebble_components.py (MINIO_SSL/MINIO_REGION env, dropped namespace-required check).
  • metadata.yaml (×3): new s3-credentials relation (interface s3).
  • Deps: chisme ^0.4.27 + object-storage-charmlib ^1.0.0 (pyproject + poetry.lock).
  • Tests: integration test_charm.pytest_charm_object_storage.py (pure rename) + new test_charm_s3.py (×3); new unit tests for endpoint parsing, conflict detection, waiting status, and s3-backed pebble services.
  • CI/tox: new integration-s3 tox env (root + per-charm), S3 passenv, and integration-s3 CI matrix entry with excludes for charms that don't integrate with s3.

Behavior change

  • kfp-api's OBJECTSTORECONFIG_SECURE now derives from the object-storage relation's secure field instead of being hardcoded to false.

Closes #902

Add the `s3` interface (via an `s3-credentials` relation) to kfp-api,
kfp-ui and kfp-profile-controller so they can use an s3-integrator as an
alternative to the in-cluster MinIO (`object-storage`) backend.

Exactly one of `object-storage` or `s3-credentials` may be related at a
time; relating both blocks the charm. The s3 endpoint is parsed into the
host, port and TLS flag the workloads expect, and the profile-controller
sync hook now derives SSL/region and omits the namespace suffix for s3.

Integration tests are split into object-storage and s3 suites, wired up
through a new `integration-s3` tox env and CI matrix entry.
@ckfbot ckfbot added backport track/2.16 Backport to track/2.16 backport track/2.15 Backport to track/2.15 backport track/2.5 Backport to track/2.5 labels Jun 18, 2026
@ckfbot

ckfbot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

🤖 Backport labels populated

Labels to this pull request were added automatically by the populate-labels.yaml action.

When the PR is merged, backport PRs according to the labels will be automatically created. To skip the backport creation, remove any unneeded labels before merging the PR.

@mvlassis

mvlassis commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@mvlassis mvlassis closed this Jun 18, 2026
@mvlassis mvlassis deleted the kf-8704 branch June 18, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport track/2.5 Backport to track/2.5 backport track/2.15 Backport to track/2.15 backport track/2.16 Backport to track/2.16

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add s3 interfaces to relate with s3-integrator

2 participants