From d4257e08411d42c0bcd94071184ac04cf775875b Mon Sep 17 00:00:00 2001 From: Ruben Hensen Date: Wed, 21 Jan 2026 01:14:12 +0100 Subject: [PATCH] Update chart and add valkey, config new cnpg --- immich/helm-immich.yaml | 161 +++++++++++++++------------------------- 1 file changed, 60 insertions(+), 101 deletions(-) diff --git a/immich/helm-immich.yaml b/immich/helm-immich.yaml index 2672630..9bb7c9c 100644 --- a/immich/helm-immich.yaml +++ b/immich/helm-immich.yaml @@ -8,7 +8,7 @@ metadata: spec: syncPolicy: syncOptions: - - CreateNamespace=true + - CreateNamespace=true automated: prune: true selfHeal: true @@ -16,149 +16,108 @@ spec: sources: - chart: immich repoURL: https://immich-app.github.io/immich-charts - targetRevision: 0.8.5 # Chart version! https://argo-cd.readthedocs.io/en/latest/user-guide/application-specification/ + targetRevision: 0.10.3 helm: values: | - env: - REDIS_HOSTNAME: '{{ printf "%s-redis-master" .Release.Name }}' - DB_HOSTNAME: "{{ .Release.Name }}-postgresql" - DB_USERNAME: "{{ .Values.postgresql.global.postgresql.auth.username }}" - DB_DATABASE_NAME: "{{ .Values.postgresql.global.postgresql.auth.database }}" - # -- You should provide your own secret outside of this helm-chart and use `postgresql.global.postgresql.auth.existingSecret` to provide credentials to the postgresql instance - DB_PASSWORD: "{{ .Values.postgresql.global.postgresql.auth.password }}" - IMMICH_MACHINE_LEARNING_URL: '{{ printf "http://%s-machine-learning:3003" .Release.Name }}' - - image: - tag: v1.125.7 + controllers: + main: + containers: + main: + image: + tag: v2.4.1 + env: + # External PostgreSQL connection + DB_HOSTNAME: "immich-postgres-rw" + DB_PORT: "5432" + DB_USERNAME: "immich" + DB_DATABASE_NAME: "immich" + # Reference the CNPG secret for password + DB_PASSWORD: + valueFrom: + secretKeyRef: + name: immich-postgres-app + key: password + # Valkey (Redis replacement) + REDIS_HOSTNAME: '{{ printf "%s-valkey" .Release.Name }}' + IMMICH_MACHINE_LEARNING_URL: '{{ printf "http://%s-machine-learning:3003" .Release.Name }}' immich: metrics: - # Enabling this will create the service monitors needed to monitor immich with the prometheus operator enabled: false persistence: - # Main data store for all photos shared between different components. library: - # Automatically creating the library volume is not supported by this chart - # You have to specify an existing PVC to use existingClaim: immich-claim - - # configuration is immich-config.json converted to yaml - # ref: https://immich.app/docs/install/config-file/ - # - configuration: {} - # trash: - # enabled: false - # days: 30 - # storageTemplate: - # enabled: true - # template: "{{y}}/{{y}}-{{MM}}-{{dd}}/{{filename}}" - # Dependencies - - postgresql: + # Enable Valkey (Redis replacement) + valkey: enabled: true - image: - repository: tensorchord/pgvecto-rs - tag: pg14-v0.2.0 - global: - postgresql: - auth: - username: immich - database: immich - password: immich - primary: - containerSecurityContext: - readOnlyRootFilesystem: false - persistence: + persistence: + data: + enabled: true + size: 1Gi storageClass: longhorn - initdb: - scripts: - create-extensions.sql: | - CREATE EXTENSION cube; - CREATE EXTENSION earthdistance; - CREATE EXTENSION vectors; - resources: - limits: {} - requests: - cpu: 200m - memory: 256Mi - - redis: - enabled: true - image: - repository: bitnamilegacy/redis - architecture: standalone - auth: - enabled: false - master: - persistence: - storageClass: longhorn - - # Immich components + type: persistentVolumeClaim server: enabled: true - image: - repository: ghcr.io/immich-app/immich-server - pullPolicy: IfNotPresent - probes: - startup: - enabled: true - spec: - initialDelaySeconds: 0 - timeoutSeconds: 1 - periodSeconds: 5 - failureThreshold: 1000 + controllers: + main: + containers: + main: + image: + repository: ghcr.io/immich-app/immich-server + pullPolicy: IfNotPresent + probes: + startup: + enabled: true + spec: + initialDelaySeconds: 0 + timeoutSeconds: 1 + periodSeconds: 5 + failureThreshold: 1000 ingress: main: enabled: true - ingressClassName: nginx + className: nginx annotations: - # proxy-body-size is set to 0 to remove the body limit on file uploads nginx.ingress.kubernetes.io/proxy-body-size: "0" cert-manager.io/cluster-issuer: prod-cluster-issuer - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" hosts: - # - host: immich.hensen.io - # paths: - # - path: "/" - host: mbg.hensen.io paths: - path: "/" service: - name: sol-auth-svc - port: 8002 + identifier: main - host: foto.scoutingmbg.nl paths: - path: "/" service: - name: sol-auth-svc - port: 8002 - + identifier: main tls: - - secretName: letsencrypt-prod + - secretName: letsencrypt-prod hosts: - # - immich.hensen.io - mbg.hensen.io - foto.scoutingmbg.nl machine-learning: enabled: true - image: - repository: ghcr.io/immich-app/immich-machine-learning - pullPolicy: IfNotPresent - env: - TRANSFORMERS_CACHE: /cache + controllers: + main: + containers: + main: + image: + repository: ghcr.io/immich-app/immich-machine-learning + pullPolicy: IfNotPresent + env: + TRANSFORMERS_CACHE: /cache + HF_XET_CACHE: /cache/huggingface-xet + MPLCONFIGDIR: /cache/matplotlib-config persistence: cache: enabled: true size: 10Gi - # Optional: Set this to pvc to avoid downloading the ML models every start. type: emptyDir - accessMode: ReadWriteMany - # storageClass: your-class - destination: server: https://kubernetes.default.svc namespace: immich