From f182f4a6fea931c147a6a80d2a11cbb8a5dd8d25 Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Fri, 9 Oct 2026 11:00:16 -0700 Subject: [PATCH 1/4] docs: pin the RustFS chart to 1.0.1 [ENG-1745] 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 --- docs/developer-guide/README.md | 2 +- docs/eks/dependencies.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/developer-guide/README.md b/docs/developer-guide/README.md index f79b1bb..54fd494 100644 --- a/docs/developer-guide/README.md +++ b/docs/developer-guide/README.md @@ -75,7 +75,7 @@ kubectl create secret generic currents-rustfs-user \ Install RustFS ```sh -helm install rustfs rustfs --repo https://charts.rustfs.com -f samples/rustfs-helm-config.yaml +helm install rustfs rustfs --repo https://charts.rustfs.com --version 1.0.1 -f samples/rustfs-helm-config.yaml ``` Create the `currents` bucket diff --git a/docs/eks/dependencies.md b/docs/eks/dependencies.md index c70b559..f753db2 100644 --- a/docs/eks/dependencies.md +++ b/docs/eks/dependencies.md @@ -250,9 +250,9 @@ Creates a single Pod instance of RustFS with 10Gi of storage. memory: "128Mi" ``` -3. Install RustFS +3. Install RustFS. The chart version also sets the RustFS image version. ```sh - helm install rustfs rustfs --repo https://charts.rustfs.com -f rustfs-helm-config.yaml + helm install rustfs rustfs --repo https://charts.rustfs.com --version 1.0.1 -f rustfs-helm-config.yaml ``` 4. Create an Ingress Resource to expose the RustFS S3 API From dc05b355028b40ad263acd8d5e39ed397933dc9b Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Fri, 9 Oct 2026 11:00:21 -0700 Subject: [PATCH 2/4] docs: create the RustFS bucket with the AWS CLI [ENG-1745] 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 --- docs/developer-guide/README.md | 2 +- docs/eks/dependencies.md | 19 +++++++++++-------- samples/rustfs-create-bucket-job.yaml | 15 +++++++++------ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/docs/developer-guide/README.md b/docs/developer-guide/README.md index 54fd494..4b81b16 100644 --- a/docs/developer-guide/README.md +++ b/docs/developer-guide/README.md @@ -82,7 +82,7 @@ Create the `currents` bucket ```sh kubectl apply -f samples/rustfs-create-bucket-job.yaml -kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=60s +kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=120s ``` Create an ingress for RustFS diff --git a/docs/eks/dependencies.md b/docs/eks/dependencies.md index f753db2..cafaff7 100644 --- a/docs/eks/dependencies.md +++ b/docs/eks/dependencies.md @@ -299,7 +299,7 @@ Creates a single Pod instance of RustFS with 10Gi of storage. kubectl apply -f rustfs-eks-ingress.yaml ``` -5. Create the `currents` bucket by applying a Job that uses mc (MinIO client) +5. Create the `currents` bucket by applying a Job that uses the AWS CLI `rustfs-create-bucket-job.yaml` ```yaml @@ -313,30 +313,33 @@ Creates a single Pod instance of RustFS with 10Gi of storage. spec: restartPolicy: Never containers: - - name: mc - image: minio/mc:latest + - name: aws-cli + image: amazon/aws-cli:2.32.31 env: - - name: RUSTFS_ACCESS_KEY + - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: currents-rustfs-user key: RUSTFS_ACCESS_KEY - - name: RUSTFS_SECRET_KEY + - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: currents-rustfs-user key: RUSTFS_SECRET_KEY + - name: AWS_DEFAULT_REGION + value: us-east-1 + - name: AWS_ENDPOINT_URL + value: http://rustfs-svc:9000 command: - /bin/sh - -c - | - mc alias set rustfs http://rustfs-svc:9000 $RUSTFS_ACCESS_KEY $RUSTFS_SECRET_KEY - mc mb --ignore-existing rustfs/currents + aws s3api head-bucket --bucket currents 2>/dev/null || aws s3 mb s3://currents ``` ```sh kubectl apply -f rustfs-create-bucket-job.yaml - kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=60s + kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=120s ``` ### SMTP Email diff --git a/samples/rustfs-create-bucket-job.yaml b/samples/rustfs-create-bucket-job.yaml index 33b0b50..45f7f8a 100644 --- a/samples/rustfs-create-bucket-job.yaml +++ b/samples/rustfs-create-bucket-job.yaml @@ -8,22 +8,25 @@ spec: spec: restartPolicy: Never containers: - - name: mc - image: minio/mc:latest + - name: aws-cli + image: amazon/aws-cli:2.32.31 env: - - name: RUSTFS_ACCESS_KEY + - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: currents-rustfs-user key: RUSTFS_ACCESS_KEY - - name: RUSTFS_SECRET_KEY + - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: currents-rustfs-user key: RUSTFS_SECRET_KEY + - name: AWS_DEFAULT_REGION + value: us-east-1 + - name: AWS_ENDPOINT_URL + value: http://rustfs-svc:9000 command: - /bin/sh - -c - | - mc alias set rustfs http://rustfs-svc:9000 $RUSTFS_ACCESS_KEY $RUSTFS_SECRET_KEY - mc mb --ignore-existing rustfs/currents + aws s3api head-bucket --bucket currents 2>/dev/null || aws s3 mb s3://currents From fc72a2d392c690f598b54d95ff16b3903ffc6dd7 Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Fri, 9 Oct 2026 11:02:17 -0700 Subject: [PATCH 3/4] docs: allow cross-origin reads from the sample RustFS [ENG-1745] 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 --- docs/eks/dependencies.md | 5 +++++ samples/rustfs-helm-config.yaml | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/docs/eks/dependencies.md b/docs/eks/dependencies.md index cafaff7..c419772 100644 --- a/docs/eks/dependencies.md +++ b/docs/eks/dependencies.md @@ -218,6 +218,11 @@ Creates a single Pod instance of RustFS with 10Gi of storage. secret: existingSecret: "currents-rustfs-user" + # Let the dashboard and trace.playwright.dev fetch objects from the browser + extraEnv: + - name: RUSTFS_CORS_ALLOWED_ORIGINS + value: "*" + # Service configuration service: type: ClusterIP diff --git a/samples/rustfs-helm-config.yaml b/samples/rustfs-helm-config.yaml index cbced67..d61fbb9 100644 --- a/samples/rustfs-helm-config.yaml +++ b/samples/rustfs-helm-config.yaml @@ -11,6 +11,13 @@ mode: secret: existingSecret: "currents-rustfs-user" +# The dashboard and https://trace.playwright.dev fetch objects from the +# browser through presigned URLs. RustFS sends no CORS headers unless this +# or a bucket CORS rule is set. +extraEnv: + - name: RUSTFS_CORS_ALLOWED_ORIGINS + value: "*" + # Service configuration service: type: ClusterIP From f91e458753c7d875d4bfe6095c574a4ab9b9a2c2 Mon Sep 17 00:00:00 2001 From: DJ Mountney Date: Fri, 9 Oct 2026 11:57:35 -0700 Subject: [PATCH 4/4] docs: point the RustFS samples at the rustfs-svc service [ENG-1745] 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 --- docs/eks/dependencies.md | 2 +- docs/eks/quickstart.md | 2 +- samples/eks/eks-config.yaml | 2 +- samples/local/chart-config.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/eks/dependencies.md b/docs/eks/dependencies.md index c419772..d303225 100644 --- a/docs/eks/dependencies.md +++ b/docs/eks/dependencies.md @@ -295,7 +295,7 @@ Creates a single Pod instance of RustFS with 10Gi of storage. pathType: Prefix backend: service: - name: rustfs + name: rustfs-svc port: number: 9000 ``` diff --git a/docs/eks/quickstart.md b/docs/eks/quickstart.md index 61fb125..c136d52 100644 --- a/docs/eks/quickstart.md +++ b/docs/eks/quickstart.md @@ -121,7 +121,7 @@ Configure and install the Currents Helm Chart once all the services are ready. # secretAccessKey: RUSTFS_SECRET_KEY # Set the endpoint to your RustFS route # endpoint: https://storage.eks.example.com - # internalEndpoint: http://rustfs + # internalEndpoint: http://rustfs-svc:9000 # bucket: currents # pathStyle: true diff --git a/samples/eks/eks-config.yaml b/samples/eks/eks-config.yaml index 85578bb..d5fae97 100644 --- a/samples/eks/eks-config.yaml +++ b/samples/eks/eks-config.yaml @@ -41,7 +41,7 @@ currents: host: clickhouse-clickhouse objectStorage: endpoint: https://storage.eks.currents-sandbox.work - internalEndpoint: http://rustfs + internalEndpoint: http://rustfs-svc:9000 secretName: currents-rustfs-user secretIdKey: RUSTFS_ACCESS_KEY secretAccessKey: RUSTFS_SECRET_KEY diff --git a/samples/local/chart-config.yaml b/samples/local/chart-config.yaml index 7877eb6..3d1cb6d 100644 --- a/samples/local/chart-config.yaml +++ b/samples/local/chart-config.yaml @@ -46,7 +46,7 @@ currents: host: clickhouse-clickhouse objectStorage: endpoint: http://rustfs.localhost - internalEndpoint: http://rustfs + internalEndpoint: http://rustfs-svc:9000 secretName: currents-rustfs-user secretIdKey: RUSTFS_ACCESS_KEY secretAccessKey: RUSTFS_SECRET_KEY