324 lines
9.8 KiB
YAML
324 lines
9.8 KiB
YAML
# yaml-language-server: $schema=./values.schema.json
|
|
image:
|
|
repository: ghcr.io/immich-app/immich-server
|
|
tag: v2.7.5@sha256:c15bff75068effb03f4355997d03dc7e0fc58720c2b54ad6f7f10d1bc57efaa5
|
|
pullPolicy: IfNotPresent
|
|
|
|
mlImage:
|
|
repository: ghcr.io/immich-app/immich-machine-learning
|
|
tag: v2.7.5@sha256:a2501141440f10516d329fdfba2c68082e19eb9ba6016c061ac80d23beadf7f3
|
|
pullPolicy: IfNotPresent
|
|
|
|
mlCudaImage:
|
|
repository: ghcr.io/immich-app/immich-machine-learning
|
|
tag: v2.7.5-cuda@sha256:304142175e345f0155d7642f637cfdceae60e89075ff03938cb2886d52c65a62
|
|
pullPolicy: IfNotPresent
|
|
|
|
mlOpenvinoImage:
|
|
repository: ghcr.io/immich-app/immich-machine-learning
|
|
tag: v2.7.5-openvino@sha256:71cd5a681823c4b818f4b24b3f05816eccc3d085559e7615f695bde77e64f1f2
|
|
pullPolicy: IfNotPresent
|
|
|
|
mlRocmImage:
|
|
repository: ghcr.io/immich-app/immich-machine-learning
|
|
tag: v2.7.5-rocm@sha256:baa195b5cab655eba28ba771816ff443853c0dd41892d6767257157211114993
|
|
pullPolicy: IfNotPresent
|
|
|
|
securityContext:
|
|
container:
|
|
readOnlyRootFilesystem: false
|
|
runAsNonRoot: false
|
|
runAsUser: 0
|
|
runAsGroup: 0
|
|
|
|
immich:
|
|
enable_ml: true
|
|
mlImageType: mlImage
|
|
|
|
workload:
|
|
main:
|
|
podSpec:
|
|
containers:
|
|
main:
|
|
imageSelector: image
|
|
resources:
|
|
excludeExtra: true
|
|
securityContext:
|
|
capabilities:
|
|
disableS6Caps: true
|
|
env:
|
|
IMMICH_MACHINE_LEARNING_ENABLED: "{{ .Values.immich.enable_ml }}"
|
|
IMMICH_MACHINE_LEARNING_URL: >-
|
|
{{- if .Values.immich.enable_ml -}}
|
|
{{- printf "http://%s-machinelearning:%v" (include "tc.v1.common.lib.chart.names.fullname" .) .Values.service.machinelearning.ports.machinelearning.port -}}
|
|
{{- else -}}
|
|
false
|
|
{{- end -}}
|
|
IMMICH_PORT: "{{ .Values.service.main.ports.main.port }}"
|
|
IMMICH_WORKERS_INCLUDE: api
|
|
NODE_ENV: production
|
|
DB_USERNAME: "{{ .Values.cnpg.main.user }}"
|
|
DB_DATABASE_NAME: "{{ .Values.cnpg.main.database }}"
|
|
DB_HOSTNAME: "{{ .Values.cnpg.main.creds.host }}"
|
|
DB_PASSWORD: "{{ .Values.cnpg.main.creds.password }}"
|
|
DB_PORT: "5432"
|
|
REDIS_HOSTNAME: '{{ .Values.redis.creds.plainhost | trimAll "\"" }}'
|
|
REDIS_PASSWORD: '{{ .Values.redis.creds.redisPassword | trimAll "\"" }}'
|
|
REDIS_PORT: "6379"
|
|
REDIS_DBINDEX: "0"
|
|
probes:
|
|
readiness:
|
|
enabled: true
|
|
type: http
|
|
path: /api/server/ping
|
|
port: "{{ .Values.service.main.ports.main.port }}"
|
|
liveness:
|
|
enabled: true
|
|
type: http
|
|
path: /api/server/ping
|
|
port: "{{ .Values.service.main.ports.main.port }}"
|
|
startup:
|
|
enabled: true
|
|
type: http
|
|
path: /api/server/ping
|
|
port: "{{ .Values.service.main.ports.main.port }}"
|
|
machinelearning:
|
|
enabled: "{{ .Values.immich.enable_ml }}"
|
|
type: Deployment
|
|
podSpec:
|
|
initContainers:
|
|
wait-server:
|
|
enabled: true
|
|
type: init
|
|
imageSelector: ubuntuImage
|
|
resources:
|
|
excludeExtra: true
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
{{- tpl .Values.waitServerScript $ -}}
|
|
containers:
|
|
machinelearning:
|
|
enabled: true
|
|
primary: true
|
|
imageSelector: "{{ .Values.immich.mlImageType }}"
|
|
resources:
|
|
excludeExtra: true
|
|
securityContext:
|
|
capabilities:
|
|
disableS6Caps: true
|
|
env:
|
|
NODE_ENV: production
|
|
IMMICH_PORT: "{{ .Values.service.machinelearning.ports.machinelearning.port }}"
|
|
MACHINE_LEARNING_CACHE_FOLDER: "{{ .Values.persistence.mlcache.targetSelector.machinelearning.machinelearning.mountPath }}"
|
|
TRANSFORMERS_CACHE: "{{ .Values.persistence.mlcache.targetSelector.machinelearning.machinelearning.mountPath }}"
|
|
probes:
|
|
readiness:
|
|
enabled: true
|
|
type: http
|
|
path: /ping
|
|
port: "{{ .Values.service.machinelearning.ports.machinelearning.port }}"
|
|
liveness:
|
|
enabled: true
|
|
type: http
|
|
path: /ping
|
|
port: "{{ .Values.service.machinelearning.ports.machinelearning.port }}"
|
|
startup:
|
|
enabled: true
|
|
type: http
|
|
path: /ping
|
|
port: "{{ .Values.service.machinelearning.ports.machinelearning.port }}"
|
|
microservices:
|
|
enabled: true
|
|
type: Deployment
|
|
podSpec:
|
|
initContainers:
|
|
wait-server:
|
|
enabled: true
|
|
type: init
|
|
imageSelector: ubuntuImage
|
|
resources:
|
|
excludeExtra: true
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |-
|
|
{{ tpl .Values.waitServerScript $ | trim }}
|
|
containers:
|
|
microservices:
|
|
enabled: true
|
|
primary: true
|
|
imageSelector: image
|
|
securityContext:
|
|
capabilities:
|
|
disableS6Caps: true
|
|
env:
|
|
IMMICH_MACHINE_LEARNING_ENABLED: "{{ .Values.immich.enable_ml }}"
|
|
IMMICH_MACHINE_LEARNING_URL: >-
|
|
{{- if .Values.immich.enable_ml -}}
|
|
{{- printf "http://%s-machinelearning:%v" (include "tc.v1.common.lib.chart.names.fullname" .) .Values.service.machinelearning.ports.machinelearning.port -}}
|
|
{{- else -}}
|
|
false
|
|
{{- end -}}
|
|
NODE_ENV: production
|
|
IMMICH_PORT: "{{ .Values.service.microservices.ports.microservices.port }}"
|
|
REVERSE_GEOCODING_DUMP_DIRECTORY: "{{ .Values.persistence.microcache.targetSelector.microservices.microservices.mountPath }}"
|
|
IMMICH_WORKERS_EXCLUDE: api
|
|
DB_USERNAME: "{{ .Values.cnpg.main.user }}"
|
|
DB_DATABASE_NAME: "{{ .Values.cnpg.main.database }}"
|
|
DB_HOSTNAME: "{{ .Values.cnpg.main.creds.host }}"
|
|
DB_PASSWORD: "{{ .Values.cnpg.main.creds.password }}"
|
|
DB_PORT: "5432"
|
|
REDIS_HOSTNAME: '{{ .Values.redis.creds.plainhost | trimAll "\"" }}'
|
|
REDIS_PASSWORD: '{{ .Values.redis.creds.redisPassword | trimAll "\"" }}'
|
|
REDIS_PORT: "6379"
|
|
REDIS_DBINDEX: "0"
|
|
probes:
|
|
readiness:
|
|
enabled: true
|
|
type: exec
|
|
command: immich-healthcheck
|
|
liveness:
|
|
enabled: true
|
|
type: exec
|
|
command: immich-healthcheck
|
|
startup:
|
|
enabled: true
|
|
type: exec
|
|
command: immich-healthcheck
|
|
service:
|
|
main:
|
|
# Main service targets the server
|
|
targetSelector: main
|
|
ports:
|
|
main:
|
|
port: 10323
|
|
protocol: http
|
|
targetSelector: main
|
|
microservices:
|
|
enabled: true
|
|
type: ClusterIP
|
|
targetSelector: microservices
|
|
ports:
|
|
microservices:
|
|
enabled: true
|
|
primary: true
|
|
port: 10004
|
|
protocol: http
|
|
targetSelector: microservices
|
|
machinelearning:
|
|
enabled: "{{ .Values.immich.enable_ml }}"
|
|
type: ClusterIP
|
|
targetSelector: machinelearning
|
|
ports:
|
|
machinelearning:
|
|
enabled: true
|
|
primary: true
|
|
port: 10003
|
|
protocol: http
|
|
targetSelector: machinelearning
|
|
|
|
persistence:
|
|
mlcache:
|
|
enabled: "{{ .Values.immich.enable_ml }}"
|
|
type: emptyDir
|
|
targetSelector:
|
|
machinelearning:
|
|
machinelearning:
|
|
mountPath: /mlcache
|
|
microcache:
|
|
enabled: true
|
|
type: emptyDir
|
|
targetSelector:
|
|
microservices:
|
|
microservices:
|
|
mountPath: /microcache
|
|
library:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/library
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
uploads:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/upload
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
backups:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/backups
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
thumbs:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/thumbs
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
profile:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/profile
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
video:
|
|
enabled: true
|
|
mountPath: /usr/src/app/upload/encoded-video
|
|
targetSelector:
|
|
# Main pod/container is server
|
|
main:
|
|
main: {}
|
|
microservices:
|
|
microservices: {}
|
|
|
|
cnpg:
|
|
main:
|
|
enabled: true
|
|
user: immich
|
|
database: immich
|
|
type: vectorchord
|
|
cluster:
|
|
initdb:
|
|
postInitApplicationSQL:
|
|
- ALTER USER immich WITH SUPERUSER;
|
|
- CREATE EXTENSION IF NOT EXISTS cube;
|
|
- CREATE EXTENSION IF NOT EXISTS earthdistance;
|
|
|
|
redis:
|
|
enabled: true
|
|
redisUsername: default
|
|
|
|
ingress:
|
|
main:
|
|
integrations:
|
|
homepage:
|
|
widget:
|
|
version: 2
|
|
|
|
waitServerScript: |
|
|
{{- $url := printf "http://%v:%v/api/server/ping" (include "tc.v1.common.lib.chart.names.fullname" .) .Values.service.main.ports.main.port -}}
|
|
echo "Pinging [{{ $url }}] until it is ready..."
|
|
until wget --spider --quiet --timeout=3 --tries 1 "{{ $url }}"; do
|
|
echo "Waiting for [{{ $url }}] to be ready..."
|
|
sleep 2
|
|
done
|
|
echo "URL [{{ $url }}] is ready!"
|