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 name: adguardhome
description: AdGuard Home DNS server Helm chart description: AdGuard Home DNS server Helm chart
type: application type: application
version: 0.1.6 version: 0.1.7
appVersion: "0.107.79" appVersion: "0.107.79"
annotations: annotations:
version-source: github-release:AdguardTeam/AdGuardHome version-source: github-release:AdguardTeam/AdGuardHome
+5 -12
View File
@@ -46,16 +46,9 @@ spec:
resources: resources:
{{- toYaml .Values.resources | nindent 12 }} {{- toYaml .Values.resources | nindent 12 }}
volumeMounts: volumeMounts:
- name: work - name: data
mountPath: /opt/adguardhome/work mountPath: /opt/adguardhome
- name: conf
mountPath: /opt/adguardhome/conf
volumes: volumes:
- name: work - name: data
hostPath: persistentVolumeClaim:
path: {{ .Values.volumes.work.hostPath }} claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
type: DirectoryOrCreate
- name: conf
hostPath:
path: {{ .Values.volumes.conf.hostPath }}
type: DirectoryOrCreate
+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" cpu: "2"
memory: "1Gi" memory: "1Gi"
volumes: persistence:
work: enabled: true
hostPath: "" existingClaim: ""
conf: storageClass: local-path
hostPath: "" accessModes:
- ReadWriteOnce
size: 1Gi
dns: dns:
enabled: true enabled: true
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: esphome name: esphome
description: ESPHome Helm chart description: ESPHome Helm chart
type: application type: application
version: 0.1.26 version: 0.1.27
appVersion: "2026.8.0" appVersion: "2026.8.0"
annotations: annotations:
version-source: github-release:esphome/esphome version-source: github-release:esphome/esphome
+2 -3
View File
@@ -47,6 +47,5 @@ spec:
mountPath: /config mountPath: /config
volumes: volumes:
- name: config - name: config
hostPath: persistentVolumeClaim:
path: {{ .Values.volume.hostPath }} claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
type: DirectoryOrCreate
+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 hostNetwork: true
volume: persistence:
hostPath: "" enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
ingresses: {} ingresses: {}
# https: # https:
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: signal-gateway name: signal-gateway
description: Signal Gateway Helm chart description: Signal Gateway Helm chart
type: application type: application
version: 0.1.2 version: 0.1.3
appVersion: "0.100" appVersion: "0.100"
annotations: annotations:
version-source: github-release:bbernhard/signal-cli-rest-api version-source: github-release:bbernhard/signal-cli-rest-api
+2 -3
View File
@@ -39,6 +39,5 @@ spec:
mountPath: /home/.local/share/signal-cli mountPath: /home/.local/share/signal-cli
volumes: volumes:
- name: config - name: config
hostPath: persistentVolumeClaim:
path: {{ .Values.volume.hostPath }} claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
type: DirectoryOrCreate
+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" cpu: "1"
memory: "512Mi" memory: "512Mi"
volume: persistence:
hostPath: "" enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
ingresses: {} ingresses: {}
# https: # https:
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: zigbee2mqtt name: zigbee2mqtt
description: Zigbee2MQTT Helm chart description: Zigbee2MQTT Helm chart
type: application type: application
version: 0.1.5 version: 0.1.6
appVersion: "2.13.0" appVersion: "2.13.0"
annotations: annotations:
version-source: github-release:Koenkk/zigbee2mqtt version-source: github-release:Koenkk/zigbee2mqtt
+2 -3
View File
@@ -67,6 +67,5 @@ spec:
mountPath: /app/data mountPath: /app/data
volumes: volumes:
- name: data - name: data
hostPath: persistentVolumeClaim:
path: {{ .Values.volume.hostPath }} claimName: {{ .Values.persistence.existingClaim | default (printf "%s-data" .Release.Name) }}
type: DirectoryOrCreate
+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" memory: "1Gi"
# Persistent /app/data directory (configuration, device database, coordinator backup) # Persistent /app/data directory (configuration, device database, coordinator backup)
volume: persistence:
hostPath: "" enabled: true
existingClaim: ""
storageClass: local-path
accessModes:
- ReadWriteOnce
size: 1Gi
nodeSelector: {} nodeSelector: {}
tolerations: [] tolerations: []