Compare commits

...

38 Commits

Author SHA1 Message Date
4597405cf8 feat: release 3.0.0
All checks were successful
lint-and-test / lint-helm (push) Successful in 12s
release-charts-cloudflared / release (push) Successful in 17s
lint-and-test / chart-testing (push) Successful in 22s
renovate / renovate (push) Successful in 36s
2026-05-07 22:33:29 -05:00
7bd5e48581 feat: add metrics 2026-05-07 22:32:07 -05:00
0fbd8c98ed feat: change protocol 2026-05-07 22:24:53 -05:00
a12bd66389 feat: name service account 2026-05-07 22:23:18 -05:00
c67f00fc5d feat: release 2.0.0
All checks were successful
lint-and-test / lint-helm (push) Successful in 13s
release-charts-volsync-target / release (push) Successful in 23s
renovate / renovate (push) Successful in 1m40s
lint-and-test / chart-testing (push) Successful in 2m39s
2026-05-07 21:16:07 -05:00
e3924cd8f2 feat: switch to backblaze 2026-05-07 21:15:08 -05:00
03e15b12eb feat: change schedule 2026-05-07 21:14:50 -05:00
08ffb87965 feat: update lock
All checks were successful
lint-and-test / chart-testing (push) Successful in 20s
release-charts-generic-device-plugin / release (push) Successful in 28s
renovate / renovate (push) Successful in 37s
lint-and-test / lint-helm (push) Successful in 20s
2026-05-07 20:59:04 -05:00
1fd214924f feat: update common chart
Some checks failed
release-charts-generic-device-plugin / release (push) Failing after 18s
release-charts-cloudflared / release (push) Successful in 23s
release-charts-rclone-bucket / release (push) Successful in 22s
lint-and-test / lint-helm (push) Successful in 26s
renovate / renovate (push) Successful in 39s
lint-and-test / chart-testing (push) Has been cancelled
2026-05-07 20:57:29 -05:00
bbe771a559 feat: update lock 2026-05-07 20:56:49 -05:00
490d1f0e23 feat: update lock 2026-05-07 20:56:15 -05:00
94257be6ce feat: update image
Some checks failed
lint-and-test / lint-helm (push) Failing after 15s
lint-and-test / chart-testing (push) Successful in 25s
release-charts-valkey / release (push) Successful in 23s
renovate / renovate (push) Successful in 1m17s
2026-05-07 20:55:13 -05:00
2f5066a7f6 feat: update common chart
Some checks failed
lint-and-test / lint-helm (push) Successful in 20s
release-charts-rclone-bucket / release (push) Failing after 11s
release-charts-generic-device-plugin / release (push) Successful in 21s
lint-and-test / chart-testing (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-05-07 20:53:42 -05:00
a02f9c5fcd feat: update common chart
Some checks failed
lint-and-test / lint-helm (push) Has been cancelled
lint-and-test / chart-testing (push) Has been cancelled
renovate / renovate (push) Has been cancelled
release-charts-cloudflared / release (push) Failing after 16s
2026-05-07 20:52:49 -05:00
078e7659f4 Merge pull request 'chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to 2e0c0b7' (#201) from renovate/unified-squatgeneric-device-plugin into main
Some checks failed
lint-and-test / lint-helm (push) Failing after 0s
release-charts-generic-device-plugin / release (push) Successful in 16s
renovate / renovate (push) Successful in 4m2s
lint-and-test / chart-testing (push) Has been cancelled
2026-05-08 00:17:47 +00:00
16df0126cf chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to 2e0c0b7
Some checks failed
renovate/stability-days Updates have not met minimum release age requirement
lint-and-test / lint-helm (pull_request) Failing after 0s
lint-and-test / chart-testing (pull_request) Successful in 31s
2026-05-08 00:17:41 +00:00
9be8e7dd76 Merge pull request 'chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to face047' (#200) from renovate/unified-squatgeneric-device-plugin into main
All checks were successful
lint-and-test / lint-helm (push) Successful in 15s
lint-and-test / chart-testing (push) Successful in 26s
release-charts-generic-device-plugin / release (push) Successful in 22s
renovate / renovate (push) Successful in 1m3s
2026-05-07 00:57:44 +00:00
142a3556b1 chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to face047
Some checks failed
renovate/stability-days Updates have not met minimum release age requirement
lint-and-test / lint-helm (pull_request) Failing after 15s
lint-and-test / chart-testing (pull_request) Successful in 21s
2026-05-07 00:57:24 +00:00
9347aa397e feat: bump version
Some checks failed
lint-and-test / lint-helm (push) Successful in 11s
lint-and-test / chart-testing (push) Successful in 24s
release-charts-rclone-bucket / release (push) Successful in 21s
release-charts-generic-device-plugin / release (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2026-05-06 19:55:22 -05:00
9e7ab77502 fix: wrong argument 2026-05-06 19:55:06 -05:00
8c9a3bf080 feat: bump version
All checks were successful
lint-and-test / lint-helm (push) Successful in 16s
lint-and-test / chart-testing (push) Successful in 39s
release-charts-rclone-bucket / release (push) Successful in 28s
release-charts-valkey / release (push) Successful in 28s
renovate / renovate (push) Successful in 2m13s
2026-05-06 19:10:43 -05:00
86c9cd930a fix: wrong argument 2026-05-06 19:10:43 -05:00
0f14e46c20 fix: fix env force path style 2026-05-06 19:10:43 -05:00
8cae3bb53c Merge pull request 'chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to 826da38' (#197) from renovate/unified-squatgeneric-device-plugin into main
All checks were successful
lint-and-test / lint-helm (push) Successful in 49s
release-charts-generic-device-plugin / release (push) Successful in 20s
renovate / renovate (push) Successful in 1m28s
lint-and-test / chart-testing (push) Successful in 5m20s
2026-05-07 00:02:49 +00:00
49e3392ed5 chore(deps): update ghcr.io/squat/generic-device-plugin:latest docker digest to 826da38
Some checks failed
renovate/stability-days Updates have not met minimum release age requirement
lint-and-test / lint-helm (pull_request) Failing after 38s
lint-and-test / chart-testing (pull_request) Successful in 14m35s
2026-05-07 00:02:23 +00:00
8e9b9460b6 Merge pull request 'chore(deps): update rclone/rclone to v1.74.0' (#195) from renovate/unified-rclonerclone into main
All checks were successful
lint-and-test / chart-testing (push) Successful in 22s
release-charts-rclone-bucket / release (push) Successful in 27s
lint-and-test / lint-helm (push) Successful in 1m6s
renovate / renovate (push) Successful in 2m13s
Reviewed-on: #195
2026-05-02 00:43:46 +00:00
82ded9e1cd chore(deps): update rclone/rclone to v1.74.0
All checks were successful
lint-and-test / lint-helm (pull_request) Successful in 13s
lint-and-test / chart-testing (pull_request) Successful in 4m35s
2026-05-02 00:42:45 +00:00
89319e12c5 Merge pull request 'chore(deps): update ghcr.io/oliver006/redis_exporter docker tag to v1.83.0' (#194) from renovate/unified-oliver006redis_exporter into main
Some checks failed
renovate / renovate (push) Successful in 49s
release-charts-valkey / release (push) Successful in 1m22s
lint-and-test / lint-helm (push) Has been cancelled
lint-and-test / chart-testing (push) Has been cancelled
Reviewed-on: #194
2026-05-02 00:41:54 +00:00
007016b59f chore(deps): update ghcr.io/oliver006/redis_exporter docker tag to v1.83.0
All checks were successful
lint-and-test / lint-helm (pull_request) Successful in 31s
lint-and-test / chart-testing (pull_request) Successful in 8m0s
2026-05-01 00:03:00 +00:00
52363a1dbc fix: invalid rules
All checks were successful
lint-and-test / lint-helm (push) Successful in 30s
release-charts-volsync-target / release (push) Successful in 17s
lint-and-test / chart-testing (push) Successful in 2m50s
renovate / renovate (push) Successful in 1m44s
2026-04-28 17:53:08 -05:00
1a535ae4c2 feat: add rule
All checks were successful
lint-and-test / lint-helm (push) Successful in 44s
release-charts-volsync-target / release (push) Successful in 41s
renovate / renovate (push) Successful in 1m9s
lint-and-test / chart-testing (push) Successful in 3m44s
2026-04-28 16:36:05 -05: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 2m3s
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
96cc6a8038 feat: add age to backup
All checks were successful
lint-and-test / lint-helm (push) Successful in 17s
release-charts-rclone-bucket / release (push) Successful in 30s
renovate / renovate (push) Successful in 50s
lint-and-test / chart-testing (push) Successful in 5m45s
2026-04-26 13:57:24 -05:00
addd63616c fix: separate secret naming
All checks were successful
lint-and-test / lint-helm (push) Successful in 22s
renovate / renovate (push) Successful in 41s
release-charts-rclone-bucket / release (push) Successful in 57s
lint-and-test / chart-testing (push) Successful in 3m21s
2026-04-25 20:56:43 -05:00
5cb8e9d43e feat: add rclone for bucket mirror
All checks were successful
release-charts-rclone-bucket / release (push) Successful in 28s
lint-and-test / lint-helm (push) Successful in 54s
renovate / renovate (push) Successful in 1m20s
lint-and-test / chart-testing (push) Successful in 2m45s
2026-04-25 20:42:45 -05:00
25 changed files with 711 additions and 55 deletions

View File

@@ -0,0 +1,128 @@
name: release-charts-rclone-bucket
on:
push:
branches:
- main
paths:
- "charts/rclone-bucket/**"
workflow_dispatch:
env:
WORKFLOW_DIR: "charts/rclone-bucket"
jobs:
release:
runs-on: ubuntu-js
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Helm
uses: azure/setup-helm@v5
with:
token: ${{ secrets.GITEA_TOKEN }}
version: v3.19.2
- name: Add Repositories
run: |
cd ${WORKFLOW_DIR}
echo ">> Adding repositories for chart dependencies ..."
helm dependency list --max-col-width 120 2> /dev/null \
| tail +2 | head -n -1 \
| awk '{ print "helm repo add " $1 " " $3 }' \
| while read cmd; do echo "$cmd" | sh; done || true
if helm repo list | tail +2 | read -r; then
echo ">> Update repository cache ..."
helm repo update
fi
echo "----"
- name: Package Helm Chart
run: |
cd ${WORKFLOW_DIR}
echo ">> Building helm dependency ..."
helm dependency build --skip-refresh --debug
echo "----"
echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV
- name: Publish Helm Chart to Harbor
run: |
echo ">> Logging into Harbor ..."
helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }} --debug
echo ""
echo ">> Publishing chart to Harbor ..."
helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts --debug
echo "----"
- name: Publish Helm Chart to Gitea
run: |
echo ">> Installing Chart Museum plugin ..."
helm plugin install https://github.com/chartmuseum/helm-push --debug
echo ""
echo ">> Adding Gitea repository ..."
helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm --debug
echo ""
echo ">> Pushing chart to gitea"
helm cm-push ${{ env.PACKAGE_PATH }} helm-charts --debug
- name: Extract Chart Metadata
run: |
cd ${WORKFLOW_DIR}
echo ">> Adding Chart metadata to workflow ENV ..."
echo ""
echo ">> Chart Version: $(yq '.version' Chart.yaml)"
echo ">> Chart Name: $(yq '.name' Chart.yaml)"
echo "----"
echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV
echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV
- name: Release Helm Chart
uses: akkuman/gitea-release-action@v1
with:
name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }}
files: |-
${{ env.PACKAGE_PATH }}
- name: ntfy Success
uses: niniyas/ntfy-action@master
if: success()
with:
url: '${{ secrets.NTFY_URL }}'
topic: '${{ secrets.NTFY_TOPIC }}'
title: 'Release Success - ${{ env.CHART_NAME }}'
priority: 3
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,successfully,completed
details: 'Helm Chart ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} has been released!'
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
- name: ntfy Failed
uses: niniyas/ntfy-action@master
if: failure()
with:
url: '${{ secrets.NTFY_URL }}'
topic: '${{ secrets.NTFY_TOPIC }}'
title: 'Release Failure - ${{ env.CHART_NAME }}'
priority: 4
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
tags: action,failed
details: 'Helm Chart ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} has failed to be released.'
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/helm-charts/actions?workflow=release-charts-rclone-bucket.yml", "clear": true}]'
image: true

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: common - name: common
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 5.0.0
digest: sha256:35e8f4e5d15d878c246a04eb51de580291f31203fa10e9e4d2318f16026b2061 digest: sha256:153788a98eab8a2e83bd456e1f6f3d53d1a3363bfe5bca07bd232d948e01a6b2
generated: "2026-01-16T13:29:29.385123-06:00" generated: "2026-05-07T20:55:55.373128-05:00"

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: cloudflared name: cloudflared
version: 2.6.0 version: 3.0.0
description: Cloudflared Tunnel description: Cloudflared Tunnel
keywords: keywords:
- cloudflare - cloudflare
@@ -14,7 +14,7 @@ maintainers:
dependencies: dependencies:
- name: common - name: common
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 5.0.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/cloudflare.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/cloudflare.png
# renovate: datasource=docker depName=cloudflare/cloudflared # renovate: datasource=docker depName=cloudflare/cloudflared
appVersion: 2026.3.0 appVersion: 2026.3.0

View File

@@ -1,6 +1,6 @@
# cloudflared # cloudflared
![Version: 2.6.0](https://img.shields.io/badge/Version-2.6.0-informational?style=flat-square) ![AppVersion: 2026.3.0](https://img.shields.io/badge/AppVersion-2026.3.0-informational?style=flat-square) ![Version: 3.0.0](https://img.shields.io/badge/Version-3.0.0-informational?style=flat-square) ![AppVersion: 2026.3.0](https://img.shields.io/badge/AppVersion-2026.3.0-informational?style=flat-square)
Cloudflared Tunnel Cloudflared Tunnel
@@ -20,14 +20,16 @@ Cloudflared Tunnel
| Repository | Name | Version | | Repository | Name | Version |
|------------|------|---------| |------------|------|---------|
| https://bjw-s-labs.github.io/helm-charts/ | common | 4.6.2 | | https://bjw-s-labs.github.io/helm-charts/ | common | 5.0.0 |
## Values ## Values
| Key | Type | Default | Description | | Key | Type | Default | Description |
|-----|------|---------|-------------| |-----|------|---------|-------------|
| image | object | `{"pullPolicy":"IfNotPresent","repository":"cloudflare/cloudflared","tag":"2026.3.0@sha256:6b599ca3e974349ead3286d178da61d291961182ec3fe9c505e1dd02c8ac31b0"}` | Default image | | image | object | `{"pullPolicy":"IfNotPresent","repository":"cloudflare/cloudflared","tag":"2026.3.0@sha256:6b599ca3e974349ead3286d178da61d291961182ec3fe9c505e1dd02c8ac31b0"}` | Default image |
| metrics | object | `{"enabled":true}` | Metrics |
| name | string | `""` | Name override of release | | name | string | `""` | Name override of release |
| protocol | string | `"auto"` | Protocol - Available values are auto, http2, and quic. |
| resources | object | `{"requests":{"cpu":"1m","memory":"20Mi"}}` | Default resources | | resources | object | `{"requests":{"cpu":"1m","memory":"20Mi"}}` | Default resources |
| secret | object | `{"existingSecret":{"key":"cf-tunnel-token","name":"cloudflared-secret"},"externalSecret":{"additionalLabels":{},"enabled":true,"nameOverride":"","store":{"name":"openbao","path":"/cloudflare/tunnels","property":"token"}}}` | Secret configuration | | secret | object | `{"existingSecret":{"key":"cf-tunnel-token","name":"cloudflared-secret"},"externalSecret":{"additionalLabels":{},"enabled":true,"nameOverride":"","store":{"name":"openbao","path":"/cloudflare/tunnels","property":"token"}}}` | Secret configuration |
| secret.existingSecret | object | `{"key":"cf-tunnel-token","name":"cloudflared-secret"}` | Name of existing secret that contains Cloudflare token | | secret.existingSecret | object | `{"key":"cf-tunnel-token","name":"cloudflared-secret"}` | Name of existing secret that contains Cloudflare token |

View File

@@ -7,7 +7,10 @@ global:
controllers: controllers:
main: main:
type: deployment type: deployment
replicas: 1
strategy: Recreate strategy: Recreate
serviceAccount:
name: {{ include "cloudflared.name" . }}
containers: containers:
main: main:
image: image:
@@ -17,8 +20,11 @@ controllers:
args: args:
- tunnel - tunnel
- --protocol - --protocol
- http2 - {{ .Values.protocol }}
- --no-autoupdate - --no-autoupdate
{{- if .Values.metrics.enabled }}
- --metrics 0.0.0.0:20241
{{- end }}
- run - run
- --token - --token
- $(CF_MANAGED_TUNNEL_TOKEN) - $(CF_MANAGED_TUNNEL_TOKEN)
@@ -29,10 +35,30 @@ controllers:
name: {{ include "secret.name" . }} name: {{ include "secret.name" . }}
key: {{ include "secret.key" . }} key: {{ include "secret.key" . }}
resources: resources:
{{- with .Values.resources }} {{- with .Values.resources }}
resources:
{{- toYaml . | nindent 10 }} {{- toYaml . | nindent 10 }}
{{ end }} {{ end }}
{{- if .Values.metrics.enabled }}
service:
main:
controller: main
ports:
metrics:
port: 20241
targetPort: 20241
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: {{ include "cloudflared.name" . }}
app.kubernetes.io/instance: {{ include "cloudflared.name" . }}
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: metrics
interval: 30s
scrapeTimeout: 10s
path: /metrics
{{- end }}
{{- end -}} {{- end -}}
{{- $_ := mergeOverwrite .Values (include "cloudflared.hardcodedValues" . | fromYaml) -}} {{- $_ := mergeOverwrite .Values (include "cloudflared.hardcodedValues" . | fromYaml) -}}

View File

@@ -1,6 +1,13 @@
# -- Name override of release # -- Name override of release
name: "" name: ""
# -- Protocol - Available values are auto, http2, and quic.
protocol: auto
# -- Metrics
metrics:
enabled: true
# -- Secret configuration # -- Secret configuration
secret: secret:

View File

@@ -1,6 +1,6 @@
dependencies: dependencies:
- name: common - name: common
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 5.0.0
digest: sha256:35e8f4e5d15d878c246a04eb51de580291f31203fa10e9e4d2318f16026b2061 digest: sha256:153788a98eab8a2e83bd456e1f6f3d53d1a3363bfe5bca07bd232d948e01a6b2
generated: "2026-01-16T13:29:01.760344-06:00" generated: "2026-05-07T20:58:40.139936-05:00"

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: generic-device-plugin name: generic-device-plugin
version: 0.20.31 version: 0.21.1
description: Generic Device Plugin description: Generic Device Plugin
keywords: keywords:
- generic-device-plugin - generic-device-plugin
@@ -14,5 +14,5 @@ maintainers:
dependencies: dependencies:
- name: common - name: common
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.6.2 version: 5.0.0
appVersion: 0.20.17 appVersion: 0.21.1

View File

@@ -1,6 +1,6 @@
# generic-device-plugin # generic-device-plugin
![Version: 0.20.31](https://img.shields.io/badge/Version-0.20.31-informational?style=flat-square) ![AppVersion: 0.20.17](https://img.shields.io/badge/AppVersion-0.20.17-informational?style=flat-square) ![Version: 0.21.1](https://img.shields.io/badge/Version-0.21.1-informational?style=flat-square) ![AppVersion: 0.21.1](https://img.shields.io/badge/AppVersion-0.21.1-informational?style=flat-square)
Generic Device Plugin Generic Device Plugin
@@ -19,7 +19,7 @@ Generic Device Plugin
| Repository | Name | Version | | Repository | Name | Version |
|------------|------|---------| |------------|------|---------|
| https://bjw-s-labs.github.io/helm-charts/ | common | 4.6.2 | | https://bjw-s-labs.github.io/helm-charts/ | common | 5.0.0 |
## Values ## Values
@@ -28,7 +28,7 @@ Generic Device Plugin
| config | object | `{"data":"devices:\n - name: serial\n groups:\n - paths:\n - path: /dev/ttyUSB*\n - paths:\n - path: /dev/ttyACM*\n - paths:\n - path: /dev/tty.usb*\n - paths:\n - path: /dev/cu.*\n - paths:\n - path: /dev/cuaU*\n - paths:\n - path: /dev/rfcomm*\n - name: video\n groups:\n - paths:\n - path: /dev/video0\n - name: fuse\n groups:\n - count: 10\n paths:\n - path: /dev/fuse\n - name: audio\n groups:\n - count: 10\n paths:\n - path: /dev/snd\n - name: capture\n groups:\n - paths:\n - path: /dev/snd/controlC0\n - path: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC1\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC1D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC2\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC2D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC3\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC3D0c\n mountPath: /dev/snd/pcmC0D0c\n","enabled":true}` | Config map | | config | object | `{"data":"devices:\n - name: serial\n groups:\n - paths:\n - path: /dev/ttyUSB*\n - paths:\n - path: /dev/ttyACM*\n - paths:\n - path: /dev/tty.usb*\n - paths:\n - path: /dev/cu.*\n - paths:\n - path: /dev/cuaU*\n - paths:\n - path: /dev/rfcomm*\n - name: video\n groups:\n - paths:\n - path: /dev/video0\n - name: fuse\n groups:\n - count: 10\n paths:\n - path: /dev/fuse\n - name: audio\n groups:\n - count: 10\n paths:\n - path: /dev/snd\n - name: capture\n groups:\n - paths:\n - path: /dev/snd/controlC0\n - path: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC1\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC1D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC2\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC2D0c\n mountPath: /dev/snd/pcmC0D0c\n - paths:\n - path: /dev/snd/controlC3\n mountPath: /dev/snd/controlC0\n - path: /dev/snd/pcmC3D0c\n mountPath: /dev/snd/pcmC0D0c\n","enabled":true}` | Config map |
| config.data | string | See [values.yaml](./values.yaml) | generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage) | | config.data | string | See [values.yaml](./values.yaml) | generic-device-plugin config file [[ref]](https://github.com/squat/generic-device-plugin#usage) |
| deviceDomain | string | `"devic.es"` | Domain used by devices for identifcation | | deviceDomain | string | `"devic.es"` | Domain used by devices for identifcation |
| image | object | `{"pullPolicy":"Always","repository":"ghcr.io/squat/generic-device-plugin","tag":"latest@sha256:d9e098e33a20c32a561adb1ef8cace7d5912cd5ffb38f07dd9f83af4bdf38505"}` | Default image | | image | object | `{"pullPolicy":"Always","repository":"ghcr.io/squat/generic-device-plugin","tag":"latest@sha256:2e0c0b78043d5f0885b99c9ac3c1506844c9645081740d2394ce6e23b168bfe8"}` | Default image |
| name | string | `"generic-device-plugin"` | Name override of release | | name | string | `"generic-device-plugin"` | Name override of release |
| resources | object | `{"requests":{"cpu":"50m","memory":"10Mi"}}` | Default resources | | resources | object | `{"requests":{"cpu":"50m","memory":"10Mi"}}` | Default resources |
| service | object | `{"listenPort":8080}` | Service port | | service | object | `{"listenPort":8080}` | Service port |

View File

@@ -4,7 +4,7 @@ name: generic-device-plugin
# -- Default image # -- Default image
image: image:
repository: ghcr.io/squat/generic-device-plugin repository: ghcr.io/squat/generic-device-plugin
tag: latest@sha256:d9e098e33a20c32a561adb1ef8cace7d5912cd5ffb38f07dd9f83af4bdf38505 tag: latest@sha256:2e0c0b78043d5f0885b99c9ac3c1506844c9645081740d2394ce6e23b168bfe8
pullPolicy: Always pullPolicy: Always
# -- Domain used by devices for identifcation # -- Domain used by devices for identifcation

View File

@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: https://bjw-s-labs.github.io/helm-charts/
version: 5.0.0
digest: sha256:153788a98eab8a2e83bd456e1f6f3d53d1a3363bfe5bca07bd232d948e01a6b2
generated: "2026-05-07T20:56:33.260732-05:00"

View File

@@ -0,0 +1,20 @@
apiVersion: v2
name: rclone-bucket
version: 0.8.1
description: Rclone CronJob to replicate buckets
keywords:
- rclone-bucket
- rclone
- storage
sources:
- https://github.com/rclone/rclone
- https://hub.docker.com/r/rclone/rclone
maintainers:
- name: alexlebens
dependencies:
- name: common
repository: https://bjw-s-labs.github.io/helm-charts/
version: 5.0.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/rclone.png
# renovate: datasource=github-releases depName=rclone/rclone
appVersion: v1.74.0

View File

@@ -0,0 +1,44 @@
# rclone-bucket
![Version: 0.8.1](https://img.shields.io/badge/Version-0.8.1-informational?style=flat-square) ![AppVersion: v1.74.0](https://img.shields.io/badge/AppVersion-v1.74.0-informational?style=flat-square)
Rclone CronJob to replicate buckets
## Maintainers
| Name | Email | Url |
| ---- | ------ | --- |
| alexlebens | | |
## Source Code
* <https://github.com/rclone/rclone>
* <https://hub.docker.com/r/rclone/rclone>
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| https://bjw-s-labs.github.io/helm-charts/ | common | 5.0.0 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| additionalLabels | object | `{}` | Add additional labels |
| 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.74.0@sha256:d2e0e88359d0b2e67cfcd2c43d5405185eb8adfc207079df27c42da82c5207bc"}` | Default image |
| nameOverride | string | `""` | Default pattern follows <pvcTarget>-backup |
| 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.destination | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Destination configuration |
| rclone.source | object | `{"bucketName":"bucket","forcePathStyle":true,"providerType":"Other"}` | Source configuration |
| secret | object | `{"existingSecretDestination":{"name":"rclone-destination-secret"},"existingSecretSource":{"name":"rclone-source-secret"},"externalSecret":{"additionalLabels":{},"destination":{"config":{"endpointProperty":"ENDPOINT_REMOTE","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""},"enabled":true,"source":{"config":{"endpointProperty":"ENDPOINT_LOCAL","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""},"storeName":"openbao"}}` | Secret configuration |
| secret.existingSecretSource | object | `{"name":"rclone-source-secret"}` | Name of existing secret that contains the configuration |
| secret.externalSecret | object | `{"additionalLabels":{},"destination":{"config":{"endpointProperty":"ENDPOINT_REMOTE","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""},"enabled":true,"source":{"config":{"endpointProperty":"ENDPOINT_LOCAL","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""},"storeName":"openbao"}` | External Secret configuration |
| secret.externalSecret.additionalLabels | object | `{}` | Add additional labels |
| secret.externalSecret.destination | object | `{"config":{"endpointProperty":"ENDPOINT_REMOTE","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""}` | Destination configuration |
| secret.externalSecret.source | object | `{"config":{"endpointProperty":"ENDPOINT_LOCAL","path":"/config"},"credentials":{"keyIdProperty":"ACCESS_KEY_ID","path":"/credential","regionProperty":"ACCESS_REGION","secretKeyProperty":"ACCESS_SECRET_KEY"},"nameOverride":""}` | Source configuration |
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

View File

@@ -0,0 +1,90 @@
{{/*
Generate the root name
*/}}
{{- define "rclone.name" -}}
{{- if .Values.nameOverride }}
{{- .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-rclone" .Values.rclone.source.bucketName | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Generate the secret name
*/}}
{{- define "rclone.sourceSecretName" -}}
{{- if .Values.secret.externalSecret.enabled }}
{{- if .Values.secret.externalSecret.source.nameOverride }}
{{- .Values.secret.externalSecret.source.nameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-rclone-source-config" .Values.rclone.source.bucketName -}}
{{- end }}
{{- else if .Values.secret.existingSecretSource.name }}
{{- printf "%s" .Values.secret.existingSecretSource.name -}}
{{- else }}
{{ fail "No Secret Name Found!" }}
{{- end }}
{{- end }}
{{- define "rclone.destinationSecretName" -}}
{{- if .Values.secret.externalSecret.enabled }}
{{- if .Values.secret.externalSecret.destination.nameOverride }}
{{- .Values.secret.externalSecret.destination.nameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-rclone-destination-config" .Values.rclone.destination.bucketName -}}
{{- end }}
{{- else if .Values.secret.existingSecretDestination.name }}
{{- printf "%s" .Values.secret.existingSecretDestination.name -}}
{{- else }}
{{ fail "No Secret Name Found!" }}
{{- end }}
{{- end }}
{{/*
Common env names
*/}}
{{- define "secretRclone.envAccessKey" -}}
ACCESS_KEY_ID
{{- end }}
{{- define "secretRclone.envSecretKey" -}}
ACCESS_SECRET_KEY
{{- end }}
{{- define "secretRclone.envRegion" -}}
ACCESS_REGION
{{- end }}
{{- define "secretRclone.envSrcEndpoint" -}}
SRC_ENDPOINT
{{- end }}
{{- define "secretRclone.envDestEndpoint" -}}
DEST_ENDPOINT
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "secretRclone.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "secretRclone.labels" -}}
helm.sh/chart: {{ include "secretRclone.chart" $ }}
{{ include "secretRclone.selectorLabels" $ }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.Version | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- with .Values.secret.externalSecret.additionalLabels }}
{{ toYaml . }}
{{- end }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "secretRclone.selectorLabels" -}}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }}

View File

@@ -0,0 +1,143 @@
{{- include "bjw-s.common.loader.init" . }}
{{- define "rclone.hardcodedValues" -}}
global:
nameOverride: {{ include "rclone.name" . }}
fullNameOverride: {{ include "rclone.name" . }}
controllers:
main:
type: cronjob
{{- with .Values.cronJob }}
cronjob:
{{- toYaml . | nindent 6 }}
{{ end }}
containers:
sync:
image:
repository: {{ .Values.image.repository }}
tag: {{ .Values.image.tag }}
pullPolicy: {{ .Values.image.pullPolicy }}
args:
- sync
- src:{{ .Values.rclone.source.bucketName }}
- dest:{{ .Values.rclone.destination.bucketName }}
- --s3-no-check-bucket
{{- if .Values.prune.enabled }}
- --max-age
- {{ .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 }}
- --verbose
env:
- name: RCLONE_S3_PROVIDER
value: {{ .Values.rclone.providerType }}
- name: RCLONE_CONFIG_SRC_TYPE
value: s3
- name: RCLONE_CONFIG_SRC_PROVIDER
value: {{ .Values.rclone.source.providerType }}
- name: RCLONE_CONFIG_SRC_ENV_AUTH
value: "false"
- name: RCLONE_CONFIG_SRC_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_SRC_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_SRC_REGION
valueFrom:
secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_SRC_ENDPOINT
valueFrom:
secretKeyRef:
name: {{ include "rclone.sourceSecretName" . }}
key: {{ include "secretRclone.envSrcEndpoint" . }}
- name: RCLONE_CONFIG_SRC_FORCE_PATH_STYLE
value: {{ .Values.rclone.source.forcePathStyle | quote }}
- name: RCLONE_CONFIG_DEST_TYPE
value: s3
- name: RCLONE_CONFIG_DEST_PROVIDER
value: {{ .Values.rclone.destination.providerType }}
- name: RCLONE_CONFIG_DEST_ENV_AUTH
value: "false"
- name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_DEST_REGION
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_DEST_ENDPOINT
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envDestEndpoint" . }}
- name: RCLONE_CONFIG_DEST_FORCE_PATH_STYLE
value: {{ .Values.rclone.destination.forcePathStyle | quote }}
{{- if .Values.prune.enabled }}
prune:
image:
repository: {{ .Values.image.repository }}
tag: {{ .Values.image.tag }}
pullPolicy: {{ .Values.image.pullPolicy }}
args:
- delete
- dest:{{ .Values.rclone.destination.bucketName }}
- --min-age
- {{ .Values.prune.ageToPrune | quote }}
- --verbose
env:
- name: RCLONE_CONFIG_DEST_TYPE
value: s3
- name: RCLONE_CONFIG_DEST_PROVIDER
value: {{ .Values.rclone.destination.providerType }}
- name: RCLONE_CONFIG_DEST_ENV_AUTH
value: "false"
- name: RCLONE_CONFIG_DEST_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envAccessKey" . }}
- name: RCLONE_CONFIG_DEST_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envSecretKey" . }}
- name: RCLONE_CONFIG_DEST_REGION
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envRegion" . }}
- name: RCLONE_CONFIG_DEST_ENDPOINT
valueFrom:
secretKeyRef:
name: {{ include "rclone.destinationSecretName" . }}
key: {{ include "secretRclone.envDestEndpoint" . }}
- name: RCLONE_CONFIG_DEST_FORCE_PATH_STYLE
value: {{ .Values.rclone.destination.forcePathStyle | quote }}
{{- end }}
{{- end -}}
{{- $_ := mergeOverwrite .Values (include "rclone.hardcodedValues" . | fromYaml) -}}
{{/* Render the templates */}}
{{ include "bjw-s.common.loader.generate" . }}

View File

@@ -0,0 +1,69 @@
{{- if .Values.secret.externalSecret.enabled }}
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: {{ include "rclone.sourceSecretName" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "secretRclone.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "rclone.sourceSecretName" . }}
{{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }}
data:
- secretKey: {{ include "secretRclone.envAccessKey" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.keyIdProperty }}
- secretKey: {{ include "secretRclone.envSecretKey" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.secretKeyProperty }}
- secretKey: {{ include "secretRclone.envRegion" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.source.credentials.path }}
property: {{ .Values.secret.externalSecret.source.credentials.regionProperty }}
- secretKey: {{ include "secretRclone.envSrcEndpoint" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.source.config.path }}
property: {{ .Values.secret.externalSecret.source.config.endpointProperty }}
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: {{ include "rclone.destinationSecretName" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "secretRclone.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "rclone.destinationSecretName" . }}
{{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: {{ .Values.secret.externalSecret.storeName | required "External Secret store name is required" }}
data:
- secretKey: {{ include "secretRclone.envAccessKey" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.keyIdProperty }}
- secretKey: {{ include "secretRclone.envSecretKey" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.secretKeyProperty }}
- secretKey: {{ include "secretRclone.envRegion" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.destination.credentials.path }}
property: {{ .Values.secret.externalSecret.destination.credentials.regionProperty }}
- secretKey: {{ include "secretRclone.envDestEndpoint" . }}
remoteRef:
key: {{ .Values.secret.externalSecret.destination.config.path }}
property: {{ .Values.secret.externalSecret.destination.config.endpointProperty }}
{{- end }}

View File

@@ -0,0 +1,84 @@
# -- Default pattern follows <pvcTarget>-backup
nameOverride: ""
# -- Add additional labels
additionalLabels: {}
# -- Default image
image:
repository: rclone/rclone
tag: 1.74.0@sha256:d2e0e88359d0b2e67cfcd2c43d5405185eb8adfc207079df27c42da82c5207bc
pullPolicy: IfNotPresent
# -- CronJob configuration
cronJob:
suspend: false
timeZone: America/Chicago
schedule: 0 0 * * *
backoffLimit: 3
parallelism: 1
# -- rclone configuration
rclone:
providerType: Other
# -- Source configuration
source:
providerType: Other
bucketName: bucket
forcePathStyle: true
# -- Destination configuration
destination:
providerType: Other
bucketName: bucket
forcePathStyle: true
# -- Enable prune job
prune:
enabled: false
ageToPrune: 90d
include: ""
exclude: ""
# -- Secret configuration
secret:
# -- External Secret configuration
externalSecret:
enabled: true
storeName: openbao
# -- Source configuration
source:
nameOverride: ""
credentials:
path: /credential
keyIdProperty: ACCESS_KEY_ID
secretKeyProperty: ACCESS_SECRET_KEY
regionProperty: ACCESS_REGION
config:
path: /config
endpointProperty: ENDPOINT_LOCAL
# -- Destination configuration
destination:
nameOverride: ""
credentials:
path: /credential
keyIdProperty: ACCESS_KEY_ID
secretKeyProperty: ACCESS_SECRET_KEY
regionProperty: ACCESS_REGION
config:
path: /config
endpointProperty: ENDPOINT_REMOTE
# -- Add additional labels
additionalLabels: {}
# -- Name of existing secret that contains the configuration
existingSecretSource:
name: rclone-source-secret
existingSecretDestination:
name: rclone-destination-secret

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: valkey name: valkey
version: 0.6.1 version: 0.8.0
description: Valkey chart with preconfigured settings description: Valkey chart with preconfigured settings
keywords: keywords:
- valkey - valkey
@@ -19,4 +19,4 @@ dependencies:
version: 0.9.4 version: 0.9.4
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/valkey.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/valkey.png
# renovate: datasource=github-releases depName=valkey-io/valkey # renovate: datasource=github-releases depName=valkey-io/valkey
appVersion: 9.0.3 appVersion: 9.0.4

View File

@@ -1,6 +1,6 @@
# valkey # valkey
![Version: 0.6.1](https://img.shields.io/badge/Version-0.6.1-informational?style=flat-square) ![AppVersion: 9.0.3](https://img.shields.io/badge/AppVersion-9.0.3-informational?style=flat-square) ![Version: 0.8.0](https://img.shields.io/badge/Version-0.8.0-informational?style=flat-square) ![AppVersion: 9.0.4](https://img.shields.io/badge/AppVersion-9.0.4-informational?style=flat-square)
Valkey chart with preconfigured settings Valkey chart with preconfigured settings
@@ -35,11 +35,11 @@ Valkey chart with preconfigured settings
| valkey.dataStorage.requestedSize | string | `"1Gi"` | | | valkey.dataStorage.requestedSize | string | `"1Gi"` | |
| valkey.image.registry | string | `"docker.io"` | | | valkey.image.registry | string | `"docker.io"` | |
| valkey.image.repository | string | `"valkey/valkey"` | | | valkey.image.repository | string | `"valkey/valkey"` | |
| valkey.image.tag | string | `"9.0.3@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9"` | | | valkey.image.tag | string | `"9.0.4@sha256:8436e10bc65c94886a91d4415b6a6dfa9cb5a306fb3b996e5bb67cd2b4854193"` | |
| valkey.metrics.enabled | bool | `true` | | | valkey.metrics.enabled | bool | `true` | |
| valkey.metrics.exporter.image.registry | string | `"ghcr.io"` | | | valkey.metrics.exporter.image.registry | string | `"ghcr.io"` | |
| valkey.metrics.exporter.image.repository | string | `"oliver006/redis_exporter"` | | | valkey.metrics.exporter.image.repository | string | `"oliver006/redis_exporter"` | |
| valkey.metrics.exporter.image.tag | string | `"v1.82.0@sha256:6a97d4dd743b533e1f950c677b87d880e44df363c61af3f406fc9e53ed65ee03"` | | | valkey.metrics.exporter.image.tag | string | `"v1.83.0@sha256:e8c209894d4c0cc55b1259ddd47e0b769ad1ff864b356736ee885462a3b0e48c"` | |
| valkey.metrics.exporter.resources.requests.cpu | string | `"1m"` | | | valkey.metrics.exporter.resources.requests.cpu | string | `"1m"` | |
| valkey.metrics.exporter.resources.requests.memory | string | `"10M"` | | | valkey.metrics.exporter.resources.requests.memory | string | `"10M"` | |
| valkey.metrics.podMonitor.enabled | bool | `true` | | | valkey.metrics.podMonitor.enabled | bool | `true` | |

View File

@@ -3,7 +3,7 @@ valkey:
image: image:
registry: docker.io registry: docker.io
repository: valkey/valkey repository: valkey/valkey
tag: 9.0.3@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9 tag: 9.0.4@sha256:8436e10bc65c94886a91d4415b6a6dfa9cb5a306fb3b996e5bb67cd2b4854193
serviceAccount: serviceAccount:
create: true create: true
resources: resources:
@@ -31,7 +31,7 @@ valkey:
image: image:
registry: ghcr.io registry: ghcr.io
repository: oliver006/redis_exporter repository: oliver006/redis_exporter
tag: v1.82.0@sha256:6a97d4dd743b533e1f950c677b87d880e44df363c61af3f406fc9e53ed65ee03 tag: v1.83.0@sha256:e8c209894d4c0cc55b1259ddd47e0b769ad1ff864b356736ee885462a3b0e48c
resources: resources:
requests: requests:
cpu: 1m cpu: 1m

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: volsync-target name: volsync-target
version: 1.0.0 version: 2.0.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: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 0.15.0](https://img.shields.io/badge/AppVersion-0.15.0-informational?style=flat-square) ![Version: 2.0.0](https://img.shields.io/badge/Version-2.0.0-informational?style=flat-square) ![AppVersion: 0.15.0](https://img.shields.io/badge/AppVersion-0.15.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,24 +20,25 @@ 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":{"bucketPath":"/digital-ocean/config","credentialPath":"/digital-ocean/home-infra/volsync-backups"},"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 | object | `{"enabled":true,"externalSecret":{"bucketPath":"/backblaze/config","credentialPath":"/backblaze/home-infra/volsync-backups"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":35,"repository":"","retain":{"daily":0,"hourly":0,"monthly":0,"weekly":12,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 9 * * 0"}` | External backup configuration |
| external.externalSecret | object | `{"bucketPath":"/digital-ocean/config","credentialPath":"/digital-ocean/home-infra/volsync-backups"}` | External Secret configuration | | external.externalSecret | object | `{"bucketPath":"/backblaze/config","credentialPath":"/backblaze/home-infra/volsync-backups"}` | External Secret configuration |
| 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.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":35,"repository":"","retain":{"daily":0,"hourly":0,"monthly":0,"weekly":12,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| external.schedule | string | `"0 9 * * *"` | 5 character cron schedule | | external.schedule | string | `"0 9 * * 0"` | 5 character cron schedule |
| externalSecrets | object | `{"enabled":true}` | Use external secrets | | externalSecrets | object | `{"enabled":true}` | Use external secrets |
| kubernetesClusterName | string | `"cl01tl"` | Kubernetes cluster name | | kubernetesClusterName | string | `"cl01tl"` | Kubernetes cluster name |
| local | object | `{"enabled":false,"externalSecret":{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"},"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 | object | `{"enabled":false,"externalSecret":{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":0,"weekly":4,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 8 * * *"}` | Local backup configuration |
| local.externalSecret | object | `{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"}` | External Secret configuration | | local.externalSecret | object | `{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"}` | External Secret configuration |
| 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.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":7,"hourly":0,"monthly":0,"weekly":4,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| local.schedule | string | `"0 8 * * *"` | 5 character cron schedule | | local.schedule | string | `"0 8 * * *"` | 5 character cron schedule |
| moverSecurityContext | object | `{}` | Glocal security context for restic mover | | 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 |
| prometheusRule | object | `{"enabled":true}` | Prometheus Rule |
| pvcTarget | string | `"data"` | Name of the PVC target | | pvcTarget | string | `"data"` | Name of the PVC target |
| remote | object | `{"enabled":false,"externalSecret":{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"},"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 | object | `{"enabled":false,"externalSecret":{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"},"restic":{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":0,"hourly":0,"monthly":0,"weekly":12,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"},"schedule":"0 10 * * 0"}` | Remote backup configuration |
| remote.externalSecret | object | `{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"}` | External Secret configuration | | remote.externalSecret | object | `{"bucketPath":"/garage/config","credentialPath":"/garage/home-infra/volsync-backups"}` | External Secret configuration |
| 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.restic | object | `{"cacheCapacity":"1Gi","copyMethod":"Snapshot","pruneIntervalDays":7,"repository":"","retain":{"daily":0,"hourly":0,"monthly":0,"weekly":12,"yearly":0},"storageClassName":"ceph-block","volumeSnapshotClassName":"ceph-blockpool-snapshot"}` | Backup configuration, inserted directly into the yaml |
| remote.schedule | string | `"0 10 * * *"` | 5 character cron schedule | | remote.schedule | string | `"0 10 * * 0"` | 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

@@ -0,0 +1,32 @@
{{- if .Values.prometheusRule.enabled }}
---
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: {{ include "volsync.name" . }}-source-local
namespace: {{ include "volsync.namespace" . }}
labels:
{{- include "volsync.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "volsync.name" . }}-source-local
{{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
groups:
- name: volsync.alerts
rules:
- alert: VolSyncBackupPodFailed
expr: |
(kube_pod_container_status_last_terminated_exitcode > 0)
* on(pod, namespace) group_left(owner_name)
kube_pod_owner{owner_kind="Job", owner_name=~"volsync-.*"}
for: 1m
labels:
severity: critical
annotations:
summary: "VolSync Backup Pod failed in {{ `{{ $labels.namespace }}` }}"
description: |
A pod for the VolSync backup of PVC '{{ .Values.pvcTarget }}' failed with exit code {{ `{{ $value }}` }}.
Job: {{ `{{ $labels.owner_name }}` }}
Namespace: {{ `{{ $labels.namespace }}` }}
{{- end }}

View File

@@ -7,7 +7,7 @@ metadata:
namespace: {{ include "volsync.namespace" . }} namespace: {{ include "volsync.namespace" . }}
labels: labels:
{{- include "volsync.labels" . | nindent 4 }} {{- include "volsync.labels" . | nindent 4 }}
app.kubernetes.io/name: {{ include "volsync.name" . }} app.kubernetes.io/name: {{ include "volsync.name" . }}-source-local
{{- with .Values.additionalLabels }} {{- with .Values.additionalLabels }}
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}

View File

@@ -16,6 +16,10 @@ pvcTarget: "data"
# -- Glocal security context for restic mover # -- Glocal security context for restic mover
moverSecurityContext: {} moverSecurityContext: {}
# -- Prometheus Rule
prometheusRule:
enabled: true
# -- Use external secrets # -- Use external secrets
externalSecrets: externalSecrets:
enabled: true enabled: true
@@ -35,8 +39,8 @@ local:
hourly: 0 hourly: 0
daily: 7 daily: 7
weekly: 4 weekly: 4
monthly: 3 monthly: 0
yearly: 1 yearly: 0
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot
@@ -54,7 +58,7 @@ remote:
enabled: false enabled: false
# -- 5 character cron schedule # -- 5 character cron schedule
schedule: 0 10 * * * schedule: 0 10 * * 0
# -- Backup configuration, inserted directly into the yaml # -- Backup configuration, inserted directly into the yaml
restic: restic:
@@ -62,10 +66,10 @@ remote:
repository: "" repository: ""
retain: retain:
hourly: 0 hourly: 0
daily: 7 daily: 0
weekly: 4 weekly: 12
monthly: 3 monthly: 0
yearly: 1 yearly: 0
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot
@@ -83,18 +87,18 @@ external:
enabled: true enabled: true
# -- 5 character cron schedule # -- 5 character cron schedule
schedule: 0 9 * * * schedule: 0 9 * * 0
# -- Backup configuration, inserted directly into the yaml # -- Backup configuration, inserted directly into the yaml
restic: restic:
pruneIntervalDays: 7 pruneIntervalDays: 35
repository: "" repository: ""
retain: retain:
hourly: 0 hourly: 0
daily: 7 daily: 0
weekly: 4 weekly: 12
monthly: 3 monthly: 0
yearly: 1 yearly: 0
copyMethod: Snapshot copyMethod: Snapshot
storageClassName: ceph-block storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot volumeSnapshotClassName: ceph-blockpool-snapshot
@@ -103,6 +107,6 @@ external:
# -- External Secret configuration # -- External Secret configuration
externalSecret: externalSecret:
# This path must contain the ENDPOINT # This path must contain the ENDPOINT
bucketPath: /digital-ocean/config bucketPath: /backblaze/config
# This path must contain the AWS/S3 credentials and RESTIC_PASSWORD # This path must contain the AWS/S3 credentials and RESTIC_PASSWORD
credentialPath: /digital-ocean/home-infra/volsync-backups credentialPath: /backblaze/home-infra/volsync-backups