Conversation
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type of Change
Related Issues
Related to #254. This implements a deployment-layer alternative for unified Tenant/networking configuration; it does not add native Ingress or HTTPRoute reconciliation to the Tenant CRD.
Summary of Changes
Deploying a Tenant currently requires users to assemble their own external access manifests. Add an optional, separate
rustfs-tenantchart that renders the existing Tenant resource and independently enabled S3 API / Tenant Console Ingress or HTTPRoute resources. HTTPRoutes attach to existing Gateways and can include explicit backend TLS validation policies.Keep the ownership boundary explicit: Helm or GitOps owns the Tenant and routes; the Operator owns its existing Services and workloads; platform administrators own shared Gateways, controllers, DNS and external certificates. No CRD, controller, RBAC, existing Service, or Operator chart default changes are needed. Both endpoints remain internal-only by default, and
tenant.specuses the existing native CRD fields without templated environment injection.Provide plain Kubernetes YAML and Kustomize alternatives, chart values examples, and documentation for path-style/virtual-hosted S3, Console/OIDC routing, edge versus backend TLS, upgrade/teardown ownership, and data-path verification. Package the Tenant chart alongside the Operator chart in releases. Add rendering contract tests that compare route backends with Services generated by the actual Tenant implementation.
Checklist
make pre-commit(fmt-check + clippy + test + console-lint + console-fmt-check)[Unreleased](if user-visible change)Impact
Verification
RUSTUP_TOOLCHAIN=1.98.1 make -j4 pre-commit helm lint deploy/rustfs-tenant cargo test --test tenant_chart kubectl kustomize examples/networking/ingress kubectl kustomize examples/networking/gateway helm package deploy/rustfs-operator --destination /tmp/rustfs-charts helm package deploy/rustfs-tenant --destination /tmp/rustfs-charts helm repo index /tmp/rustfs-chartsThe complete local gate passed with Rust 1.98.1, including nine chart contract tests. The preinstalled
stablerustfmt/clippy binaries had missing dynamic libraries, so the toolchain was selected through the environment without changing repository configuration.Additional offline checks validate the rendered Tenant against the repository CRD and HTTPRoute/BackendTLSPolicy against the Gateway API v1.4.0 CRD OpenAPI schemas. This does not execute Kubernetes CEL admission rules or validate controller behavior.
Live gateway/S3/OIDC tests were not run. Provisioning a dedicated local Kind cluster stalled while downloading the node image; the attempt was stopped and cleaned up. Runtime validation steps are documented for the target platform.
Additional Notes
This chart does not adopt existing resources or install shared infrastructure.
helm uninstallremoves the Tenant and chart-owned networking; deleting only the Tenant CR leaves the separately managed routes. Rendering withhelm templatefollowed bykubectl applydoes not create a Helm release and requires explicit pruning. These lifecycle differences are documented.The existing published release does not gain this chart until a release containing this change is published. BackendTLSPolicy requires Gateway API v1.4+ and controller support.