Skip to content

Wire backend key.existingSecret into deployments (GH #34) - #35

Merged
CRThaze merged 1 commit into
mainfrom
CRThaze/s3proxy-issue-34/backend-existing-secret
Sep 2, 2026
Merged

Wire backend key.existingSecret into deployments (GH #34)#35
CRThaze merged 1 commit into
mainfrom
CRThaze/s3proxy-issue-34/backend-existing-secret

Conversation

@CRThaze

@CRThaze CRThaze commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Fixes #34.

Problem

config.backends.<name>.*.existingSecret is documented in values.yaml for s3, azureblob (key + sasToken), b2, openstackSwift and rackspace (added in 3556147, "consistent with gcs"), but it was never referenced by any template. Only GCS's privateKey.existingSecret and the TLS keystore/keystorePassword ones were ever actually wired. So the reporter's azureblob.key.existingSecret: some-secret rendered jclouds.credential= (empty) and the pod could not authenticate — and the same silent failure affected every non-GCS backend.

Fix

Extend the one mechanism credentials already flow through (the merge-configs initContainer), rather than patching a single backend:

  • _helpers.tpls3proxy.externalBackendSecrets yields, per enabled backend that references an existingSecret, {name, backend, prop, secret, key}.
  • deployment.yaml — one range projects each secret as a file named for its jclouds property under /backend-secret/<backend>/, and the init loop appends <property>=<value> to that backend's properties file (mirrors the existing secret-<backend>.properties append). Covers jclouds.credential for all five backends plus jclouds.azureblob.sas.
  • configmap.yaml — azureblob no longer emits an empty jclouds.credential= when the key comes from an existing secret (the init container supplies it).
  • Chart.yaml0.4.1 → 0.4.2.

Tests

  • Render leg test-values/azureblob-existing-secret.yaml added to the lint-render matrix.
  • End-to-end functional leg azureblob-existing-secret (Azurite mock, account key delivered via a pre-created Secret) — a broken wiring leaves jclouds.credential empty and the round-trip fails against Azurite.

Verification

helm lint/template clean; init-container merge simulated → exactly one correct jclouds.credential; 0 injected volumes on all inline/no-secret legs (no regression), 1 on the existingSecret leg.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@CRThaze
CRThaze force-pushed the CRThaze/s3proxy-issue-34/backend-existing-secret branch from d35123e to 59fab56 Compare September 2, 2026 12:29
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

config.backends.<name>.*.existingSecret was documented in values.yaml for
s3, azureblob (key + sasToken), b2, openstackSwift and rackspace (commit
3556147, "consistent with gcs") but never referenced by any template — only
GCS's privateKey.existingSecret and the TLS keystore ones were ever wired.
So an existingSecret reference silently rendered an empty jclouds.credential.

Extend the existing merge-configs initContainer mechanism generically:

- _helpers.tpl: s3proxy.externalBackendSecrets lists each enabled backend
  that references an existingSecret (backend, jclouds property, secret, key).
- deployment.yaml: one range projects each secret as a file named for its
  jclouds property under /backend-secret/<backend>/, and the init loop
  appends "<property>=<value>" to that backend's properties file.
- configmap.yaml: azureblob no longer emits an empty jclouds.credential=
  when the key comes from an existing secret (the init container adds it).

Coverage: render leg (test-values/azureblob-existing-secret.yaml +
lint-render matrix) and an end-to-end functional leg (Azurite, account key
via a pre-created Secret).
@CRThaze
CRThaze force-pushed the CRThaze/s3proxy-issue-34/backend-existing-secret branch from 59fab56 to e2e7fc8 Compare September 2, 2026 12:59
@github-actions

github-actions Bot commented Sep 2, 2026

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 +21 -8 🔄 Changes Detected (summary)
test-values/azureblob-existing-secret.yaml charts/s3proxy +282 -0 🔄 Changes Detected (summary)
test-values/azureblob.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/b2.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/filesystem.yaml charts/s3proxy +21 -8 🔄 Changes Detected (summary)
test-values/gcs.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/ingress.yaml charts/s3proxy +23 -10 🔄 Changes Detected (summary)
test-values/multi-backend.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/openstack-swift.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/rackspace.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/s3.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)
test-values/tls-existing-secret.yaml charts/s3proxy +21 -8 🔄 Changes Detected (summary)
test-values/tls.yaml charts/s3proxy +21 -8 🔄 Changes Detected (summary)
test-values/transient.yaml charts/s3proxy +20 -7 🔄 Changes Detected (summary)

🔍 Detailed Changes

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

🔍 Click to view complete diff
--- /tmp/before-autoscaling.yaml	2026-09-02 13:00:08.333641163 +0000
+++ /tmp/after-autoscaling.yaml	2026-09-02 13:00:08.290640064 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -31,7 +31,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -58,7 +58,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -80,7 +80,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 097ab70dfaf2faa3b954ecda5d4bd74e636eb4763b8b85ed5ea42e54e0a3a9f5
-        checksum/secret: 14db8cf121060016beeff01209d9908421e56e3aaf0107021e8ca8c91807d21e
+        checksum/config: 9c48ea4bdc2b5f5dc8c3c2dea100343164fff98e4c5e6d059e1877a2b9e5e545
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -152,6 +152,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -248,7 +261,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -280,7 +293,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-azureblob-existing-secret.yaml	2026-09-02 13:00:08.384642467 +0000
+++ /tmp/after-azureblob-existing-secret.yaml	2026-09-02 13:00:08.383642441 +0000
@@ -0,0 +1,282 @@
+---
+# Source: s3proxy/templates/secret.yaml
+apiVersion: v1
+kind: Secret
+metadata:
+  name: release-s3proxy
+  labels:
+    app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.4.2
+    app.kubernetes.io/instance: release
+    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
+  # merge-configs initContainer:
+  #   * secret-common.properties  -> appended to EVERY backend file (client auth).
+  #   * secret-<backend>.properties -> appended ONLY to that backend's file, so
+  #     each backend gets its own jclouds.credential and never another backend's.
+  # Local backends (filesystem/transient) need no secret file; their placeholder
+  # jclouds.identity/credential come from the ConfigMap.
+  secret-common.properties: |
+    # S3Proxy client authentication credentials (shared by all backends)
+    s3proxy.identity=test-access-key
+    s3proxy.credential=test-secret-key
+---
+# Source: s3proxy/templates/configmap.yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: release-s3proxy
+  labels:
+    app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.4.2
+    app.kubernetes.io/instance: release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
+data:
+  backend-azureblob.properties: |-
+    # S3Proxy configuration
+    s3proxy.endpoint=http://0.0.0.0:9000
+    s3proxy.authorization=aws-v4
+    # Authentication credentials will be merged from the secret properties file
+    # s3proxy.identity and s3proxy.credential will be provided by the secret
+
+    # Azure Blob backend configuration
+    jclouds.provider=azureblob-sdk
+    jclouds.endpoint=https://teststorageaccount.blob.core.windows.net
+    jclouds.identity=teststorageaccount
+---
+# Source: s3proxy/templates/service.yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: release-s3proxy
+  labels:
+    app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.4.2
+    app.kubernetes.io/instance: release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
+spec:
+  type: ClusterIP
+  ports:
+    - port: 9000
+      targetPort: 9000
+      protocol: TCP
+      name: http
+  selector:
+    app.kubernetes.io/name: s3proxy
+    app.kubernetes.io/instance: release
+---
+# Source: s3proxy/templates/deployment.yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: release-s3proxy
+  labels:
+    app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.4.2
+    app.kubernetes.io/instance: release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app.kubernetes.io/name: s3proxy
+      app.kubernetes.io/instance: release
+  template:
+    metadata:
+      annotations:
+        checksum/config: ec2174236edd949a3c25dd9f9cac411b9ac9671651c2569c3f0275dbce067038
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
+      labels:
+        app.kubernetes.io/name: s3proxy
+        app.kubernetes.io/instance: release
+    spec:
+      serviceAccountName: default
+      terminationGracePeriodSeconds: 40
+      securityContext:
+        {}
+      initContainers:
+        - name: merge-configs
+          securityContext:
+            {}
+          image: "busybox:1.36"
+          imagePullPolicy: IfNotPresent
+          command: ["sh", "-c"]
+          args:
+            - |
+              set -e
+              echo "Merging configuration files..."
+
+              # secret-common.properties holds the client-facing auth and is
+              # appended to every backend file. Each backend additionally gets
+              # its own secret-<backend>.properties (its jclouds.credential), so
+              # one backend's credential never leaks into another's file.
+              COMMON_SECRET="/secret/secret-common.properties"
+
+              # Loop through all properties files in the config directory
+              for config_file in /config/*.properties
+              do
+                if [ -f "$config_file" ]
+                then
+                  # Get the filename, e.g. backend-s3.properties
+                  filename=$(basename "$config_file")
+                  output_file="/merged-config/$filename"
+
+                  echo "Processing $filename..."
+
+                  # Copy base config file to output
+                  cp "$config_file" "$output_file"
+
+                  # Append the shared client-auth secret, if present
+                  if [ -f "$COMMON_SECRET" ]
+                  then
+                    echo "" >> "$output_file"  # Add newline separator
+                    cat "$COMMON_SECRET" >> "$output_file"
+                  fi
+
+                  # Append this backend's own secret: backend-<name>.properties
+                  # pairs with secret-<name>.properties
+                  backend="${filename#backend-}"
+                  backend="${backend%.properties}"
+                  backend_secret="/secret/secret-${backend}.properties"
+                  if [ -f "$backend_secret" ]
+                  then
+                    echo "" >> "$output_file"  # Add newline separator
+                    cat "$backend_secret" >> "$output_file"
+                  fi
+
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
+                  # TLS keystore password from an existing Secret (kept out of the
+                  # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
+                  # is set; an inline password arrives via secret-common.properties instead.
+                  if [ -f "/tls-password/keystore-password" ]
+                  then
+                    echo "" >> "$output_file"  # Add newline separator
+                    echo "s3proxy.keystore-password=$(cat /tls-password/keystore-password)" >> "$output_file"
+                  fi
+                fi
+              done
+
+              echo "Configuration files merged successfully."
+          volumeMounts:
+            - name: config
+              mountPath: /config
+              readOnly: true
+            - name: secret-config
+              mountPath: /secret
+              readOnly: true
+            - name: merged-config
+              mountPath: /merged-config
+            - name: azureblob-credential
+              mountPath: /backend-secret/azureblob/jclouds.credential
+              subPath: jclouds.credential
+              readOnly: true
+      containers:
+        - name: s3proxy
+          securityContext:
+            {}
+          image: "andrewgaul/s3proxy:3.3.0"
+          imagePullPolicy: IfNotPresent
+          command:
+            - java
+          args:
+            - -DLOG_LEVEL=INFO
+            - -jar
+            - /opt/s3proxy/s3proxy
+            - "--properties"
+            - "/merged-config/backend-azureblob.properties"
+          ports:
+            - name: http
+              containerPort: 9000
+              protocol: TCP
+          # /healthz responds without authentication (S3Proxy >= 3.2.0),
+          # distinguishing a serving proxy from one that merely accepts TCP.
+          # The kubelet does not verify certificates for HTTPS probes, so a
+          # self-signed keystore works when native TLS is enabled.  S3Proxy
+          # releases after 3.3.0 fail readiness while draining in-flight
+          # requests on shutdown, removing terminating pods from Service
+          # endpoints.
+          livenessProbe:
+            httpGet:
+              path: /healthz
+              port: http
+            initialDelaySeconds: 30
+            periodSeconds: 10
+            timeoutSeconds: 5
+            successThreshold: 1
+            failureThreshold: 3
+          readinessProbe:
+            httpGet:
+              path: /healthz
+              port: http
+            initialDelaySeconds: 10
+            periodSeconds: 5
+            timeoutSeconds: 3
+            successThreshold: 1
+            failureThreshold: 3
+          lifecycle:
+            # Endpoint removal propagates asynchronously; keep serving
+            # briefly so late-routed connections do not land on a pod that
+            # has already begun shutting down.
+            preStop:
+              exec:
+                command: ["sleep", "5"]
+          resources:
+            {}
+          volumeMounts:
+            - name: merged-config
+              mountPath: /merged-config
+              readOnly: true
+      volumes:
+        - name: config
+          configMap:
+            name: release-s3proxy
+        - name: secret-config
+          secret:
+            secretName: release-s3proxy
+        - name: merged-config
+          emptyDir: {}
+        - name: azureblob-credential
+          secret:
+            secretName: my-azure-key
+            items:
+              - key: accountKey
+                path: jclouds.credential
+---
+# Source: s3proxy/templates/tests/test-connection.yaml
+apiVersion: v1
+kind: Pod
+metadata:
+  name: "release-s3proxy-test-connection"
+  labels:
+    app.kubernetes.io/name: s3proxy
+    helm.sh/chart: s3proxy-0.4.2
+    app.kubernetes.io/instance: release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/version: "3.3.0"
+  annotations:
+    "helm.sh/hook": test
+spec:
+  containers:
+    - name: wget
+      image: busybox
+      command: ['wget']
+      args: ['release-s3proxy:9000']
+  restartPolicy: Never

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

🔍 Click to view complete diff
--- /tmp/before-azureblob.yaml	2026-09-02 13:00:08.474644768 +0000
+++ /tmp/after-azureblob.yaml	2026-09-02 13:00:08.433643720 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -34,7 +34,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -58,7 +58,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -80,7 +80,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -93,8 +93,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 68410adcbefc463a6903fd658d779db3be561828098f5880a8b8a53d6a2d9f80
-        checksum/secret: 440e3133853b12edf0f39091ecad99d006bc9c4575e243f5de2ddf163e2ba3d4
+        checksum/config: f42bc5ae87f97216f48025b9d5876984feea9866f13f5417198050640f62d94c
+        checksum/secret: facbe8b3bed3948eeffae4e93d63ebf75c250127bb3e28944fdabf38389fd30d
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -153,6 +153,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -247,7 +260,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-b2.yaml	2026-09-02 13:00:08.571647248 +0000
+++ /tmp/after-b2.yaml	2026-09-02 13:00:08.524646046 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -34,7 +34,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -58,7 +58,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -80,7 +80,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -93,8 +93,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 1bf2489da37e2273e8c9c45b071d2adc588036c08c0eb17a459472e39cd7e424
-        checksum/secret: 943501d9790961a595a8a05eb2cf4edeafea6185f6ee4f1891496764b1c38b50
+        checksum/config: 94c65e4273d8c24b0900babf8db26dd08856577f04807ed1945c46a298418529
+        checksum/secret: a8209718a7ee6d0faa38adac0b2698e26acd8148da9941125f78ea3d0942c130
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -153,6 +153,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -247,7 +260,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-filesystem.yaml	2026-09-02 13:00:08.666649676 +0000
+++ /tmp/after-filesystem.yaml	2026-09-02 13:00:08.623648577 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -31,7 +31,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -58,7 +58,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -76,7 +76,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -98,7 +98,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -111,8 +111,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 097ab70dfaf2faa3b954ecda5d4bd74e636eb4763b8b85ed5ea42e54e0a3a9f5
-        checksum/secret: 14db8cf121060016beeff01209d9908421e56e3aaf0107021e8ca8c91807d21e
+        checksum/config: 9c48ea4bdc2b5f5dc8c3c2dea100343164fff98e4c5e6d059e1877a2b9e5e545
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -171,6 +171,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -270,7 +283,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-gcs.yaml	2026-09-02 13:00:08.758652028 +0000
+++ /tmp/after-gcs.yaml	2026-09-02 13:00:08.715650929 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -31,7 +31,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -57,7 +57,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -79,7 +79,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: e5e51400312b54a3979d786fca8c558019d9f6d8e46b01c75b26dd445060cff5
-        checksum/secret: 14db8cf121060016beeff01209d9908421e56e3aaf0107021e8ca8c91807d21e
+        checksum/config: 1cdc538f993e50a96d0c2ac46a7bb0c846b5609e15097ee94825e6aa2b821a73
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -152,6 +152,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -256,7 +269,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-ingress.yaml	2026-09-02 13:00:08.852654431 +0000
+++ /tmp/after-ingress.yaml	2026-09-02 13:00:08.808653306 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -18,7 +18,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -43,7 +43,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -75,7 +75,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -93,7 +93,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -115,7 +115,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -128,8 +128,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 04a741f275584d618561d28b2f02f1a1b4a1c0e46adbe3976735739e19211cf7
-        checksum/secret: 14db8cf121060016beeff01209d9908421e56e3aaf0107021e8ca8c91807d21e
+        checksum/config: a9971762af86c4668af353c0b93b91a2ea8af9b1aa15aa5dcf6b88ec47fab2a6
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
         prometheus.io/scrape: "true"
       labels:
         app.kubernetes.io/name: s3proxy
@@ -191,6 +191,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -298,7 +311,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -329,7 +342,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-multi-backend.yaml	2026-09-02 13:00:08.971657474 +0000
+++ /tmp/after-multi-backend.yaml	2026-09-02 13:00:08.912655965 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -37,7 +37,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -74,7 +74,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -96,7 +96,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -109,8 +109,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 3b0b30261c03a2569521f990f340c1482041b07860655f10b1c920bf917030b6
-        checksum/secret: 683754c78316832f195fd54c3dd4514fd44575ec68099f4f8f22d024903fe51e
+        checksum/config: 8a37a05071e4f5884b906ef57020bffb97d37628dd4adcfede644c4d6fb4ae80
+        checksum/secret: 6192dc949b646a43f063f6a4bc088153abc3aabe8bd08d27f61cd0ca1a144ccc
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -169,6 +169,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -265,7 +278,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-openstack-swift.yaml	2026-09-02 13:00:09.079660235 +0000
+++ /tmp/after-openstack-swift.yaml	2026-09-02 13:00:09.024658828 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -34,7 +34,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -60,7 +60,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -82,7 +82,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -95,8 +95,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 63e54d6814229e9e18a4a1ca6d00616055f0ce59d28c57fe1d0062200e22927f
-        checksum/secret: e538e6c3ca41ffb4fba2121961dff1a4bba78a33615fdf0df7137d0db73a64cb
+        checksum/config: a00537fea00520cc22b2354647ff3efce69268565c1100ec70acfac7aa7b6596
+        checksum/secret: d40aececd2e388685a2ba721a0843b1f66951acc8cc63af4bca1e15854c872af
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -155,6 +155,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -249,7 +262,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-rackspace.yaml	2026-09-02 13:00:09.180662816 +0000
+++ /tmp/after-rackspace.yaml	2026-09-02 13:00:09.137661717 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -34,7 +34,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -58,7 +58,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -80,7 +80,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -93,8 +93,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 85d670f1c21986576d5d424a0f3fea32845108029beebc6fb2f7404f68e82a90
-        checksum/secret: b048351126ba9f3628c330ede77fd3cec109c37b2f5adf0a78aa80575871ccab
+        checksum/config: f28081494e0b604a0656588f003ed70455dd1e5b8b9d5fdeb979771e79d747b8
+        checksum/secret: cd8ec7b7a39d8b707c277b03a510f19eee5684196f2819ed152f355235f0c290
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -153,6 +153,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -247,7 +260,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-s3.yaml	2026-09-02 13:00:09.274665220 +0000
+++ /tmp/after-s3.yaml	2026-09-02 13:00:09.231664120 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -34,7 +34,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -60,7 +60,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -82,7 +82,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -95,8 +95,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: b8057b53e83c5b5605d6dacb965dc6997b2ce77f10b2b12cdfdaf9250bb29eb9
-        checksum/secret: 63869a895a5bd0f63078b0059eededea684a46264ec940c4449e1f4bc3761d32
+        checksum/config: 07ea99773048abba1123408771014c09ec5a788817e875a6043928f9855fe195
+        checksum/secret: bfbbe9f275c16c18d8479bd263202e22deb249b4858c72b0539b9bb3068b5b78
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -155,6 +155,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -249,7 +262,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

📝 Changes in charts/s3proxy with test-values/tls-existing-secret.yaml

🔍 Click to view complete diff
--- /tmp/before-tls-existing-secret.yaml	2026-09-02 13:00:09.367667597 +0000
+++ /tmp/after-tls-existing-secret.yaml	2026-09-02 13:00:09.323666472 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -31,7 +31,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -62,7 +62,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -80,7 +80,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -102,7 +102,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -115,8 +115,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 476a43dd617a2f162d84a9d613bdc7a14d2ac0b270351a5b99dc86e33df6ea80
-        checksum/secret: 4c529851897be183a3aab330dd34b633f857508db9f8d9eaf473a70a72ec052a
+        checksum/config: f45a69bf771b98364f06d977c9fa79a7b4ee8908028a8dbc5fff1c7042f35e7d
+        checksum/secret: 714034408ef3909705470f5f3ea809311dbc113ca65c35ac4206bc5a0c3d7749
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -175,6 +175,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -294,7 +307,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-tls.yaml	2026-09-02 13:00:09.460669975 +0000
+++ /tmp/after-tls.yaml	2026-09-02 13:00:09.417668875 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -38,7 +38,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -69,7 +69,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -87,7 +87,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -109,7 +109,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -122,8 +122,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: 476a43dd617a2f162d84a9d613bdc7a14d2ac0b270351a5b99dc86e33df6ea80
-        checksum/secret: 52da7288f53370c9fb5685160ac3ab2ac0564c31bd8c153adf3d44f02c4a9b1e
+        checksum/config: f45a69bf771b98364f06d977c9fa79a7b4ee8908028a8dbc5fff1c7042f35e7d
+        checksum/secret: f0cc8fc8ab1523cc0b7636d3619c62b9e1f7a9520bf4134abc2a345c1a119d81
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -182,6 +182,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -292,7 +305,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

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

🔍 Click to view complete diff
--- /tmp/before-transient.yaml	2026-09-02 13:00:09.552672327 +0000
+++ /tmp/after-transient.yaml	2026-09-02 13:00:09.509671227 +0000
@@ -6,7 +6,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -31,7 +31,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -57,7 +57,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -79,7 +79,7 @@
   name: release-s3proxy
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"
@@ -92,8 +92,8 @@
   template:
     metadata:
       annotations:
-        checksum/config: a7e793d6421f223d5299248005b9c5a571e2361e7516cf994c048e8ec8643c9f
-        checksum/secret: 14db8cf121060016beeff01209d9908421e56e3aaf0107021e8ca8c91807d21e
+        checksum/config: f6ce0433827d541ec2be46f9dc4043dff96e806f14aafb90b7235df8fd394f4a
+        checksum/secret: 11983a9b179c4038377f6e6d674d209f68d9af1f7a6ef899d33888a646fbaa29
       labels:
         app.kubernetes.io/name: s3proxy
         app.kubernetes.io/instance: release
@@ -152,6 +152,19 @@
                     cat "$backend_secret" >> "$output_file"
                   fi
 
+                  # Backend credentials from an existingSecret: each file under
+                  # /backend-secret/<backend>/ is named for the jclouds property it holds.
+                  backend_secret_dir="/backend-secret/${backend}"
+                  if [ -d "$backend_secret_dir" ]
+                  then
+                    for prop_file in "$backend_secret_dir"/*
+                    do
+                      [ -f "$prop_file" ] || continue
+                      echo "" >> "$output_file"  # Add newline separator
+                      printf '%s=%s\n' "$(basename "$prop_file")" "$(cat "$prop_file")" >> "$output_file"
+                    done
+                  fi
+
                   # TLS keystore password from an existing Secret (kept out of the
                   # ConfigMap). Mounted only when config.tls.keystorePassword.existingSecret
                   # is set; an inline password arrives via secret-common.properties instead.
@@ -246,7 +259,7 @@
   name: "release-s3proxy-test-connection"
   labels:
     app.kubernetes.io/name: s3proxy
-    helm.sh/chart: s3proxy-0.4.1
+    helm.sh/chart: s3proxy-0.4.2
     app.kubernetes.io/instance: release
     app.kubernetes.io/managed-by: Helm
     app.kubernetes.io/version: "3.3.0"

@github-actions

github-actions Bot commented Sep 2, 2026

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 5d3b508..eead0ce 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # s3proxy
 
-![Version: 0.4.1](https://img.shields.io/badge/Version-0.4.1-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)
+![Version: 0.4.2](https://img.shields.io/badge/Version-0.4.2-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
 

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

@CRThaze
CRThaze merged commit c5430c3 into main Sep 2, 2026
24 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.

Azure Blob Existing secret does not get applied

1 participant