Skip to content

[DND-1418] Upgrade Default S3Proxy to 3.x (appVersion 2.7.0 -> 3.3.0) - #25

Merged
CRThaze merged 6 commits into
mainfrom
CRThaze/DND-1418/s3proxy-3x
Jul 21, 2026
Merged

[DND-1418] Upgrade Default S3Proxy to 3.x (appVersion 2.7.0 -> 3.3.0)#25
CRThaze merged 6 commits into
mainfrom
CRThaze/DND-1418/s3proxy-3x

Conversation

@CRThaze

@CRThaze CRThaze commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Why

The chart pinned appVersion: 2.7.0 while upstream S3Proxy is at 3.3.0. This bumps to the latest stable and documents the version compatibility story, since 3.x changes the storage-backend provider landscape.

Change

  • Chart.yaml: appVersion 2.7.0 to 3.3.0; chart version 0.1.0 to 0.2.0.
  • values.yaml: the azureblob backend now defaults to provider: azureblob-sdk (was the deprecated jclouds azureblob). The Azure SDK provider signs correctly against custom endpoints; set provider: azureblob only if you specifically need the legacy one.
  • configmap.yaml: render-time guard that hard-fails if a no-SDK-successor jclouds backend (b2, or atmos if ever added) is enabled while the effective S3Proxy version (image.tag, else appVersion) parses as semver and is > 3.3.0.
  • README.md.gotmpl: "S3Proxy version compatibility" section documenting the plan (support through 3.3.0 on chart 0.x; the guardrail; move to 1.x.x when a jclouds-free S3Proxy release ships).

Validation

Ran the full functional matrix against image.tag=3.3.0 on kind. All backends start and serve:

Backend Provider Result on 3.3.0
s3 (MinIO) s3 (jclouds) PASS
filesystem filesystem-nio2 PASS
transient transient-nio2 PASS
azureblob (Azurite) azureblob-sdk PASS
multi-backend (routing) s3 + azureblob + filesystem PASS (per-backend routing, no cross-leaks)

The chart's default image tag equals appVersion, so the PR's own functional CI legs re-run against 3.3.0 automatically. helm lint, kubeconform -strict (all test-values), and helm-polish (0 errors) are clean.

Compatibility note

S3Proxy 3.0.0 deprecated the Apache jclouds backends (s3, aws-s3, azureblob, filesystem, transient) in favor of SDK/NIO2 providers. Upstream has announced that 3.3.0 is the last release to bundle jclouds and that future releases "will lack its Atmos and B2 storage backends" (no jclouds-free release has shipped yet, 3.3.0 is still latest, and only Atmos and B2 are explicitly named). The jclouds providers still work on 3.x (validated above):

  • filesystem/transient already default to the non-deprecated *-nio2 variants.
  • azureblob now defaults to azureblob-sdk; the legacy jclouds azureblob is deprecated and mis-signs against custom endpoints. On real Azure, azureblob-sdk may need config.backends.azureblob.regions set.
  • s3, googleCloudStorage, openstackSwift have SDK successors upstream (aws-s3-sdk, google-cloud-storage-sdk, openstack-swift-sdk); rackspaceCloudfiles is OpenStack-Swift-compatible and may run on openstack-swift-sdk.
  • b2 (and Atmos, if added) are jclouds-only with no SDK successor; these are the backends upstream said future releases will drop. The render guard blocks them when the effective version is > 3.3.0.

Plan: support through 3.3.0 on chart 0.x; move to 1.x.x and migrate/drop the jclouds backends when S3Proxy ships its first jclouds-free release. The SDK-provider migration is tracked in DND-1447.

comet-common library dependency

Adds comet-ml/common-helm-chart (comet-common 0.3.0) as a library dependency and routes this chart's helpers through it, so naming, labels, and image rendering stay consistent across Comet charts.

  • Not vendored: charts/s3proxy/charts/ is git-ignored. Chart.lock (committed) pins the version/digest, and each workflow that renders, installs, or packages the chart runs helm dependency build charts/s3proxy first (lint-render, functional-test, helm-diff, release). comet-common's OCI package is anonymously pullable, so this needs no registry auth and still works on fork PRs.
  • Templates call the comet-common helpers directly: comet-common.names.* (name/fullname/serviceAccount) for names, comet-common.labels.base for labels, and comet-common.images.image for both image strings. No thin s3proxy pass-through wrappers remain.
  • s3proxy.selectorLabels is the one helper kept local (it adds value): it pins the Deployment selector to {name, instance} (name sourced from comet-common). comet-common.selectorLabels adds app.kubernetes.io/component, and spec.selector.matchLabels is immutable, so adopting it would break helm upgrade on existing releases.
  • Render is equivalent: names, selector labels, and image strings are byte-identical to before; the only change is metadata label key ordering (comet-common's order) and the resulting checksum/config/checksum/secret annotation recompute. No app.kubernetes.io/component is introduced. Verified end-to-end on kind (dependency resolves, image renders andrewgaul/s3proxy:3.3.0, multi-backend routing passes).

Notes

Bump appVersion to 3.3.0 (latest stable; the chart was several releases behind
on 2.7.0). Validated on kind that every functionally-tested backend starts and
serves on the 3.3.0 image: s3, filesystem, transient, azureblob (azureblob-sdk),
and the multi-backend routing scenario all pass. CI runs the functional legs
against the default image tag, which now equals appVersion 3.3.0.

Also document S3Proxy version compatibility in the chart README: minimum
supported 2.7.0, and the jclouds deprecation path introduced in 3.0.0 (the
jclouds providers still work on 3.x but are deprecated; 3.3.0 is the last
release to bundle jclouds, after which b2 and rackspace-cloudfiles have no SDK
successor).

Chart version 0.1.0 -> 0.2.0 (minor: new app major version supported, no
breaking chart-values changes).

Scope: minimal bump only. Migrating the chart's default providers to their
SDK/NIO2 replacements (aws-s3-sdk, google-cloud-storage-sdk, openstack-swift-sdk)
and end-of-lifing b2/rackspace is tracked as a separate follow-up.
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

….3.0

README: replace the compatibility note with our actual plan. Frame the jclouds
sunset as upstream's announced intent (only Atmos and B2 are explicitly named;
no jclouds-free release has shipped yet), stop over-claiming that rackspace
breaks (it is Swift-compatible and may be served by openstack-swift-sdk), and
state the plan: support through 3.3.0 on 0.x, hard-fail if a no-successor
jclouds backend is used past 3.3.0, and move the chart to 1.x.x when S3Proxy
ships its first jclouds-free release.

configmap.yaml: add a render-time guardrail. If b2 (or atmos, if ever added) is
enabled while the effective S3Proxy version (image.tag, else appVersion) parses
as semver and is > 3.3.0, fail with an actionable message. Non-semver tags
(master, sha-*) are not version-checked; 3.3.0 and earlier are allowed.

Verified: default renders clean; b2 + image.tag=3.4.0 fails with the message;
b2 on 3.3.0 / non-semver tags / non-jclouds backends all render; helm lint,
kubeconform (all test-values), and helm-polish (0 errors) clean.
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@CRThaze CRThaze changed the title [DND-1418] Support S3Proxy 3.x (appVersion 2.7.0 -> 3.3.0) [DND-1418] Upgrade Default S3Proxy to 3.x (appVersion 2.7.0 -> 3.3.0) Jul 21, 2026
On S3Proxy 3.x the legacy jclouds azureblob provider is deprecated and
mis-signs against custom endpoints (Azurite, Azure Gov/China, private
endpoints); azureblob-sdk (Azure SDK) is the non-deprecated, correctly-signing
provider. Change the chart default provider from "azureblob" to
"azureblob-sdk". Users can still set provider: azureblob explicitly for the
legacy backend until it is removed post-3.3.0. On real Azure, azureblob-sdk may
require config.backends.azureblob.regions for bucket creation (see DND-1416).

Update the README compatibility note accordingly.

Verified: default azureblob render now emits jclouds.provider=azureblob-sdk;
helm lint, kubeconform (all test-values), helm-polish (0 errors) clean.
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Add comet-ml/common-helm-chart (comet-common 0.3.0) as a library dependency and
route the chart's helpers through it, so naming, labels, and image rendering
stay consistent with the other Comet charts. The dependency is vendored in-repo
(Chart.lock + charts/comet-common-0.3.0.tgz) so CI and fork PRs resolve it
without any registry access, preserving the no-secrets model.

- _helpers.tpl: s3proxy.name/fullname/chart/serviceAccountName now wrap
  comet-common.names.*; s3proxy.labels wraps comet-common.labels.base.
- deployment.yaml: both image strings render via comet-common.images.image.
- s3proxy.selectorLabels kept local (sourcing the name from comet-common) so the
  immutable Deployment selector stays {name, instance}; comet-common's
  selectorLabels would add app.kubernetes.io/component and break upgrades.

Render is equivalent: names, selector labels, and image strings are byte-identical
to before; the only change is metadata label key ordering (comet-common's order)
and the resulting checksum/config|secret annotation recompute. No
app.kubernetes.io/component is introduced anywhere.

Verified: render diff vs base is label-order + checksum only; helm lint,
kubeconform (all test-values), helm-polish (0 errors) clean; kind install
resolves the vendored dep, renders image andrewgaul/s3proxy:3.3.0, and
multi-backend routing passes.
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

…ers)

The s3proxy.name/fullname/chart/serviceAccountName/labels wrappers only
delegated to comet-common with no added logic. Remove them and call the
comet-common helpers directly at every call site
(comet-common.names.*, comet-common.labels.base).

_helpers.tpl now keeps only s3proxy.selectorLabels, which does add value: it
pins the immutable Deployment selector to {name, instance} (sourcing the name
from comet-common) rather than comet-common.selectorLabels, which appends
app.kubernetes.io/component.

Pure refactor: render is byte-identical to the previous commit across all 11
test-values (0 unexpected diff lines); helm lint, kubeconform, helm-polish all
clean.
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Git-ignore charts/s3proxy/charts/ and stop checking in the resolved
comet-common-0.3.0.tgz. Chart.lock (committed) pins the version/digest, and each
workflow that renders, installs, or packages the chart now runs
`helm dependency build charts/s3proxy` first. comet-common's OCI package is
anonymously pullable, so this needs no registry auth and still works on fork PRs.

- .gitignore: ignore charts/s3proxy/charts/.
- lint-render / functional-test / release: add a "Build chart dependencies" step
  after Set up Helm (release also gains a Set up Helm step).
- helm-diff: build deps for whichever side (base/head) has a Chart.lock before
  rendering (base may predate the dependency).

Verified: removing the local .tgz and running `helm dependency build` from
Chart.lock repopulates it and the chart renders; actionlint clean on the changed
render/install workflows; helm-polish clean.
@github-actions

Copy link
Copy Markdown

📊 Helm Render Diff Summary

Chart charts/s3proxy rendered with Kubernetes 1.29.0. Informational only — this check never fails the PR.

Values File Chart Path Changes Status
test-values/autoscaling.yaml charts/s3proxy +15 -15 🔄 Changes Detected (summary)
test-values/azureblob.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/b2.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/filesystem.yaml charts/s3proxy +15 -15 🔄 Changes Detected (summary)
test-values/gcs.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/ingress.yaml charts/s3proxy +19 -19 🔄 Changes Detected (summary)
test-values/multi-backend.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/openstack-swift.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/rackspace.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/s3.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)
test-values/transient.yaml charts/s3proxy +13 -13 🔄 Changes Detected (summary)

🔍 Detailed Changes

📝 Changes in charts/s3proxy with test-values/autoscaling.yaml

🔍 Click to view complete diff
--- /tmp/before-autoscaling.yaml	2026-07-21 13:37:51.381470070 +0000
+++ /tmp/after-autoscaling.yaml	2026-07-21 13:37:51.344469833 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -30,11 +30,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-filesystem.properties: |-
     # S3Proxy configuration
@@ -57,11 +57,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -79,11 +79,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   selector:
     matchLabels:
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 8170e58aee8089f4e73cb70cfbb933cbe7ca01ade7816938d9fcdb4c56aebb99
-        checksum/secret: 77b9a3fb75c912d61a61320cad5209da473696a8869802445fc7669d81e0db5d
+        checksum/config: 36fcd2de9d23244660a4f0e43d2d3e4cd242f230ff199a30aa3b7f92f5bf8bc0
+        checksum/secret: 1d42b334090ce48d3c9f56825f6db09767dc89b0acf85f950c6e6176f33651e1
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -167,7 +167,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -221,11 +221,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   scaleTargetRef:
     apiVersion: apps/v1
@@ -253,11 +253,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/azureblob.yaml

🔍 Click to view complete diff
--- /tmp/before-azureblob.yaml	2026-07-21 13:37:51.504470858 +0000
+++ /tmp/after-azureblob.yaml	2026-07-21 13:37:51.455470544 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -33,11 +33,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-azureblob.properties: |-
     # S3Proxy configuration
@@ -58,11 +58,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -80,11 +80,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -94,8 +94,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: df411b47646e6705162342d0902a4f4d3f97aee98421004ecdf0b5f4ca412d97
-        checksum/secret: 59ab3c724dc713cccb2fbcfe96ea58fbd34e1ec99cc29525ad7ec53d572938a8
+        checksum/config: 850843314687e7c6593d6186511edb3dd26e6b01b6f96d3af81d82e13cba8cf6
+        checksum/secret: 9ae09b26a55d9f752aa6103966537d85a29d717b9a01c34642421f1320febdb0
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -169,7 +169,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -221,11 +221,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/b2.yaml

🔍 Click to view complete diff
--- /tmp/before-b2.yaml	2026-07-21 13:37:51.599471467 +0000
+++ /tmp/after-b2.yaml	2026-07-21 13:37:51.560471217 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -33,11 +33,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-b2.properties: |-
     # S3Proxy configuration
@@ -57,11 +57,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -79,11 +79,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -93,8 +93,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: c56316dc71870c68d9438009987670dd9d98172edb2166ba9645020e261ffd66
-        checksum/secret: e701c13d3802c2873f0e7c4dd91682677f46a39faed4cdfd0d22144e5aea6e18
+        checksum/config: 126a22e93a7b94aa5314e333d3294572f4a30a5b651e034172153335232b8878
+        checksum/secret: 2609a6f7741b03b318a866124dd892bc7384a3b2792ddb39f69f0efb4984453f
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -168,7 +168,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -220,11 +220,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/filesystem.yaml

🔍 Click to view complete diff
--- /tmp/before-filesystem.yaml	2026-07-21 13:37:51.685472018 +0000
+++ /tmp/after-filesystem.yaml	2026-07-21 13:37:51.648471781 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -30,11 +30,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-filesystem.properties: |-
     # S3Proxy configuration
@@ -57,11 +57,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   accessModes:
     - ReadWriteOnce
@@ -75,11 +75,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -97,11 +97,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -111,8 +111,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 8170e58aee8089f4e73cb70cfbb933cbe7ca01ade7816938d9fcdb4c56aebb99
-        checksum/secret: 77b9a3fb75c912d61a61320cad5209da473696a8869802445fc7669d81e0db5d
+        checksum/config: 36fcd2de9d23244660a4f0e43d2d3e4cd242f230ff199a30aa3b7f92f5bf8bc0
+        checksum/secret: 1d42b334090ce48d3c9f56825f6db09767dc89b0acf85f950c6e6176f33651e1
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -186,7 +186,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -243,11 +243,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/gcs.yaml

🔍 Click to view complete diff
--- /tmp/before-gcs.yaml	2026-07-21 13:37:51.771472570 +0000
+++ /tmp/after-gcs.yaml	2026-07-21 13:37:51.733472326 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -30,11 +30,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-google-cloud-storage.properties: |-
     # S3Proxy configuration
@@ -56,11 +56,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -78,11 +78,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 3abb723d783150edcb6511b2f8d242fa8ab0e9ac45f3bab16cdb4f04c4cc6b6b
-        checksum/secret: 77b9a3fb75c912d61a61320cad5209da473696a8869802445fc7669d81e0db5d
+        checksum/config: a1d55b0a9269ab9968e03c08fb806a4796539e9a3da7a91dcb097106aa87732c
+        checksum/secret: 1d42b334090ce48d3c9f56825f6db09767dc89b0acf85f950c6e6176f33651e1
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -167,7 +167,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -229,11 +229,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/ingress.yaml

🔍 Click to view complete diff
--- /tmp/before-ingress.yaml	2026-07-21 13:37:51.858473127 +0000
+++ /tmp/after-ingress.yaml	2026-07-21 13:37:51.819472877 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 ---
 # Source: s3proxy/templates/secret.yaml
 apiVersion: v1
@@ -17,11 +17,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -42,11 +42,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-filesystem.properties: |-
     # S3Proxy configuration
@@ -74,11 +74,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   accessModes:
     - ReadWriteOnce
@@ -92,11 +92,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -114,11 +114,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -128,8 +128,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 8a3911c6cf8a2da1755fc1493bb3ed54b3d31ee624168608bf8fbeca6a326103
-        checksum/secret: 77b9a3fb75c912d61a61320cad5209da473696a8869802445fc7669d81e0db5d
+        checksum/config: a1d9897c1c974be30d3dd67a610c507f095e78b6fd27642989c959a33b74a7e4
+        checksum/secret: 1d42b334090ce48d3c9f56825f6db09767dc89b0acf85f950c6e6176f33651e1
         prometheus.io/scrape: "true"
       labels:
         app.kubernetes.io/name: s3proxy
@@ -206,7 +206,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -271,11 +271,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     nginx.ingress.kubernetes.io/proxy-body-size: "0"
 spec:
@@ -302,11 +302,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/multi-backend.yaml

🔍 Click to view complete diff
--- /tmp/before-multi-backend.yaml	2026-07-21 13:37:51.943473672 +0000
+++ /tmp/after-multi-backend.yaml	2026-07-21 13:37:51.906473435 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -36,11 +36,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-s3.properties: |-
     # S3Proxy configuration
@@ -74,11 +74,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -96,11 +96,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -110,8 +110,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 4403f3c7aa13bfacbc06e7b85832f192b3381af6ab30f83571b1e3283b746af0
-        checksum/secret: 269ee01afaae17c319917f7589fd96723648077fe787f7c9ecf8e0a3ff5b0692
+        checksum/config: 80aadf3b983d1b523c32f43eee3dac3d111fd7e6d7cb05048eb60d9f808e7ab3
+        checksum/secret: 2129e05f3888b27fe000b62aa4ef52719995bb0e2f224a26568db5f522de7877
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -185,7 +185,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -239,11 +239,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/openstack-swift.yaml

🔍 Click to view complete diff
--- /tmp/before-openstack-swift.yaml	2026-07-21 13:37:52.029474223 +0000
+++ /tmp/after-openstack-swift.yaml	2026-07-21 13:37:51.991473980 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -33,11 +33,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-openstack-swift.properties: |-
     # S3Proxy configuration
@@ -59,11 +59,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -81,11 +81,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -95,8 +95,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 64047ae30c62a791c4913072ab70cea2cf17d6e1211eeee0e90a8587c8b076e6
-        checksum/secret: ce877df80f37184454586acd346548f9ac3e91089a0769734ec4f5076796c4b4
+        checksum/config: 574fd66930bc377cac7932362f8914bb12240d0ad78516f37ea74d68d19ab7d6
+        checksum/secret: 831d35762f2abfbb7b470bbf6271ad9bd932f70e1d0decb7cf2b91ff3f131f4a
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -170,7 +170,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -222,11 +222,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/rackspace.yaml

🔍 Click to view complete diff
--- /tmp/before-rackspace.yaml	2026-07-21 13:37:52.124474832 +0000
+++ /tmp/after-rackspace.yaml	2026-07-21 13:37:52.086474589 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -33,11 +33,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-rackspace-cloudfiles.properties: |-
     # S3Proxy configuration
@@ -57,11 +57,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -79,11 +79,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -93,8 +93,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: b2f1a268a7249299ffad09cb67764952ac46848d0dc9baf160ea2669a8daa740
-        checksum/secret: 87d41f51442fe66db0bba387ee5ce167e7c4df4102fcd1f2e34e5226bd31c7c6
+        checksum/config: e889c811611b0fe5205900ad33b5618148cd2c626c04e57994075f50f4a17ab7
+        checksum/secret: 5a1911476e05464e9735a9ecb872c64aef0215dac1821c4e27c596116477bf7d
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -168,7 +168,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -220,11 +220,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/s3.yaml

🔍 Click to view complete diff
--- /tmp/before-s3.yaml	2026-07-21 13:37:52.223475467 +0000
+++ /tmp/after-s3.yaml	2026-07-21 13:37:52.175475159 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -33,11 +33,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-s3.properties: |-
     # S3Proxy configuration
@@ -59,11 +59,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -81,11 +81,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -95,8 +95,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 9773c76ca7fd38a91afb3822b530eb57504c6a9f05e74c18236fb68d3e9c9c79
-        checksum/secret: 32205d2a4b18965ce31017268366e9f0a847ec28c00bb4053990e31bc538ea78
+        checksum/config: e13d1e311bcf409e2ece6839058e00d5a6abe89cbf2114979a85b070f88b71ea
+        checksum/secret: df583265e53f637a0b629b996df2635cd384b3109111467ddfdd948b7abc9eb6
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -170,7 +170,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -222,11 +222,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

📝 Changes in charts/s3proxy with test-values/transient.yaml

🔍 Click to view complete diff
--- /tmp/before-transient.yaml	2026-07-21 13:37:52.321476095 +0000
+++ /tmp/after-transient.yaml	2026-07-21 13:37:52.279475826 +0000
@@ -5,11 +5,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 type: Opaque
 stringData:
   # Sensitive properties merged into the backend properties files by the
@@ -30,11 +30,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 data:
   backend-transient.properties: |-
     # S3Proxy configuration
@@ -56,11 +56,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   type: ClusterIP
   ports:
@@ -78,11 +78,11 @@
 metadata:
   name: release-s3proxy
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
 spec:
   replicas: 1
   selector:
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: b1d9e690c7afa5af2521ab9ccd4ef774675b339524a7924918c3889db88b08ed
-        checksum/secret: 77b9a3fb75c912d61a61320cad5209da473696a8869802445fc7669d81e0db5d
+        checksum/config: f87d505e43317a7a6636d07472958879dc67368f65b642121ac8395a25a163fc
+        checksum/secret: 1d42b334090ce48d3c9f56825f6db09767dc89b0acf85f950c6e6176f33651e1
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -167,7 +167,7 @@
         - name: s3proxy
           securityContext:
             {}
-          image: "andrewgaul/s3proxy:2.7.0"
+          image: "andrewgaul/s3proxy:3.3.0"
           imagePullPolicy: IfNotPresent
           command:
             - java
@@ -219,11 +219,11 @@
 metadata:
   name: "release-s3proxy-test-connection"
   labels:
-    helm.sh/chart: s3proxy-0.1.0
     app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.2.0
     app.kubernetes.io/instance: release
-    app.kubernetes.io/version: "2.7.0"
     app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
   annotations:
     "helm.sh/hook": test
 spec:

@github-actions

Copy link
Copy Markdown

📝 README.md Preview

The following changes to README.md will be applied when this PR is merged:

Click to expand diff
diff --git a/README.md b/README.md
index 79b854b..6d94a16 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,38 @@
 # s3proxy
 
-![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.7.0](https://img.shields.io/badge/AppVersion-2.7.0-informational?style=flat-square)
+![Version: 0.2.0](https://img.shields.io/badge/Version-0.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.3.0](https://img.shields.io/badge/AppVersion-3.3.0-informational?style=flat-square)
 
 A Helm chart for deploying S3Proxy - Access other storage backends via the S3 API
 
+## Requirements
+
+| Repository | Name | Version |
+|------------|------|---------|
+| oci://ghcr.io/comet-ml | comet-common | 0.3.0 |
+
 ## Prerequisites
 
 - Kubernetes 1.19+
 - Helm 3.2.0+
 - PV provisioner support in the underlying infrastructure (if using filesystem backend with persistence)
 
+## S3Proxy version compatibility
+
+The chart tracks S3Proxy (`andrewgaul/s3proxy`) through `appVersion` (currently `3.3.0`); override it with `image.tag`. Minimum supported version is `2.7.0`.
+
+S3Proxy `3.0.0` deprecated the Apache jclouds storage backends (`s3`, `aws-s3`, `azureblob`, `filesystem`, `transient`) in favor of SDK / NIO2 providers. Upstream has announced that `3.3.0` is the last release to bundle jclouds and that future releases "will lack its Atmos and B2 storage backends" (no jclouds-free release has shipped yet; `3.3.0` remains the latest). The jclouds providers still work on 3.x, but are deprecated:
+
+- `filesystem` / `transient`: already default to the non-deprecated `*-nio2` variants (`nio2: true`).
+- `azureblob`: **defaults to `provider: azureblob-sdk`** (the Azure SDK provider, which signs correctly against custom endpoints such as Azurite). The legacy jclouds `azureblob` provider is deprecated and mis-signs against custom endpoints; set `provider: azureblob` only if you specifically need it. On real Azure, `azureblob-sdk` may require `config.backends.azureblob.regions` for bucket creation.
+- `s3`, `googleCloudStorage`, `openstackSwift`: SDK providers exist upstream (`aws-s3-sdk`, `google-cloud-storage-sdk`, `openstack-swift-sdk`). `rackspaceCloudfiles` is OpenStack-Swift-compatible and may be served by `openstack-swift-sdk`. Migrating the chart defaults to the SDK providers is tracked separately.
+- `b2` (and Atmos, if ever added) are jclouds-only with **no SDK successor**. These are the backends upstream has said future releases will drop.
+
+### Our compatibility plan
+
+- **Through S3Proxy `3.3.0` (chart `0.x`):** all current backends, including the jclouds-only `b2`, are supported. This is where the chart sits today.
+- **Guardrail:** the chart **hard-fails at render time** if `b2` (or `atmos`) is enabled while the effective S3Proxy version (`image.tag`, else `appVersion`) is greater than `3.3.0`, so an upgrade past the jclouds sunset cannot silently ship a broken backend. Pin `image.tag` to `3.3.0` or earlier, or disable the backend.
+- **When S3Proxy ships its first jclouds-free release:** the chart moves to `1.x.x` (major bump), migrates the remaining backends to their SDK providers, and drops `b2`/`atmos`. Tracked in the SDK-migration follow-up.
+
 ## Installation
 
 ### Install the chart
@@ -136,9 +159,9 @@ The following section lists the configurable parameters of the s3proxy chart and
 		</tr>
 		<tr>
 			<td><code>config.backends.azureblob.provider</code></td>
-			<td>Provider type (azureblob or azureblob-sdk)</td>
+			<td>Provider type. Defaults to <code>azureblob-sdk</code> (Azure SDK): it signs correctly against custom endpoints (Azurite, Azure Gov/China, private endpoints) and is the non-deprecated provider on S3Proxy 3.x. The legacy jclouds <code>azureblob</code> provider is deprecated upstream and mis-signs against custom endpoints; on real Azure <code>azureblob-sdk</code> may require <code>regions</code> to be set for bucket creation.</td>
 			<td><code>string</code></td>
-			<td><code>"azureblob"</code></td>
+			<td><code>"azureblob-sdk"</code></td>
 		</tr>
 		<tr>
 			<td><code>config.backends.azureblob.regions</code></td>

Note: This is an automated preview generated by helm-docs. The changes will be automatically applied upon merge.

@CRThaze
CRThaze merged commit e4bbe39 into main Jul 21, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant