Switch adguardhome/esphome/signal-gateway/zigbee2mqtt to PVC storage

Replaces raw hostPath (/srv/data/<app>) with a local-path PVC per app,
so these apps get proper PVC lifecycle semantics and can have a PVC
backup CronJob (matching what gitea already has) instead of being
unbacked host directories. local-path already lives on the same disk
these hostPaths did, so this isn't a storage-tier change.

adguardhome specifically: consolidates the previous split work/+conf/
hostPath mounts into a single PVC mounted at /opt/adguardhome (its own
default convention), since a real deployment can't run two hostPath
subtrees off one PVC.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01566weDFku8TaRC2CJUPVM1
This commit is contained in:
sha
2026-08-24 02:44:30 +03:00
co-authored by Claude Sonnet 5
parent d22a3a62cf
commit cc5ecd25ce
16 changed files with 115 additions and 36 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: adguardhome
description: AdGuard Home DNS server Helm chart
type: application
version: 0.1.6
version: 0.1.7
appVersion: "0.107.79"
annotations:
version-source: github-release:AdguardTeam/AdGuardHome
+5 -12
View File
@@ -46,16 +46,9 @@ spec:
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumeMounts:
- name: work
mountPath: /opt/adguardhome/work
- name: conf
mountPath: /opt/adguardhome/conf
- name: data
mountPath: /opt/adguardhome
volumes:
- name: work
hostPath:
path: {{ .Values.volumes.work.hostPath }}
type: DirectoryOrCreate
- name: conf
hostPath:
path: {{ .Values.volumes.conf.hostPath }}
type: DirectoryOrCreate
- name: data
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
+18
View File
@@ -0,0 +1,18 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-data
labels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
accessModes:
{{- toYaml .Values.persistence.accessModes | nindent 4 }}
{{- with .Values.persistence.storageClass }}
storageClassName: {{ . }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- end }}
+7 -5
View File
@@ -13,11 +13,13 @@ resources:
cpu: "2"
memory: "1Gi"
volumes:
work:
hostPath: ""
conf:
hostPath: ""
persistence:
enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
dns:
enabled: true
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: esphome
description: ESPHome Helm chart
type: application
version: 0.1.26
version: 0.1.27
appVersion: "2026.8.0"
annotations:
version-source: github-release:esphome/esphome
+2 -3
View File
@@ -47,6 +47,5 @@ spec:
mountPath: /config
volumes:
- name: config
hostPath:
path: {{ .Values.volume.hostPath }}
type: DirectoryOrCreate
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
+18
View File
@@ -0,0 +1,18 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-data
labels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
accessModes:
{{- toYaml .Values.persistence.accessModes | nindent 4 }}
{{- with .Values.persistence.storageClass }}
storageClassName: {{ . }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- end }}
+7 -2
View File
@@ -16,8 +16,13 @@ resources:
hostNetwork: true
volume:
hostPath: ""
persistence:
enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
ingresses: {}
# https:
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: signal-gateway
description: Signal Gateway Helm chart
type: application
version: 0.1.2
version: 0.1.3
appVersion: "0.100"
annotations:
version-source: github-release:bbernhard/signal-cli-rest-api
+2 -3
View File
@@ -39,6 +39,5 @@ spec:
mountPath: /home/.local/share/signal-cli
volumes:
- name: config
hostPath:
path: {{ .Values.volume.hostPath }}
type: DirectoryOrCreate
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
+18
View File
@@ -0,0 +1,18 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-data
labels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
accessModes:
{{- toYaml .Values.persistence.accessModes | nindent 4 }}
{{- with .Values.persistence.storageClass }}
storageClassName: {{ . }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- end }}
+7 -2
View File
@@ -19,8 +19,13 @@ resources:
cpu: "1"
memory: "512Mi"
volume:
hostPath: ""
persistence:
enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
ingresses: {}
# https:
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: zigbee2mqtt
description: Zigbee2MQTT Helm chart
type: application
version: 0.1.5
version: 0.1.6
appVersion: "2.13.0"
annotations:
version-source: github-release:Koenkk/zigbee2mqtt
+2 -3
View File
@@ -67,6 +67,5 @@ spec:
mountPath: /app/data
volumes:
- name: data
hostPath:
path: {{ .Values.volume.hostPath }}
type: DirectoryOrCreate
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
+18
View File
@@ -0,0 +1,18 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-data
labels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
accessModes:
{{- toYaml .Values.persistence.accessModes | nindent 4 }}
{{- with .Values.persistence.storageClass }}
storageClassName: {{ . }}
{{- end }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- end }}
+7 -2
View File
@@ -21,8 +21,13 @@ resources:
memory: "1Gi"
# Persistent /app/data directory (configuration, device database, coordinator backup)
volume:
hostPath: ""
persistence:
enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
nodeSelector: {}
tolerations: []