Compare commits

...

7 Commits

Author SHA1 Message Date
e25d09a69b new release
All checks were successful
release-charts-volsync-target / release (push) Successful in 14s
lint-and-test / lint-helm (push) Successful in 16s
lint-and-test / chart-testing (push) Successful in 27s
renovate / renovate (push) Successful in 33s
2025-12-17 13:37:46 -06:00
9fd28d1a54 adjust schedule 2025-12-17 13:37:16 -06:00
308ad1e7c4 adjust retention 2025-12-17 13:36:47 -06:00
6e97b34c88 fix proper indent
All checks were successful
lint-and-test / lint-helm (push) Successful in 8s
lint-and-test / chart-testing (push) Successful in 22s
release-charts-volsync-target / release (push) Successful in 23s
renovate / renovate (push) Successful in 1m5s
2025-12-15 19:03:45 -06:00
7b22271038 add mover security context
All checks were successful
lint-and-test / lint-helm (push) Successful in 10s
lint-and-test / chart-testing (push) Successful in 21s
release-charts-volsync-target / release (push) Successful in 31s
renovate / renovate (push) Successful in 29s
2025-12-15 18:54:50 -06:00
d5a761ab59 fix value path
All checks were successful
release-charts-volsync-target / release (push) Successful in 20s
lint-and-test / lint-helm (push) Successful in 18s
lint-and-test / chart-testing (push) Successful in 24s
renovate / renovate (push) Successful in 41s
2025-12-15 17:43:16 -06:00
913c36f06c fix value path
All checks were successful
lint-and-test / lint-helm (push) Successful in 9s
release-charts-volsync-target / release (push) Successful in 18s
renovate / renovate (push) Successful in 30s
lint-and-test / chart-testing (push) Successful in 32s
2025-12-15 17:41:30 -06:00
5 changed files with 64 additions and 42 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: volsync-target name: volsync-target
version: 0.1.0 version: 0.6.0
description: Volsync Replication set to target specific PVC with preconfigured settings description: Volsync Replication set to target specific PVC with preconfigured settings
keywords: keywords:
- volsync-target - volsync-target

View File

@@ -1,6 +1,6 @@
# volsync-target # volsync-target
![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![AppVersion: 0.14.0](https://img.shields.io/badge/AppVersion-0.14.0-informational?style=flat-square) ![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![AppVersion: 0.14.0](https://img.shields.io/badge/AppVersion-0.14.0-informational?style=flat-square)
Volsync Replication set to target specific PVC with preconfigured settings Volsync Replication set to target specific PVC with preconfigured settings
@@ -20,22 +20,23 @@ Volsync Replication set to target specific PVC with preconfigured settings
| Key | Type | Default | Description | | Key | Type | Default | Description |
|-----|------|---------|-------------| |-----|------|---------|-------------|
| additionalLabels | object | `{}` | Add additional labels | | additionalLabels | object | `{}` | Add additional labels |
| external | object | `{"enabled":true,"externalSecret":{"credentialPath":"/digital-ocean/home-infra/volsync-backups","volsyncPath":"/volsync/restic/digital-ocean"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 4 * * *"}` | External backup configuration | | external | object | `{"enabled":true,"externalSecret":{"credentialPath":"/digital-ocean/home-infra/volsync-backups","volsyncPath":"/volsync/restic/digital-ocean"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 9 * * *"}` | External backup configuration |
| external.externalSecret | object | `{"credentialPath":"/digital-ocean/home-infra/volsync-backups","volsyncPath":"/volsync/restic/digital-ocean"}` | External Secret configuration | | external.externalSecret | object | `{"credentialPath":"/digital-ocean/home-infra/volsync-backups","volsyncPath":"/volsync/restic/digital-ocean"}` | External Secret configuration |
| external.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml | | external.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| external.schedule | string | `"0 4 * * *"` | 5 character cron schedule | | external.schedule | string | `"0 9 * * *"` | 5 character cron schedule |
| externalSecrets | object | `{"enabled":true}` | Use external secrets | | externalSecrets | object | `{"enabled":true}` | Use external secrets |
| local | object | `{"enabled":true,"externalSecret":{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-local"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 2 * * *"}` | Local backup configuration | | local | object | `{"enabled":true,"externalSecret":{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-local"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 8 * * *"}` | Local backup configuration |
| local.externalSecret | object | `{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-local"}` | External Secret configuration | | local.externalSecret | object | `{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-local"}` | External Secret configuration |
| local.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml | | local.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| local.schedule | string | `"0 2 * * *"` | 5 character cron schedule | | local.schedule | string | `"0 8 * * *"` | 5 character cron schedule |
| moverSecurityContext | object | `{}` | Glocal security context for restic mover |
| nameOverride | string | `""` | Default pattern follows <pvcTarget>-backup | | nameOverride | string | `""` | Default pattern follows <pvcTarget>-backup |
| namespaceOverride | string | `""` | Override the namespace of the chart | | namespaceOverride | string | `""` | Override the namespace of the chart |
| pvcTarget | string | `"data"` | Name of the PVC target | | pvcTarget | string | `"data"` | Name of the PVC target |
| remote | object | `{"enabled":true,"externalSecret":{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-remote"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 3 * * *"}` | Remote backup configuration | | remote | object | `{"enabled":true,"externalSecret":{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-remote"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 10 * * *"}` | Remote backup configuration |
| remote.externalSecret | object | `{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-remote"}` | External Secret configuration | | remote.externalSecret | object | `{"credentialPath":"/garage/home-infra/volsync-backups","volsyncPath":"/volsync/restic/garage-remote"}` | External Secret configuration |
| remote.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":3,"hourly":1,"monthly":2,"weekly":2,"yearly":4},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml | | remote.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":3,"weekly":4,"yearly":1},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| remote.schedule | string | `"0 3 * * *"` | 5 character cron schedule | | remote.schedule | string | `"0 10 * * *"` | 5 character cron schedule |
---------------------------------------------- ----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -87,35 +87,35 @@ spec:
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.volsyncPath | required "External Secret Volsync remote path is required" }} key: {{ .Values.remote.externalSecret.volsyncPath | required "External Secret Volsync remote path is required" }}
metadataPolicy: None metadataPolicy: None
property: BUCKET_ENDPOINT property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD - secretKey: RESTIC_PASSWORD
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.volsyncPath | required "External Secret Volsync remote path is required" }} key: {{ .Values.remote.externalSecret.volsyncPath | required "External Secret Volsync remote path is required" }}
metadataPolicy: None metadataPolicy: None
property: RESTIC_PASSWORD property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION - secretKey: AWS_DEFAULT_REGION
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential remote path is required" }} key: {{ .Values.remote.externalSecret.credentialPath | required "External Secret Credential remote path is required" }}
metadataPolicy: None metadataPolicy: None
property: ACCESS_REGION property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID - secretKey: AWS_ACCESS_KEY_ID
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential remote path is required" }} key: {{ .Values.remote.externalSecret.credentialPath | required "External Secret Credential remote path is required" }}
metadataPolicy: None metadataPolicy: None
property: ACCESS_KEY_ID property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY - secretKey: AWS_SECRET_ACCESS_KEY
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential remote path is required" }} key: {{ .Values.remote.externalSecret.credentialPath | required "External Secret Credential remote path is required" }}
metadataPolicy: None metadataPolicy: None
property: ACCESS_SECRET_KEY property: ACCESS_SECRET_KEY
{{- end }} {{- end }}
@@ -148,35 +148,35 @@ spec:
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.volsyncPath | required "External Secret Volsync external path is required" }} key: {{ .Values.external.externalSecret.volsyncPath | required "External Secret Volsync external path is required" }}
metadataPolicy: None metadataPolicy: None
property: BUCKET_ENDPOINT property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD - secretKey: RESTIC_PASSWORD
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.volsyncPath | required "External Secret Volsync external path is required" }} key: {{ .Values.external.externalSecret.volsyncPath | required "External Secret Volsync external path is required" }}
metadataPolicy: None metadataPolicy: None
property: RESTIC_PASSWORD property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION - secretKey: AWS_DEFAULT_REGION
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential external path is required" }} key: {{ .Values.external.externalSecret.credentialPath | required "External Secret Credential external path is required" }}
metadataPolicy: None metadataPolicy: None
property: AWS_DEFAULT_REGION property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID - secretKey: AWS_ACCESS_KEY_ID
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential external path is required" }} key: {{ .Values.external.externalSecret.credentialPath | required "External Secret Credential external path is required" }}
metadataPolicy: None metadataPolicy: None
property: AWS_ACCESS_KEY_ID property: AWS_ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY - secretKey: AWS_SECRET_ACCESS_KEY
remoteRef: remoteRef:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
key: {{ .Values.local.externalSecret.credentialPath | required "External Secret Credential external path is required" }} key: {{ .Values.external.externalSecret.credentialPath | required "External Secret Credential external path is required" }}
metadataPolicy: None metadataPolicy: None
property: AWS_SECRET_ACCESS_KEY property: AWS_SECRET_ACCESS_KEY
{{- end }} {{- end }}

View File

@@ -21,7 +21,13 @@ spec:
retain: retain:
{{- with .Values.local.restic.retain }} {{- with .Values.local.restic.retain }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{ end }} {{- end }}
{{- if .Values.moverSecurityContext }}
moverSecurityContext:
{{- with .Values.moverSecurityContext }}
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
copyMethod: {{ .Values.local.restic.copyMethod }} copyMethod: {{ .Values.local.restic.copyMethod }}
storageClassName: {{ .Values.local.restic.storageClassName }} storageClassName: {{ .Values.local.restic.storageClassName }}
volumeSnapshotClassName: {{ .Values.local.restic.volumeSnapshotClassName }} volumeSnapshotClassName: {{ .Values.local.restic.volumeSnapshotClassName }}
@@ -51,7 +57,13 @@ spec:
retain: retain:
{{- with .Values.remote.restic.retain }} {{- with .Values.remote.restic.retain }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{ end }} {{- end }}
{{- if .Values.moverSecurityContext }}
moverSecurityContext:
{{- with .Values.moverSecurityContext }}
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
copyMethod: {{ .Values.remote.restic.copyMethod }} copyMethod: {{ .Values.remote.restic.copyMethod }}
storageClassName: {{ .Values.remote.restic.storageClassName }} storageClassName: {{ .Values.remote.restic.storageClassName }}
volumeSnapshotClassName: {{ .Values.remote.restic.volumeSnapshotClassName }} volumeSnapshotClassName: {{ .Values.remote.restic.volumeSnapshotClassName }}
@@ -81,7 +93,13 @@ spec:
retain: retain:
{{- with .Values.external.restic.retain }} {{- with .Values.external.restic.retain }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{ end }} {{- end }}
{{- if .Values.moverSecurityContext }}
moverSecurityContext:
{{- with .Values.moverSecurityContext }}
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
copyMethod: {{ .Values.external.restic.copyMethod }} copyMethod: {{ .Values.external.restic.copyMethod }}
storageClassName: {{ .Values.external.restic.storageClassName }} storageClassName: {{ .Values.external.restic.storageClassName }}
volumeSnapshotClassName: {{ .Values.external.restic.volumeSnapshotClassName }} volumeSnapshotClassName: {{ .Values.external.restic.volumeSnapshotClassName }}

View File

@@ -10,6 +10,9 @@ additionalLabels: {}
# -- Name of the PVC target # -- Name of the PVC target
pvcTarget: "data" pvcTarget: "data"
# -- Glocal security context for restic mover
moverSecurityContext: {}
# -- Use external secrets # -- Use external secrets
externalSecrets: externalSecrets:
enabled: true enabled: true
@@ -19,18 +22,18 @@ local:
enabled: true enabled: true
# -- 5 character cron schedule # -- 5 character cron schedule
schedule: 0 2 * * * schedule: 0 8 * * *
# -- Backup configuration, inserted directly into the yaml # -- Backup configuration, inserted directly into the yaml
restic: restic:
pruneIntervalDays: 7 pruneIntervalDays: 7
repository: "" repository: ""
retain: retain:
hourly: 1 hourly: 0
daily: 3 daily: 7
weekly: 2 weekly: 4
monthly: 2 monthly: 3
yearly: 4 yearly: 1
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot
@@ -48,18 +51,18 @@ remote:
enabled: true enabled: true
# -- 5 character cron schedule # -- 5 character cron schedule
schedule: 0 3 * * * schedule: 0 10 * * *
# -- Backup configuration, inserted directly into the yaml # -- Backup configuration, inserted directly into the yaml
restic: restic:
pruneIntervalDays: 7 pruneIntervalDays: 7
repository: "" repository: ""
retain: retain:
hourly: 1 hourly: 0
daily: 3 daily: 7
weekly: 2 weekly: 4
monthly: 2 monthly: 3
yearly: 4 yearly: 1
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot
@@ -77,18 +80,18 @@ external:
enabled: true enabled: true
# -- 5 character cron schedule # -- 5 character cron schedule
schedule: 0 4 * * * schedule: 0 9 * * *
# -- Backup configuration, inserted directly into the yaml # -- Backup configuration, inserted directly into the yaml
restic: restic:
pruneIntervalDays: 7 pruneIntervalDays: 7
repository: "" repository: ""
retain: retain:
hourly: 1 hourly: 0
daily: 3 daily: 7
weekly: 2 weekly: 4
monthly: 2 monthly: 3
yearly: 4 yearly: 1
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot