Compare commits
	
		
			22 Commits
		
	
	
		
			a050a64e38
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c0975e0803 | |||
| 066d50b5f8 | |||
| 2fe28eb9f3 | |||
| 1060d1ba9d | |||
| d9d7466522 | |||
| 26cb646c1b | |||
| f354eba06f | |||
| 44ef452bc3 | |||
| ac92ccc348 | |||
| ec6d2f33a3 | |||
| 5819df868a | |||
| c669025b5e | |||
| 161429f7a7 | |||
| 4d4c0c04c7 | |||
| 29ecafe10a | |||
| 4ba15778b8 | |||
| a08a81b529 | |||
| 8304e2249e | |||
| 1c8d323169 | |||
| d16c7deed9 | |||
| c001b347b3 | |||
| f7fe8554f6 | 
| @@ -17,5 +17,5 @@ helmCharts: | ||||
|   - releaseName: grafana | ||||
|     name: grafana | ||||
|     repo: https://grafana.github.io/helm-charts | ||||
|     version: 10.1.2 | ||||
|     version: 10.1.4 | ||||
|     valuesFile: grafana.values.yaml | ||||
|   | ||||
| @@ -34,4 +34,3 @@ spec: | ||||
|         - name: config-dir | ||||
|           persistentVolumeClaim: | ||||
|             claimName: config | ||||
| 
 | ||||
| @@ -1,17 +1,17 @@ | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: IngressRoute | ||||
| metadata: | ||||
|   name: homeassistant-ingress | ||||
|   name: homeassistant | ||||
| spec: | ||||
|   entryPoints: | ||||
|     - websecure | ||||
|   routes: | ||||
|     - match: Host(`home.kluster.moll.re`) && !Path(`/api/prometheus`) | ||||
|     - match: Host(`homeassistant.kluster.moll.re`) | ||||
|       middlewares: | ||||
|         - name: homeassistant-websocket | ||||
|         - name: homeassistant | ||||
|       kind: Rule | ||||
|       services: | ||||
|         - name: homeassistant-web | ||||
|         - name: homeassistant | ||||
|           port: 8123 | ||||
|   tls: | ||||
|     certResolver: default-tls | ||||
| @@ -19,7 +19,7 @@ spec: | ||||
| apiVersion: traefik.io/v1alpha1 | ||||
| kind: Middleware | ||||
| metadata: | ||||
|   name: homeassistant-websocket | ||||
|   name: homeassistant | ||||
| spec: | ||||
|   headers: | ||||
|     customRequestHeaders: | ||||
							
								
								
									
										20
									
								
								apps/homeassistant/base/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								apps/homeassistant/base/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| resources: | ||||
|   # - namespace.yaml # not managed by kustomize but created as needed by the argo app. creates conflicts otherwise since both overlays share the same namespace | ||||
|   - ingress.yaml | ||||
|   - pvc.yaml | ||||
|   - service.yaml | ||||
|   - deployment.yaml | ||||
|   - servicemonitor.yaml | ||||
|  | ||||
|  | ||||
| images: | ||||
|   - name: homeassistant | ||||
|     newName: homeassistant/home-assistant | ||||
|     newTag: "2025.10" | ||||
|  | ||||
| configurations: | ||||
|   # allow nameReference to work with different mentions of the same resource as well | ||||
|   - name_reference.yaml | ||||
							
								
								
									
										32
									
								
								apps/homeassistant/base/name_reference.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								apps/homeassistant/base/name_reference.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| nameReference: | ||||
|   # Tie target Service metadata.name to other ingressroute fields | ||||
|   - kind: Service | ||||
|     fieldSpecs: | ||||
|       # rewrite the backend service name | ||||
|       - kind: IngressRoute | ||||
|         group: traefik.io | ||||
|         version: v1alpha1 | ||||
|         path: spec/routes/services/name | ||||
|  | ||||
|       # adapt the ingress url | ||||
|       # DOES NOT WORK | ||||
|       - kind: IngressRoute | ||||
|         group: traefik.io | ||||
|         version: v1alpha1 | ||||
|         path: /spec/routes/match | ||||
|         create: false | ||||
|  | ||||
|       # adapt any middleware names | ||||
|       - kind: IngressRoute | ||||
|         group: traefik.io | ||||
|         version: v1alpha1 | ||||
|         path: spec/routes/middlewares/name | ||||
|  | ||||
|   # Update deployment volume mounts according to name changes in the sealedsecret | ||||
|   - kind: SealedSecret | ||||
|     fieldSpecs: | ||||
|       # volume mounts: | ||||
|       - kind: Deployment | ||||
|         group: apps | ||||
|         version: v1 | ||||
|         path: spec/template/spec/volumes/secret/secretName | ||||
| @@ -1,7 +1,7 @@ | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: homeassistant-web | ||||
|   name: homeassistant | ||||
|   labels: | ||||
|     app: homeassistant | ||||
| spec: | ||||
| @@ -10,4 +10,4 @@ spec: | ||||
|   ports: | ||||
|   - port: 8123 | ||||
|     targetPort: 8123 | ||||
|     name: http | ||||
|     name: http | ||||
| @@ -1,18 +0,0 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| namespace: homeassistant | ||||
|  | ||||
| resources:  | ||||
|   - namespace.yaml | ||||
|   - ingress.yaml | ||||
|   - pvc.yaml | ||||
|   - service.yaml | ||||
|   - deployment.yaml | ||||
|   - servicemonitor.yaml | ||||
|  | ||||
|  | ||||
| images: | ||||
|   - name: homeassistant | ||||
|     newName: homeassistant/home-assistant | ||||
|     newTag: "2025.10" | ||||
							
								
								
									
										3
									
								
								apps/homeassistant/overlays/flat/ingress.patch.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								apps/homeassistant/overlays/flat/ingress.patch.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| - op: replace | ||||
|   path: /spec/routes/0/match | ||||
|   value: Host(`home.kluster.moll.re`) | ||||
							
								
								
									
										17
									
								
								apps/homeassistant/overlays/flat/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								apps/homeassistant/overlays/flat/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| resources: | ||||
|   - ../../base | ||||
|  | ||||
| namespace: homeassistant | ||||
| nameSuffix: -flat | ||||
| labels: | ||||
|   - includeSelectors: true | ||||
|     pairs: | ||||
|       env: flat | ||||
|  | ||||
| patches: | ||||
|   - path: ingress.patch.yaml | ||||
|     target: | ||||
|       kind: IngressRoute | ||||
							
								
								
									
										3
									
								
								apps/homeassistant/overlays/house/ingress.patch.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								apps/homeassistant/overlays/house/ingress.patch.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| - op: replace | ||||
|   path: /spec/routes/0/match | ||||
|   value: Host(`home-house.kluster.moll.re`) | ||||
							
								
								
									
										28
									
								
								apps/homeassistant/overlays/house/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								apps/homeassistant/overlays/house/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
|  | ||||
| resources: | ||||
|   - ../../base | ||||
|   - wireguard-config.sealedsecret.yaml | ||||
|  | ||||
|  | ||||
| namespace: homeassistant | ||||
| nameSuffix: -house | ||||
| labels: | ||||
|   - includeSelectors: true | ||||
|     pairs: | ||||
|       env: house | ||||
|  | ||||
| images: | ||||
|   - name: wireguard | ||||
|     newName: ghcr.io/linuxserver/wireguard | ||||
|     newTag: "1.0.20250521" | ||||
|  | ||||
| patches: | ||||
|   - path: wireguard.deployment.yaml | ||||
|     target: | ||||
|       kind: Deployment | ||||
|       name: homeassistant | ||||
|   - path: ingress.patch.yaml | ||||
|     target: | ||||
|       kind: IngressRoute | ||||
| @@ -0,0 +1,17 @@ | ||||
| --- | ||||
| apiVersion: bitnami.com/v1alpha1 | ||||
| kind: SealedSecret | ||||
| metadata: | ||||
|   creationTimestamp: null | ||||
|   # WARNING - the originial secret was named wireguard-config-house, but we remove the suffix here, anticipating that it will be created by the kustomization overlay | ||||
|   name: wireguard-config | ||||
|   namespace: homeassistant | ||||
| spec: | ||||
|   encryptedData: | ||||
|     wireguard.conf: AgAz726k7X6IsabWUPX8kQ8r19mBq/N+YytlFS1gW2LUiYqc6H/O5/tqma5lLcazuxtsQhebeoitp2SkH7jTU8vRxn2tDWpyzcJr+BW4vKnghw5NhMbkNOzl7mvc7QIJk6rmRyD1umu33v6x8u3St9TVsUOI1zXJyXHxlbLdHVCORhgV79CGLjghpi23KyyFu6LzNrE5rhpB0Q7NzPUmbm5MHPNbtLsmImd/CZ9XjbyXSq0be8BgpUtGDE/NMx65G2+lLIw3EgbNwlirw/XKrM+pUIvEI6CxuNhbEM7KxCYlq2Du6bm7XsKHRzNu9oSfH+P4DaDoDt+M5k5miv4B8TIKXg7piy5mThXSTcVf5YpLJCiTfMDZOriG1ygr9gbJPYY1jumZA+vsZCvBx1o21BlNycWZWKBeYZZh47Hz9FGI/Smn8dOs5exZ34MrQtM4OuEqC/cJY8fdQ+nmGMezL0IKdbtpWgq5UqNH/wWv3F9kItB4KlSD4YtEGaY2z68BJG6t+9igSJCWmVca0EbOzhV0s5rI39ASVXOO50x774EEWUueoyfI+l5vwtQhc96I5Qn3kbFhwov0tHMg/IGBtS/7XdBBtOBx9KbcUHq1GlwWzQdw8WnRB6yyUVCqXyuExRhMPz5orqkTQwiUM2Fjse7xxnaEA0mbi0TVPKV/sFgWixvHqy3VAc1Jj6MEAWFAu+kPVlOFFCckEC5kPhNPFhBMeYX/3IblRjly/EHvrbrW/eFjNYE7bqpSCVhkB8bOXbJqt29V3+ffM1z/RkdSusgqdwid9CXhQw6SKAI/vcAqqxXdzcsbG1wsgP9bJ1Gk/i9ch8zUn7MwcFe6Tla86+xeiDIAmQmA7rhtmWhyyuxXdw+HXAFNhrbxHaUw3LZOExM+RzhWNepjSLnCBqnrtPkzFrHE02JKebWzX+IRZIOsEXJVhKTiSSjoB2v8h956kO+C7bdHz8GbxoJKJ7anrqFG13A//XLy5PvKr50qs/gQptrl9UtR7oj981bSDTVVa8h3OXbGLkZXly/qxsh5DlEjwnw2/2UqS+5yTT4FO/dNVtHryJ2tbc8ZuIHb6C/pQygqpseagthkm5T+Dv0T2xWpXFrvuktGNm58Cwg9bwNMcC6iofcjQP5JeNcat3RwzbJ9xwU4Nm8xLRMMc0ul6xUHRrL3ZjDfWHLuSuTp28HqXZ6xSKLlrRVjwZ6Mp/hhxj58SfVfLVIQxatGkwnIaHEFWE2n3S7m/iQO9tZIWCx5Yfs15atb1Ze8HjKjQ4o3sfaMD8Eokj9aFnXQQxpnOuSI3NLETe79QQ== | ||||
|   template: | ||||
|     metadata: | ||||
|       creationTimestamp: null | ||||
|       name: wireguard-config-house | ||||
|       namespace: homeassistant | ||||
|     type: Opaque | ||||
							
								
								
									
										24
									
								
								apps/homeassistant/overlays/house/wireguard.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								apps/homeassistant/overlays/house/wireguard.deployment.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: homeassistant | ||||
| spec: | ||||
|   template: | ||||
|     spec: | ||||
|       containers: | ||||
|       - name: wireguard-sidecar | ||||
|         image: wireguard | ||||
|         securityContext: | ||||
|           privileged: true | ||||
|  | ||||
|  | ||||
|         volumeMounts: | ||||
|         - name: wireguard-config | ||||
|           mountPath: /config/wg_confs/ | ||||
|  | ||||
|       volumes: | ||||
|       - name: wireguard-config | ||||
|         secret: | ||||
|           secretName: wireguard-config | ||||
|  | ||||
|  | ||||
| @@ -32,8 +32,8 @@ spec: | ||||
|  | ||||
|   resources: | ||||
|     limits: | ||||
|       cpu: 2 | ||||
|       memory: 1024Mi | ||||
|       cpu: '2' | ||||
|       memory: 1Gi | ||||
|     requests: | ||||
|       cpu: 50m | ||||
|       memory: 512Mi | ||||
|   | ||||
| @@ -6,7 +6,7 @@ resources: | ||||
|   - pvc.yaml | ||||
|   - immich.postgres.yaml | ||||
|   - postgres.sealedsecret.yaml | ||||
|   - servicemonitor.yaml | ||||
|   # - servicemonitor.yaml | ||||
|  | ||||
|  | ||||
| namespace: immich | ||||
| @@ -15,20 +15,13 @@ namespace: immich | ||||
| helmCharts: | ||||
|   - name: immich | ||||
|     releaseName: immich | ||||
|     version: 0.9.3 | ||||
|     version: 0.10.1 | ||||
|     valuesFile: values.yaml | ||||
|     repo: https://immich-app.github.io/immich-charts | ||||
|  | ||||
|  | ||||
| images: | ||||
|   - name: ghcr.io/immich-app/immich-machine-learning | ||||
|     newTag: v1.144.1 | ||||
|     newTag: v2.0.1 | ||||
|   - name: ghcr.io/immich-app/immich-server | ||||
|     newTag: v1.144.1 | ||||
|  | ||||
|  | ||||
| patches: | ||||
|   - path: patch-redis-pvc.yaml | ||||
|     target: | ||||
|       kind: StatefulSet | ||||
|       name: immich-redis-master | ||||
|     newTag: v2.0.1 | ||||
|   | ||||
| @@ -1,17 +0,0 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: StatefulSet | ||||
| metadata: | ||||
|   name: immich-redis-master | ||||
| spec: | ||||
|   volumeClaimTemplates: | ||||
|   - apiVersion: v1 | ||||
|     kind: PersistentVolumeClaim | ||||
|     metadata: | ||||
|       name: redis-data | ||||
|     spec: | ||||
|       storageClassName: nfs-client | ||||
|       accessModes: | ||||
|         - ReadWriteMany | ||||
|       resources: | ||||
|         requests: | ||||
|           storage: 2Gi | ||||
| @@ -4,26 +4,30 @@ | ||||
|  | ||||
| # These entries are shared between all the Immich components | ||||
|  | ||||
| env: | ||||
|   REDIS_HOSTNAME: '{{ printf "%s-redis-master" .Release.Name }}' | ||||
|   DB_HOSTNAME: "immich-postgresql-rw" | ||||
|   DB_USERNAME: | ||||
|     valueFrom: | ||||
|       secretKeyRef: | ||||
|         name: postgres-password | ||||
|         key: username | ||||
|   DB_DATABASE_NAME: | ||||
|     valueFrom: | ||||
|       secretKeyRef: | ||||
|         name: postgres-password | ||||
|         key: database | ||||
|   DB_PASSWORD: | ||||
|     valueFrom: | ||||
|       secretKeyRef: | ||||
|         name: postgres-password | ||||
|         key: password | ||||
|   IMMICH_MACHINE_LEARNING_URL: '{{ printf "http://%s-machine-learning:3003" .Release.Name }}' | ||||
|   IMMICH_METRICS: true | ||||
|  | ||||
| controllers: | ||||
|   main: | ||||
|     containers: | ||||
|       main: | ||||
|         env: | ||||
|           # some non-default vars | ||||
|           DB_HOSTNAME: "immich-postgresql-rw" | ||||
|           DB_USERNAME: | ||||
|             valueFrom: | ||||
|               secretKeyRef: | ||||
|                 name: postgres-password | ||||
|                 key: username | ||||
|           DB_DATABASE_NAME: | ||||
|             valueFrom: | ||||
|               secretKeyRef: | ||||
|                 name: postgres-password | ||||
|                 key: database | ||||
|           DB_PASSWORD: | ||||
|             valueFrom: | ||||
|               secretKeyRef: | ||||
|                 name: postgres-password | ||||
|                 key: password | ||||
|           IMMICH_METRICS: true | ||||
|  | ||||
| immich: | ||||
|   metrics: | ||||
| @@ -37,13 +41,15 @@ immich: | ||||
|       existingClaim: data | ||||
|  | ||||
| # Dependencies | ||||
| redis: | ||||
| valkey: | ||||
|   enabled: true | ||||
|   architecture: standalone | ||||
|   auth: | ||||
|     enabled: false | ||||
|  | ||||
| # Immich components | ||||
|   persistence: | ||||
|     data: | ||||
|       enabled: true | ||||
|       size: 1Gi | ||||
|       # Optional: Set this to persistentVolumeClaim to keep job queues persistent | ||||
|       type: emptyDir | ||||
|       accessMode: ReadWriteOnce | ||||
|  | ||||
| server: | ||||
|   enabled: true | ||||
| @@ -56,7 +62,7 @@ machine-learning: | ||||
|   persistence: | ||||
|     cache: | ||||
|       enabled: true | ||||
|       size: 200Gi | ||||
|       size: 10Gi | ||||
|       # Optional: Set this to pvc to avoid downloading the ML models every start. | ||||
|       type: emptyDir | ||||
|       accessMode: ReadWriteMany | ||||
|   | ||||
| @@ -21,7 +21,7 @@ helmCharts: | ||||
|   - name: redis | ||||
|     releaseName: redis | ||||
|     repo: https://charts.bitnami.com/bitnami | ||||
|     version: 23.2.1 | ||||
|     version: 23.2.2 | ||||
|     valuesInline: | ||||
|       auth: | ||||
|         enabled: false | ||||
|   | ||||
| @@ -7,6 +7,7 @@ pkgs.mkShell { | ||||
|     kubeseal | ||||
|     yq | ||||
|     jq | ||||
|     kubernetes-helm-wrapped | ||||
|   ]; | ||||
|  | ||||
|   env = { | ||||
|   | ||||
| @@ -27,6 +27,6 @@ images: | ||||
| helmCharts: | ||||
|   - name: authelia | ||||
|     releaseName: authelia | ||||
|     version: 0.10.46 | ||||
|     version: 0.10.47 | ||||
|     repo: https://charts.authelia.com | ||||
|     valuesFile: authelia.values.yaml | ||||
|   | ||||
| @@ -11,4 +11,4 @@ resources: | ||||
| images: | ||||
|   - name: dns | ||||
|     newName: git.kluster.moll.re/remoll/dns | ||||
|     newTag: 0.0.2-build.68 | ||||
|     newTag: 0.0.2-build.100 | ||||
|   | ||||
| @@ -23,6 +23,6 @@ helmCharts: | ||||
|   - name: gitea | ||||
|     namespace: gitea # needs to be set explicitly for svc to be referenced correctly | ||||
|     releaseName: gitea | ||||
|     version: 12.3.0 | ||||
|     version: 12.4.0 | ||||
|     valuesFile: gitea.values.yaml | ||||
|     repo: https://dl.gitea.io/charts/ | ||||
|   | ||||
| @@ -24,7 +24,7 @@ helmCharts: | ||||
|   - name: loki | ||||
|     releaseName: loki | ||||
|     repo: https://grafana.github.io/helm-charts | ||||
|     version: 6.42.0 | ||||
|     version: 6.44.0 | ||||
|     valuesFile: loki.values.yaml | ||||
|   - name: prometheus-node-exporter | ||||
|     releaseName: prometheus-node-exporter | ||||
|   | ||||
| @@ -13,6 +13,6 @@ namespace: traefik-system | ||||
| helmCharts: | ||||
|   - name: traefik | ||||
|     releaseName: traefik | ||||
|     version: 37.1.2 | ||||
|     version: 37.2.0 | ||||
|     valuesFile: values.yaml | ||||
|     repo: https://traefik.github.io/charts | ||||
|   | ||||
| @@ -1,18 +1,20 @@ | ||||
| apiVersion: argoproj.io/v1alpha1 | ||||
| kind: Application | ||||
| metadata: | ||||
|   name: homeassistant-application | ||||
|   name: homeassistant-flat-application | ||||
|   namespace: argocd | ||||
| spec: | ||||
|   project: apps | ||||
|   source: | ||||
|     repoURL: ssh://git@git.kluster.moll.re:2222/remoll/k3s-infra.git | ||||
|     targetRevision: main | ||||
|     path: apps/homeassistant | ||||
|     path: apps/homeassistant/overlays/flat | ||||
|   destination: | ||||
|     server: https://kubernetes.default.svc | ||||
|     namespace: homeassistant | ||||
|   syncPolicy: | ||||
|     syncOptions: | ||||
|       - CreateNamespace=true | ||||
|     automated: | ||||
|       prune: true | ||||
|       selfHeal: true | ||||
|       selfHeal: true | ||||
|   | ||||
							
								
								
									
										23
									
								
								kluster-deployments/homeassistant/house.application.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								kluster-deployments/homeassistant/house.application.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| apiVersion: argoproj.io/v1alpha1 | ||||
| kind: Application | ||||
| metadata: | ||||
|   name: homeassistant-house-application | ||||
|   namespace: argocd | ||||
| spec: | ||||
|   project: apps | ||||
|   source: | ||||
|     repoURL: ssh://git@git.kluster.moll.re:2222/remoll/k3s-infra.git | ||||
|     targetRevision: main | ||||
|     path: apps/homeassistant/overlays/house | ||||
|   destination: | ||||
|     server: https://kubernetes.default.svc | ||||
|     namespace: homeassistant | ||||
|   syncPolicy: | ||||
|     managedNamespaceMetadata: | ||||
|       labels: | ||||
|         pod-security.kubernetes.io/enforce: privileged | ||||
|     syncOptions: | ||||
|       - CreateNamespace=true | ||||
|     automated: | ||||
|       prune: true | ||||
|       selfHeal: true | ||||
| @@ -1,4 +1,5 @@ | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
| resources: | ||||
| - application.yaml | ||||
| - application.yaml | ||||
| - house.application.yaml | ||||
|   | ||||
		Reference in New Issue
	
	Block a user