about summary refs log tree commit diff
path: root/bundles/immich/files/kube.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/immich/files/kube.yaml')
-rw-r--r--bundles/immich/files/kube.yaml104
1 files changed, 104 insertions, 0 deletions
diff --git a/bundles/immich/files/kube.yaml b/bundles/immich/files/kube.yaml
new file mode 100644
index 0000000..523c073
--- /dev/null
+++ b/bundles/immich/files/kube.yaml
@@ -0,0 +1,104 @@
+apiVersion: v1
+kind: Pod
+metadata:
+  name: immich
+  labels:
+    traefik.enable: true
+    traefik.http.routers.immich.tls: true
+    traefik.http.routers.immich.tls.certresolver: le
+    traefik.http.routers.immich.entrypoints: http,https
+    traefik.http.routers.immich.rule: Host(`photos.gzr.im`)
+    traefik.http.routers.immich.service: immich
+    traefik.http.services.immich.loadbalancer.server.port: 2283
+
+    # TODO: https://immich.app/docs/features/monitoring
+    #       https://github.com/immich-app/immich/blob/v1.121.0/docker/prometheus.yml
+    #
+    # metrics
+    # traefik.http.routers.immich-metrics.entrypoints: metrics
+    # traefik.http.routers.immich-metrics.rule: Path(`/metrics/immich`)
+    # traefik.http.routers.immich-metrics.middlewares: replacepath-metrics
+spec:
+  restartPolicy: Always
+  dnsPolicy: Default
+  containers:
+    - name: immich
+      image: ghcr.io/immich-app/immich-server:v1.140.1
+      envFrom:
+        - secretRef:
+            name: immich
+      env:
+        - name: IMMICH_CONFIG_FILE
+          value: /immich.yaml
+      ports:
+        - containerPort: 2283
+          protocol: TCP
+          # NOTE: required to make tv app work
+          hostPort: 2283
+      volumeMounts:
+        - name: config
+          mountPath: /immich.yaml
+        - name: data
+          mountPath: /usr/src/app/upload
+        - name: media
+          mountPath: /media
+          readOnly: true
+      # resources:
+      #   limits:
+      #     cpu: 300m
+      #     memory: 512Mi
+    - name: redis
+      image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
+      livenessProbe:
+        exec:
+          command: ["sh", "-c", "redis-cli ping || exit 1"]
+    - name: postgres
+      image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
+      envFrom:
+        - secretRef:
+            name: immich
+      env:
+        - name: POSTGRES_INITDB_ARGS
+          value: --data-checksums
+      volumeMounts:
+        - name: pg-data
+          mountPath: /var/lib/postgresql/data
+      livenessProbe:
+        exec:
+          command:
+            - /bin/sh
+            - -c
+            - pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1
+            # ; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
+      command:
+        - docker-entrypoint.sh
+        - -c
+        - shared_preload_libraries=vectors.so
+        - -c
+        - search_path="$$user", public, vectors
+        - -c
+        - logging_collector=on
+        - -c
+        - max_wal_size=2GB
+        - -c
+        - shared_buffers=512MB
+        - -c
+        - wal_compression=on
+
+  volumes:
+    - name: config
+      hostPath:
+        path: /var/lib/immich/immich.yaml
+        type: File
+    - name: data
+      hostPath:
+        path: /var/lib/immich/app
+        type: DirectoryOrCreate
+    - name: pg-data
+      hostPath:
+        path: /var/lib/immich/db
+        type: DirectoryOrCreate
+    - name: media
+      hostPath:
+        path: /media/hayasui/media
+        type: Directory