diff --git a/apps/charts/home-assistant/Chart.yaml b/apps/charts/home-assistant/Chart.yaml index a245983..c2eb763 100644 --- a/apps/charts/home-assistant/Chart.yaml +++ b/apps/charts/home-assistant/Chart.yaml @@ -1,3 +1,7 @@ apiVersion: v2 version: 1.0.0 name: home-assistant +dependencies: + - name: common + version: 1.0.0 + repository: file://../../common diff --git a/apps/charts/home-assistant/templates/client.yaml b/apps/charts/home-assistant/templates/client.yaml index 6b913fd..c13745f 100644 --- a/apps/charts/home-assistant/templates/client.yaml +++ b/apps/charts/home-assistant/templates/client.yaml @@ -1,10 +1 @@ -apiVersion: homelab.mortenolsen.pro/v1 -kind: OidcClient -metadata: - name: "{{ .Release.Name }}" -spec: - environment: "{{ .Values.globals.environment }}" - redirectUris: - - path: /auth/openid/callback - subdomain: "{{ .Values.subdomain }}" - matchingMode: strict +{{ include "common.oidc" . }} diff --git a/apps/charts/home-assistant/templates/deployment.yaml b/apps/charts/home-assistant/templates/deployment.yaml index ff7ee56..4508e33 100644 --- a/apps/charts/home-assistant/templates/deployment.yaml +++ b/apps/charts/home-assistant/templates/deployment.yaml @@ -1,51 +1 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: "{{ .Release.Name }}" -spec: - strategy: - type: Recreate - replicas: 1 - revisionHistoryLimit: 0 - selector: - matchLabels: - app: "{{ .Release.Name }}" - template: - metadata: - labels: - app: "{{ .Release.Name }}" - spec: - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - - containers: - - name: "{{ .Release.Name }}" - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - env: - - name: TZ - value: "{{ .Values.globals.timezone }}" - ports: - - name: http - containerPort: 8123 - protocol: TCP - livenessProbe: - tcpSocket: - port: http - readinessProbe: - tcpSocket: - port: http - volumeMounts: - - mountPath: /config - name: config - - mountPath: /media/misc - name: misc - securityContext: - privileged: true - volumes: - - name: config - persistentVolumeClaim: - claimName: "{{ .Release.Name }}-config" - - name: misc - persistentVolumeClaim: - claimName: misc +{{ include "common.deployment" . }} diff --git a/apps/charts/home-assistant/templates/pvc.yaml b/apps/charts/home-assistant/templates/pvc.yaml index 8cbd0b4..379bad9 100644 --- a/apps/charts/home-assistant/templates/pvc.yaml +++ b/apps/charts/home-assistant/templates/pvc.yaml @@ -1,11 +1 @@ -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: "{{ .Release.Name }}-config" -spec: - accessModes: - - "ReadWriteOnce" - resources: - requests: - storage: "1Gi" - storageClassName: "{{ .Values.globals.environment }}" +{{ include "common.pvc" . }} diff --git a/apps/charts/home-assistant/templates/service.yaml b/apps/charts/home-assistant/templates/service.yaml index 2e04e50..f024c64 100644 --- a/apps/charts/home-assistant/templates/service.yaml +++ b/apps/charts/home-assistant/templates/service.yaml @@ -1,15 +1 @@ -apiVersion: v1 -kind: Service -metadata: - name: "{{ .Release.Name }}" - labels: - app: "{{ .Release.Name }}" -spec: - type: ClusterIP - ports: - - port: 80 - targetPort: 8123 - protocol: TCP - name: http - selector: - app: "{{ .Release.Name }}" +{{ include "common.service" . }} diff --git a/apps/charts/home-assistant/templates/virtual-service.yaml b/apps/charts/home-assistant/templates/virtual-service.yaml index 36e9d43..766f6b9 100644 --- a/apps/charts/home-assistant/templates/virtual-service.yaml +++ b/apps/charts/home-assistant/templates/virtual-service.yaml @@ -1,39 +1 @@ -apiVersion: networking.istio.io/v1 -kind: VirtualService -metadata: - name: "{{ .Release.Name }}-public" - namespace: "{{ .Release.Namespace }}" -spec: - gateways: - - "{{ .Values.globals.istio.gateways.public }}" - - mesh - hosts: - - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - - mesh - http: - - route: - - destination: - host: "{{ .Release.Name }}" - port: - number: 80 - ---- -apiVersion: networking.istio.io/v1 -kind: VirtualService -metadata: - name: "{{ .Release.Name }}-private" - namespace: "{{ .Release.Namespace }}" -spec: - gateways: - - "{{ .Values.globals.istio.gateways.private }}" - - mesh - hosts: - - "{{ .Values.subdomain }}.{{ .Values.globals.domain }}" - - mesh - http: - - route: - - destination: - host: "{{ .Release.Name }}" - port: - number: 80 - +{{ include "common.virtualService" . }} diff --git a/apps/charts/home-assistant/values.yaml b/apps/charts/home-assistant/values.yaml index 5ac1cd7..48f729c 100644 --- a/apps/charts/home-assistant/values.yaml +++ b/apps/charts/home-assistant/values.yaml @@ -2,7 +2,57 @@ image: repository: ghcr.io/home-assistant/home-assistant tag: 2025.12.5@sha256:9a5a3eb4a213dfb25932dee9dc6815c9305f78cecb5afa716fa2483163d8fb5b pullPolicy: IfNotPresent + subdomain: home-assistant + +# Deployment configuration +deployment: + strategy: Recreate + replicas: 1 + hostNetwork: true + dnsPolicy: ClusterFirstWithHostNet + +# Container configuration +container: + port: 8123 + healthProbe: + type: tcpSocket + port: http # Use named port + securityContext: + privileged: true + +# Service configuration +service: + port: 80 + type: ClusterIP + +# VirtualService configuration +virtualService: + enabled: true + gateways: + public: true + private: true + +# OIDC client configuration +oidc: + enabled: true + redirectUris: + - "/auth/openid/callback" + subjectMode: user_username + +# Volume configuration +volumes: + - name: config + mountPath: /config + persistentVolumeClaim: config + - name: misc + mountPath: /media/misc + persistentVolumeClaim: misc # External PVC, not prefixed + +# Persistent volume claims +persistentVolumeClaims: + - name: config + size: 1Gi piper: image: repository: ghcr.io/morten-olsen/glados-voice diff --git a/apps/charts/n8n/values.yaml b/apps/charts/n8n/values.yaml index f0c66db..68768c9 100644 --- a/apps/charts/n8n/values.yaml +++ b/apps/charts/n8n/values.yaml @@ -15,7 +15,6 @@ subdomain: n8n deployment: strategy: RollingUpdate replicas: 1 - revisionHistoryLimit: 0 # Container configuration (multiple ports) container: diff --git a/apps/charts/readeck/values.yaml b/apps/charts/readeck/values.yaml index d3a25ab..0569e61 100644 --- a/apps/charts/readeck/values.yaml +++ b/apps/charts/readeck/values.yaml @@ -9,7 +9,6 @@ subdomain: readeck deployment: strategy: Recreate replicas: 1 - revisionHistoryLimit: 0 # Container configuration container: diff --git a/apps/common/templates/_helpers.tpl b/apps/common/templates/_helpers.tpl index 93fd6d1..d517a97 100644 --- a/apps/common/templates/_helpers.tpl +++ b/apps/common/templates/_helpers.tpl @@ -286,7 +286,11 @@ spec: strategy: type: {{ include "common.deploymentStrategy" . }} replicas: {{ .Values.deployment.replicas | default 1 }} - revisionHistoryLimit: {{ .Values.deployment.revisionHistoryLimit | default 2 }} + {{- if hasKey .Values.deployment "revisionHistoryLimit" }} + revisionHistoryLimit: {{ .Values.deployment.revisionHistoryLimit }} + {{- else }} + revisionHistoryLimit: 2 + {{- end }} selector: matchLabels: {{- include "common.selectorLabels" . | nindent 6 }} @@ -301,6 +305,9 @@ spec: {{- if .Values.deployment.hostNetwork }} hostNetwork: {{ .Values.deployment.hostNetwork }} {{- end }} + {{- if .Values.deployment.dnsPolicy }} + dnsPolicy: {{ .Values.deployment.dnsPolicy }} + {{- end }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" @@ -313,6 +320,10 @@ spec: readinessProbe: {{ include "common.healthProbe" . | indent 12 }} {{- end }} + {{- if .Values.container.securityContext }} + securityContext: + {{- toYaml .Values.container.securityContext | nindent 12 }} + {{- end }} {{- if .Values.volumes }} volumeMounts: {{ include "common.volumeMounts" . | indent 12 }}