Skip to content

docs: pin RustFS to 1.0.1 and fix the sample RustFS setup [ENG-1745] - #58

Merged
twk3 merged 4 commits into
mainfrom
docs/eng-1745-pin-rustfs-1.0.1
Oct 9, 2026
Merged

twk3 merged 4 commits into
mainfrom
docs/eng-1745-pin-rustfs-1.0.1

Conversation

@twk3

@twk3 twk3 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Pins the in-cluster RustFS in the developer guide and EKS docs to 1.0.1, and fixes three problems that stop the sample RustFS setup from working (ENG-1745). Docs and samples only; the chart is unchanged.

Changes

  • Pin the RustFS chart. helm install rustfs rustfs --repo https://charts.rustfs.com had no --version, so the RustFS a developer got depended on the day they followed the guide. Both guides now pass --version 1.0.1. The chart sets the image tag from its appVersion, so this pins rustfs/rustfs:1.0.1, the version the Docker Compose setup ships and the first that enforces bucket lifecycle rules.
  • Create the bucket with the AWS CLI. minio/mc is no longer on Docker Hub, so the bucket Job sat in ImagePullBackOff and kubectl wait timed out. The Job uses amazon/aws-cli:2.32.31, the image Compose's rustfs-init uses; its s3api also covers the lifecycle configuration ENG-1738 adds to this Job. head-bucket before mb keeps the Job safe to re-apply without hiding a failed create. The wait timeout is 120s because the first run pulls a larger image.
  • Allow cross-origin reads. RustFS 1.0 sends no CORS headers unless RUSTFS_CORS_ALLOWED_ORIGINS or a bucket CORS rule is set, and neither sample ingress adds them. The values sample and its copy in docs/eks/dependencies.md set RUSTFS_CORS_ALLOWED_ORIGINS: "*" through extraEnv. Anyone who followed the unpinned guide since chart 1.0.1 was published on 2026-10-03 already has this problem.
  • Point at rustfs-svc. The MinIO-to-RustFS swap renamed minio to rustfs, but the RustFS chart names its service rustfs-svc (true back to chart 0.0.68). internalEndpoint: http://rustfs made the writer's step uploads fail with getaddrinfo ENOTFOUND rustfs; the dashboard only shows those steps until the Redis cache expires. The EKS ingress backend rustfs has no service to route to. Both now use rustfs-svc (http://rustfs-svc:9000 for the endpoint).

Testing

Followed docs/developer-guide/README.md on Docker Desktop Kubernetes in a separate namespace, with the staging images:

  • RustFS chart 1.0.1 rolls out with samples/rustfs-helm-config.yaml, the pod runs rustfs/rustfs:1.0.1 with the CORS variable, and the bucket Job completes in 20s; a second apply is a no-op.
  • Through the rustfs.localhost ingress: a presigned GET and its preflight return access-control-allow-origin: *, and a past-dated expiry rule deletes objects under its prefix within 5 seconds while an object outside it stays.
  • Recorded a Playwright run against the chart installed with samples/local/chart-config.yaml. With internalEndpoint: http://rustfs the step uploads failed with ENOTFOUND rustfs; with http://rustfs-svc:9000 both log upload successful and land under steps/ in the bucket. All other artifacts upload, and the screenshot, steps, stdout and trace (on trace.playwright.dev) render in the dashboard.

Two deviations from the guide, both because of the local environment rather than the docs: the ingress class was renamed to avoid a leftover cluster-scoped currents-nginx IngressClass, and the Currents images were imported into the node because Docker Desktop's built-in registry mirror truncates ECR manifest responses.

Not tested: the EKS ingress (no EKS cluster), beyond the service name matching what the chart creates.

Related

🤖 Generated with Claude Code

twk3 and others added 4 commits October 9, 2026 11:00
helm install from charts.rustfs.com without --version installs the
newest chart, so the RustFS a developer gets depends on the day they
follow the guide. The chart sets the image tag from its appVersion, so
--version 1.0.1 pins rustfs/rustfs:1.0.1, the version the Docker
Compose setup ships and the first one here that enforces bucket
lifecycle rules.

Verified on kind: chart 1.0.1 with samples/rustfs-helm-config.yaml
rolls out, and a past-dated expiry rule deletes objects under its
prefix within 5 seconds while an object outside it stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
minio/mc is no longer on Docker Hub, so the bucket Job failed with
ImagePullBackOff and kubectl wait timed out. amazon/aws-cli:2.32.31 is
the image the Docker Compose rustfs-init uses, and its s3api covers the
lifecycle configuration the app-content bucket needs.

head-bucket before mb keeps the Job safe to re-apply without hiding a
failed create the way `mb || true` would. The wait timeout is 120s
because the first run pulls a larger image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RustFS 1.0 sends no CORS headers unless RUSTFS_CORS_ALLOWED_ORIGINS or
a bucket CORS rule is set, and neither sample ingress adds them. The
dashboard's stdout and attachment previews and trace.playwright.dev
fetch objects from the browser, so they fail against a RustFS installed
from these samples. Anyone who followed the unpinned guide since chart
1.0.1 was published on 2026-10-03 already has this problem.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The MinIO-to-RustFS swap renamed the MinIO service references to
rustfs, but the RustFS chart names its service rustfs-svc. Nothing
resolves `rustfs`, so with the samples as written:

- internalEndpoint http://rustfs fails every write the writer makes
  through the internal endpoint. Step uploads log
  `getaddrinfo ENOTFOUND rustfs` and give up after three attempts; the
  dashboard keeps showing steps only until the Redis cache expires.
- the EKS ingress backend `rustfs` has no service to route to, and
  every presigned artifact URL goes through that ingress.

Verified on Docker Desktop with samples/local/chart-config.yaml and the
staging images: with http://rustfs-svc:9000 both step uploads for a
recorded run log "upload successful" and land under steps/ in the
bucket.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@twk3
twk3 marked this pull request as ready for review October 9, 2026 19:49
@twk3

twk3 commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

Baz full review

@baz-reviewer

baz-reviewer Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review this PR on Baz

Baz Summary

Pin the Kubernetes RustFS chart to 1.0.1 and align setup documentation with the lifecycle-enforcing image. Fix bucket creation, browser CORS, service endpoints, and object-storage configuration so Helm, EKS, and local sample flows work reliably.

Topics

TopicDetails
Kubernetes RustFS flow Pin RustFS setup to 1.0.1, configure browser-accessible CORS, and point EKS and local object storage at the chart’s rustfs-svc service.
Modified files (6)
  • docs/developer-guide/README.md
  • docs/eks/dependencies.md
  • docs/eks/quickstart.md
  • samples/eks/eks-config.yaml
  • samples/local/chart-config.yaml
  • samples/rustfs-helm-config.yaml
Latest Contributors(2)
UserCommitDate
dj@currents.devdocs: point the RustFS...October 09, 2026
agoldis@users.noreply....Move content from inte...April 10, 2025
Bucket initialization Replace the unavailable minio/mc image with amazon/aws-cli:2.32.31 and make bucket creation safely repeatable with head-bucket before creation.
Modified files (2)
  • docs/eks/dependencies.md
  • samples/rustfs-create-bucket-job.yaml
Latest Contributors(2)
UserCommitDate
dj@currents.devdocs: point the RustFS...October 09, 2026
agoldis@users.noreply....Move content from inte...April 10, 2025

Merger  Activate to get a short verdict whether this PR is good to go or not

Skills  Activate Skill Maintainer to keep your skills up to date

Planner  This PR would have been improved with Baz Planner - Try it now

Comment thread samples/rustfs-create-bucket-job.yaml
@twk3
twk3 merged commit 05f2c20 into main Oct 9, 2026
3 checks passed
@twk3
twk3 deleted the docs/eng-1745-pin-rustfs-1.0.1 branch October 9, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant