You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Feature request: Transition rules in spec.buckets[].lifecycle #279
Allow transition (and noncurrentVersionTransition) in bucket lifecycle rules of the Tenant CRD. This extends the lifecycle support added in #250 (requested in #249), which currently covers expiration and abortIncompleteMultipartUpload only.
Use Case
We run RustFS as the hot tier and move objects older than N days to a remote S3-compatible tier (Storj in our case; RustFS works with it since rustfs/rustfs#8363). The Tenant is deployed with Flux, and we want the transition rule declared in Git next to the rest of the bucket configuration.
Current Situation
RustFS core supports Transition and NoncurrentVersionTransition in PutBucketLifecycleConfiguration, with StorageClass set to the name of a registered tier.
The operator's lifecycle model has no transition, so such a rule cannot be expressed in the CRD.
Current Workaround
A Job that runs rc ilm rule add <alias>/<bucket> --transition-days N --storage-class <TIER> after the Tenant becomes ready. Problems:
Imperative, outside the reconcile loop: no drift detection and no status on the Tenant.
It cannot be combined with spec.buckets[].lifecycle. The operator owns the whole lifecycle document of a bucket, so the Job's rule and operator-managed rules would overwrite each other. Today we leave lifecycle unset on tiered buckets.
The tier must already exist. RustFS rejects a lifecycle document whose StorageClass is not a registered tier. The operator could check GET /rustfs/admin/v3/tier before applying and report a clear condition on the bucket instead of a retry loop. The tier itself can be registered outside the operator; managing tiers in the CRD is a separate request (#).
Validation. One Transition and one NoncurrentVersionTransition per rule, as RustFS enforces. days must be positive.
Ownership. The existing canonical-XML ownership check and desired hash need to include the new elements, so a live document with a transition is not silently adopted or dropped.
Activity
feat(provisioning): support transition actions in bucket lifecycle