Compare commits

...

5 Commits

Author SHA1 Message Date
a4b749cd78 chore(deps): update helm/chart-testing-action action to v2.8.0 2026-04-26 20:35:23 +00:00
5a73a500a2 feat: quote values
All checks were successful
lint-and-test / lint-helm (push) Successful in 14s
release-charts-rclone-bucket / release (push) Successful in 2m49s
lint-and-test / chart-testing (push) Successful in 3m28s
renovate / renovate (push) Successful in 48s
2026-04-26 15:34:12 -05:00
67d0dbcf71 feat: change helper
All checks were successful
lint-and-test / lint-helm (push) Successful in 19s
lint-and-test / chart-testing (push) Successful in 40s
release-charts-rclone-bucket / release (push) Successful in 25s
renovate / renovate (push) Successful in 40s
2026-04-26 15:15:36 -05:00
f901d1574b fix: wrong destination secret generation
All checks were successful
lint-and-test / lint-helm (push) Successful in 15s
lint-and-test / chart-testing (push) Successful in 29s
renovate / renovate (push) Successful in 46s
release-charts-rclone-bucket / release (push) Successful in 3m8s
2026-04-26 14:13:08 -05:00
73779ad42b feat: add include and exclude to prune
All checks were successful
lint-and-test / lint-helm (push) Successful in 14s
lint-and-test / chart-testing (push) Successful in 25s
release-charts-rclone-bucket / release (push) Successful in 20s
renovate / renovate (push) Successful in 57s
2026-04-26 14:12:11 -05:00
7 changed files with 58 additions and 48 deletions

View File

@@ -42,7 +42,7 @@ jobs:
python-version: '3.14' python-version: '3.14'
- name: Set up Chart Testing - name: Set up Chart Testing
uses: helm/chart-testing-action@v2.7.0 uses: helm/chart-testing-action@v2.8.0
with: with:
yamale_version: "6.0.0" yamale_version: "6.0.0"

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: rclone-bucket name: rclone-bucket
version: 0.3.0 version: 0.4.3
description: Rclone CronJob to replicate buckets description: Rclone CronJob to replicate buckets
keywords: keywords:
- rclone-bucket - rclone-bucket

View File

@@ -1,6 +1,6 @@
# rclone-bucket # rclone-bucket
![Version: 0.3.0](https://img.shields.io/badge/Version-0.3.0-informational?style=flat-square) ![AppVersion: v1.73.5](https://img.shields.io/badge/AppVersion-v1.73.5-informational?style=flat-square) ![Version: 0.4.3](https://img.shields.io/badge/Version-0.4.3-informational?style=flat-square) ![AppVersion: v1.73.5](https://img.shields.io/badge/AppVersion-v1.73.5-informational?style=flat-square)
Rclone CronJob to replicate buckets Rclone CronJob to replicate buckets
@@ -29,7 +29,7 @@ Rclone CronJob to replicate buckets
| cronJob | object | `{"backoffLimit":3,"parallelism":1,"schedule":"0 0 * * *","suspend":false,"timeZone":"America/Chicago"}` | CronJob configuration | | cronJob | object | `{"backoffLimit":3,"parallelism":1,"schedule":"0 0 * * *","suspend":false,"timeZone":"America/Chicago"}` | CronJob configuration |
| image | object | `{"pullPolicy":"IfNotPresent","repository":"rclone/rclone","tag":"1.73.5@sha256:1619a625f845e169c34b952cf40c483c0392965b821c5155cde8cbfd35254a96"}` | Default image | | image | object | `{"pullPolicy":"IfNotPresent","repository":"rclone/rclone","tag":"1.73.5@sha256:1619a625f845e169c34b952cf40c483c0392965b821c5155cde8cbfd35254a96"}` | Default image |
| nameOverride | string | `""` | Default pattern follows <pvcTarget>-backup | | nameOverride | string | `""` | Default pattern follows <pvcTarget>-backup |
| prune | object | `{"ageToPrune":"90d","enabled":false}` | Enable prune job | | prune | object | `{"ageToPrune":"90d","enabled":false,"exclude":"","include":""}` | Enable prune job |
| rclone | object | `{"destination":{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"},"providerType":"Other","source":{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}}` | rclone configuration | | rclone | object | `{"destination":{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"},"providerType":"Other","source":{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}}` | rclone configuration |
| rclone.destination | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Destination configuration | | rclone.destination | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Destination configuration |
| rclone.source | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Source configuration | | rclone.source | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Source configuration |

View File

@@ -43,35 +43,35 @@ Generate the secret name
{{/* {{/*
Common env names Common env names
*/}} */}}
{{- define "secret.envAccessKey" -}} {{- define "secretRclone.envAccessKey" -}}
ACCESS_KEY_ID ACCESS_KEY_ID
{{- end }} {{- end }}
{{- define "secret.envSecretKey" -}} {{- define "secretRclone.envSecretKey" -}}
ACCESS_SECRET_KEY ACCESS_SECRET_KEY
{{- end }} {{- end }}
{{- define "secret.envRegion" -}} {{- define "secretRclone.envRegion" -}}
ACCESS_REGION ACCESS_REGION
{{- end }} {{- end }}
{{- define "secret.envSrcEndpoint" -}} {{- define "secretRclone.envSrcEndpoint" -}}
SRC_ENDPOINT SRC_ENDPOINT
{{- end }} {{- end }}
{{- define "secret.envDestEndpoint" -}} {{- define "secretRclone.envDestEndpoint" -}}
DEST_ENDPOINT DEST_ENDPOINT
{{- end }} {{- end }}
{{/* {{/*
Create chart name and version as used by the chart label. Create chart name and version as used by the chart label.
*/}} */}}
{{- define "secret.chart" -}} {{- define "secretRclone.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Common labels Common labels
*/}} */}}
{{- define "secret.labels" -}} {{- define "secretRclone.labels" -}}
helm.sh/chart: {{ include "secret.chart" $ }} helm.sh/chart: {{ include "secretRclone.chart" $ }}
{{ include "secret.selectorLabels" $ }} {{ include "secretRclone.selectorLabels" $ }}
{{- if .Chart.AppVersion }} {{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.Version | quote }} app.kubernetes.io/version: {{ .Chart.Version | quote }}
{{- end }} {{- end }}
@@ -84,7 +84,7 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
{{/* {{/*
Selector labels Selector labels
*/}} */}}
{{- define "secret.selectorLabels" -}} {{- define "secretRclone.selectorLabels" -}}
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }} {{- end }}

View File

@@ -24,7 +24,15 @@ controllers:
- --s3-no-check-bucket - --s3-no-check-bucket
{{- if .Values.prune.enabled }} {{- if .Values.prune.enabled }}
- --min-age - --min-age
- {{ .Values.prune.ageToPrune }} - {{ .Values.prune.ageToPrune | quote }}
{{- end }}
{{- if .Values.prune.include }}
- --include
- {{ .Values.prune.include | quote }}
{{- end }}
{{- if .Values.prune.exclude }}
- --exclude
- {{ .Values.prune.exclude | quote }}
{{- end }} {{- end }}
- --verbose - --verbose
env: env:
@@ -35,57 +43,57 @@ controllers:
- name: RCLONE_CONFIG_SRC_PROVIDER - name: RCLONE_CONFIG_SRC_PROVIDER
value: {{ .Values.rclone.source.providerType }} value: {{ .Values.rclone.source.providerType }}
- name: RCLONE_CONFIG_SRC_ENV_AUTH - name: RCLONE_CONFIG_SRC_ENV_AUTH
value: false value: "false"
- name: RCLONE_CONFIG_SRC_ACCESS_KEY_ID - name: RCLONE_CONFIG_SRC_ACCESS_KEY_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }} name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secret.envAccessKey" . }} key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_SRC_SECRET_ACCESS_KEY - name: RCLONE_CONFIG_SRC_SECRET_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }} name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secret.envSecretKey" . }} key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_SRC_REGION - name: RCLONE_CONFIG_SRC_REGION
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }} name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secret.envRegion" . }} key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_SRC_ENDPOINT - name: RCLONE_CONFIG_SRC_ENDPOINT
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }} name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secret.envSrcEndpoint" . }} key: {{ include "secretRclone.envSrcEndpoint" . }}
- name: RCLONE_CONFIG_SRC_S3_FORCE_PATH_STYLE - name: RCLONE_CONFIG_SRC_S3_FORCE_PATH_STYLE
value: {{ .Values.rclone.source.forcePathStyle }} value: {{ .Values.rclone.source.forcePathStyle | quote }}
- name: RCLONE_CONFIG_DEST_TYPE - name: RCLONE_CONFIG_DEST_TYPE
value: s3 value: s3
- name: RCLONE_CONFIG_DEST_PROVIDER - name: RCLONE_CONFIG_DEST_PROVIDER
value: {{ .Values.rclone.destination.providerType }} value: {{ .Values.rclone.destination.providerType }}
- name: RCLONE_CONFIG_DEST_ENV_AUTH - name: RCLONE_CONFIG_DEST_ENV_AUTH
value: false value: "false"
- name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID - name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envAccessKey" . }} key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY - name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envSecretKey" . }} key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_DEST_REGION - name: RCLONE_CONFIG_DEST_REGION
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envRegion" . }} key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_DEST_ENDPOINT - name: RCLONE_CONFIG_DEST_ENDPOINT
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envDestEndpoint" . }} key: {{ include "secretRclone.envDestEndpoint" . }}
- name: RCLONE_CONFIG_SRC_DEST_FORCE_PATH_STYLE - name: RCLONE_CONFIG_DEST_S3_FORCE_PATH_STYLE
value: {{ .Values.rclone.destination.forcePathStyle }} value: {{ .Values.rclone.destination.forcePathStyle | quote }}
{{- if .Values.prune.enabled }} {{- if .Values.prune.enabled }}
prune: prune:
image: image:
@@ -96,7 +104,7 @@ controllers:
- delete - delete
- dest:{{ .Values.rclone.destination.bucketName }} - dest:{{ .Values.rclone.destination.bucketName }}
- --min-age - --min-age
- {{ .Values.prune.ageToPrune }} - {{ .Values.prune.ageToPrune | quote }}
- --verbose - --verbose
env: env:
- name: RCLONE_CONFIG_DEST_TYPE - name: RCLONE_CONFIG_DEST_TYPE
@@ -104,29 +112,29 @@ controllers:
- name: RCLONE_CONFIG_DEST_PROVIDER - name: RCLONE_CONFIG_DEST_PROVIDER
value: {{ .Values.rclone.destination.providerType }} value: {{ .Values.rclone.destination.providerType }}
- name: RCLONE_CONFIG_DEST_ENV_AUTH - name: RCLONE_CONFIG_DEST_ENV_AUTH
value: false value: "false"
- name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID - name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envAccessKey" . }} key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY - name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envSecretKey" . }} key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_DEST_REGION - name: RCLONE_CONFIG_DEST_REGION
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envRegion" . }} key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_DEST_ENDPOINT - name: RCLONE_CONFIG_DEST_ENDPOINT
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secret.envDestEndpoint" . }} key: {{ include "secretRclone.envDestEndpoint" . }}
- name: RCLONE_CONFIG_SRC_S3_FORCE_PATH_STYLE - name: RCLONE_CONFIG_DEST_S3_FORCE_PATH_STYLE
value: {{ .Values.rclone.destination.forcePathStyle }} value: {{ .Values.rclone.destination.forcePathStyle | quote }}
{{- end }} {{- end }}
{{- end -}} {{- end -}}
{{- $_ := mergeOverwrite .Values (include "rclone.hardcodedValues" . | fromYaml) -}} {{- $_ := mergeOverwrite .Values (include "rclone.hardcodedValues" . | fromYaml) -}}

View File

@@ -6,7 +6,7 @@ metadata:
name: {{ include "rclone.sourceSecretName" . }} name: {{ include "rclone.sourceSecretName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
{{- include "secret.labels" . | nindent 4 }} {{- include "secretRclone.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "rclone.sourceSecretName" . }} app.kubernetes.io/name: {{ include "rclone.sourceSecretName" . }}
{{- with .Values.additionalLabels }} {{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
@@ -16,19 +16,19 @@ spec:
kind: ClusterSecretStore kind: ClusterSecretStore
name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }} name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }}
data: data:
- secretKey: {{ include "secret.envAccessKey" . }} - secretKey: {{ include "secretRclone.envAccessKey" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }} key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.keyIdProperty }} property: {{ .Values.secret.externalSecret.source.credentials.keyIdProperty }}
- secretKey: {{ include "secret.envSecretKey" . }} - secretKey: {{ include "secretRclone.envSecretKey" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }} key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.secretKeyProperty }} property: {{ .Values.secret.externalSecret.source.credentials.secretKeyProperty }}
- secretKey: {{ include "secret.envRegion" . }} - secretKey: {{ include "secretRclone.envRegion" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }} key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.regionProperty }} property: {{ .Values.secret.externalSecret.source.credentials.regionProperty }}
- secretKey: {{ include "secret.envSrcEndpoint" . }} - secretKey: {{ include "secretRclone.envSrcEndpoint" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.source.config.path }} key: {{ .Values.secret.externalSecret.source.config.path }}
property: {{ .Values.secret.externalSecret.source.config.endpointProperty }} property: {{ .Values.secret.externalSecret.source.config.endpointProperty }}
@@ -40,7 +40,7 @@ metadata:
name: {{ include "rclone.destinationSecretName" . }} name: {{ include "rclone.destinationSecretName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
{{- include "secret.labels" . | nindent 4 }} {{- include "secretRclone.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "rclone.destinationSecretName" . }} app.kubernetes.io/name: {{ include "rclone.destinationSecretName" . }}
{{- with .Values.additionalLabels }} {{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
@@ -50,19 +50,19 @@ spec:
kind: ClusterSecretStore kind: ClusterSecretStore
name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }} name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }}
data: data:
- secretKey: {{ include "secret.envAccessKey" . }} - secretKey: {{ include "secretRclone.envAccessKey" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }} key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.keyIdProperty }} property: {{ .Values.secret.externalSecret.destination.credentials.keyIdProperty }}
- secretKey: {{ include "secret.envSecretKey" . }} - secretKey: {{ include "secretRclone.envSecretKey" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }} key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.keyIdProperty }} property: {{ .Values.secret.externalSecret.destination.credentials.secretKeyProperty }}
- secretKey: {{ include "secret.envRegion" . }} - secretKey: {{ include "secretRclone.envRegion" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }} key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.keyIdProperty }} property: {{ .Values.secret.externalSecret.destination.credentials.regionProperty }}
- secretKey: {{ include "secret.envDestEndpoint" . }} - secretKey: {{ include "secretRclone.envDestEndpoint" . }}
remoteRef: remoteRef:
key: {{ .Values.secret.externalSecret.destination.config.path }} key: {{ .Values.secret.externalSecret.destination.config.path }}
property: {{ .Values.secret.externalSecret.destination.config.endpointProperty }} property: {{ .Values.secret.externalSecret.destination.config.endpointProperty }}

View File

@@ -38,6 +38,8 @@ rclone:
prune: prune:
enabled: false enabled: false
ageToPrune: 90d ageToPrune: 90d
include: ""
exclude: ""
# -- Secret configuration # -- Secret configuration
secret: secret: