feat(rustfs): install a parallel S3 to evaluate a move off MinIO #411
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/rustfs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Raw manifests, no Helm. Four pods, one 55Gi drive each on
zfs-nvme-128k— a 4-drive erasure set, 2 data + 2 parity, one per worker. 55Gi matches MinIO-s per-drive size so the two are comparable.Nothing migrates. MinIO keeps every live bucket: zot-s OCI blobs, Forgejo storage, Loki, Tempo,
pkg, Binjovi logs. This is a parallel install so the replacement can be measured before it is trusted, on a release candidate (1.0.0-rc.5) — right maturity for a dev cluster, wrong maturity for the only copy of anything.The blocker, recorded where the next reader will find it
RustFS implements the S3 API fully but its MinIO admin API is incomplete:
mc admin user listandmc admin policy listfail against it. Every scoped identity here depends on that API — thetenantbucketconverge Jobs (mc admin policy create/user add/policy attach/ilm rule import, plus the negative bucket-isolation checks from H29/H30), theminio.sean.farmCRDs, and the OperatorTenant. See rustfs#1571. If scoped credentials cannot be provisioned declaratively, RustFS cannot replace MinIO here regardless of how a benchmark reads.zfs-nvme-128k, notzfs-buildkit-128k: that family is named for its consumer and is not the right home for object data.The part worth reviewing: the start-up deadlock
The readiness probe passes only once storage quorum forms, and quorum needs the pods to resolve each other first.
publishNotReadyAddresseson the headless Service pluspodManagementPolicy: Parallelis what breaks it. Get either wrong and you have four pods that never become Ready with nothing in any log saying why — and neither is visible in a render or a dry run.tests/rustfs.shpins both, plus the digest pin, replica/drive-list agreement, per-node anti-affinity, the restricted pod posture, and that no credential is ever written into a manifest. Verified against six mutations, each detected.No ingress — ClusterIP and headless only, console by port-forward. Publishing it needs a Gateway listener and an LE certificate, which is a deliberate decision and not a side effect of an evaluation, so this cannot touch the LE-prod rate limit. The guard fails if an HTTPRoute, Gateway or Certificate appears in the directory.
Exempted from kernel-roll gating: a release-candidate object store that nothing in the kernel path reads must never hold a roll.
https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76