chore(immich): cleanup immich (#5470)

* chore(immich): cleanup immich

* add another env

* chmod again lol

* start differenly

* another migration

* Update charts/stable/immich/templates/_proxy.tpl

Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>

* probes

Signed-off-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com>
This commit is contained in:
Stavros Kois
2022-12-17 13:16:28 +02:00
committed by GitHub
parent 9dc2f31fd2
commit 5796e0003f
7 changed files with 91 additions and 193 deletions
+12 -105
View File
@@ -1,12 +1,10 @@
{{/* Define the configmap */}} {{/* Define the configmap */}}
{{- define "immich.config" -}} {{- define "immich.config" -}}
{{- $serverConfigName := printf "%s-server-config" (include "tc.common.names.fullname" .) }} {{- $serverConfigName := printf "%s-server-config" (include "tc.common.names.fullname" .) -}}
{{- $commonConfigName := printf "%s-common-config" (include "tc.common.names.fullname" .) }} {{- $commonConfigName := printf "%s-common-config" (include "tc.common.names.fullname" .) -}}
{{- $proxyConfigName := printf "%s-proxy-config" (include "tc.common.names.fullname" .) }} {{- $proxyConfigName := printf "%s-proxy-config" (include "tc.common.names.fullname" .) }}
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
@@ -27,7 +25,6 @@ data:
ENABLE_MAPBOX: {{ .Values.immich.mapbox_enable | quote }} ENABLE_MAPBOX: {{ .Values.immich.mapbox_enable | quote }}
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
@@ -35,110 +32,20 @@ metadata:
labels: labels:
{{- include "tc.common.labels" . | nindent 4 }} {{- include "tc.common.labels" . | nindent 4 }}
data: data:
IMMICH_WEB_URL: http://localhost:3000
IMMICH_SERVER_URL: http://localhost:3001
IMMICH_MACHINE_LEARNING_URL: http://localhost:3003
{{/*
It's unclear where this URL is being used, but poking in their code, seems to be used internally?
It's set to the value of IMMICH_SERVER_URL on their compose. If something doesn't work remotely,
This is the place to start looking
https://github.com/immich-app/immich/blob/b5d75e20167b92de12cc50a816da214779cb0807/web/src/api/api.ts#L55
*/}}
PUBLIC_IMMICH_SERVER_URL: http://localhost:3001
NODE_ENV: production NODE_ENV: production
{{/* User Defined */}} {{/* User Defined */}}
{{- with .Values.immich.public_login_page_message }} {{- with .Values.immich.public_login_page_message }}
PUBLIC_LOGIN_PAGE_MESSAGE: {{ . }} PUBLIC_LOGIN_PAGE_MESSAGE: {{ . }}
{{- end }} {{- end }}
LOG_LEVEL: {{ .Values.immich.log_level }} LOG_LEVEL: {{ .Values.immich.log_level }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $proxyConfigName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
nginx.conf: |
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /tmp/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
# events {
# worker_connections 1000;
# }
server {
gzip on;
gzip_min_length 1000;
gunzip on;
client_max_body_size 50000M;
listen {{ .Values.service.main.ports.main.port }};
access_log off;
location /api {
# Compression
gzip_static on;
gzip_min_length 1000;
gzip_comp_level 2;
proxy_buffering off;
proxy_buffer_size 16k;
proxy_busy_buffers_size 24k;
proxy_buffers 64 4k;
proxy_force_ranges on;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
rewrite /api/(.*) /$1 break;
# Server Container
proxy_pass http://immich-server:3001;
}
location / {
# Compression
gzip_static on;
gzip_min_length 1000;
gzip_comp_level 2;
proxy_buffering off;
proxy_buffer_size 16k;
proxy_busy_buffers_size 24k;
proxy_buffers 64 4k;
proxy_force_ranges on;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# Web Container
proxy_pass http://immich-web:3000;
}
}
}
{{- end -}} {{- end -}}
@@ -9,8 +9,7 @@ securityContext:
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
command: command:
- /bin/sh - /bin/sh
- -c - ./start-microservices.sh
- chmod +x ./start-microservices.sh && ./start-microservices.sh
volumeMounts: volumeMounts:
- name: uploads - name: uploads
mountPath: {{ .Values.persistence.uploads.mountPath }} mountPath: {{ .Values.persistence.uploads.mountPath }}
@@ -21,29 +20,37 @@ envFrom:
name: '{{ include "tc.common.names.fullname" . }}-common-config' name: '{{ include "tc.common.names.fullname" . }}-common-config'
- configMapRef: - configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-server-config' name: '{{ include "tc.common.names.fullname" . }}-server-config'
#TODO: Add probes, probably checking if process is running? readinessProbe:
# readinessProbe: exec:
# httpGet: command:
# path: / - /bin/sh
# port: {{ .Values.service.main.ports.main.port }} - -c
# initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} - |
# timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} ps -a | grep -v grep | grep -q microservices || exit 1
# periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
# failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
# livenessProbe: periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
# httpGet: failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
# path: / livenessProbe:
# port: {{ .Values.service.main.ports.main.port }} exec:
# initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} command:
# timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} - /bin/sh
# periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} - -c
# failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} - |
# startupProbe: ps -a | grep -v grep | grep -q microservices || exit 1
# httpGet: initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
# path: / timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
# port: {{ .Values.service.main.ports.main.port }} periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
# initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
# timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} startupProbe:
# periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} exec:
# failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} command:
- /bin/sh
- -c
- |
ps -a | grep -v grep | grep -q microservices || exit 1
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}} {{- end -}}
+34 -27
View File
@@ -13,8 +13,7 @@ securityContext:
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
command: command:
- /bin/sh - /bin/sh
- -c - ./entrypoint.sh
- chmod +x ./entrypoint.sh && ./entrypoint.sh
volumeMounts: volumeMounts:
- name: uploads - name: uploads
mountPath: {{ .Values.persistence.uploads.mountPath }} mountPath: {{ .Values.persistence.uploads.mountPath }}
@@ -25,29 +24,37 @@ envFrom:
name: '{{ include "tc.common.names.fullname" . }}-server-config' name: '{{ include "tc.common.names.fullname" . }}-server-config'
- secretRef: - secretRef:
name: '{{ include "tc.common.names.fullname" . }}-immich-secret' name: '{{ include "tc.common.names.fullname" . }}-immich-secret'
#TODO: Add probes, probably checking if process is running? readinessProbe:
# readinessProbe: exec:
# httpGet: command:
# path: / - /bin/sh
# port: {{ .Values.service.main.ports.main.port }} - -c
# initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} - |
# timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} grep -q entrypoint /proc/1/cmdline || exit 1
# periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
# failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
# livenessProbe: periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
# httpGet: failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
# path: / livenessProbe:
# port: {{ .Values.service.main.ports.main.port }} exec:
# initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} command:
# timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} - /bin/sh
# periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} - -c
# failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} - |
# startupProbe: grep -q entrypoint /proc/1/cmdline || exit 1
# httpGet: initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
# path: / timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
# port: {{ .Values.service.main.ports.main.port }} periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
# initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
# timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} startupProbe:
# periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} exec:
# failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} command:
- /bin/sh
- -c
- |
grep -q entrypoint /proc/1/cmdline || exit 1
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}
{{- end -}} {{- end -}}
+7 -8
View File
@@ -3,6 +3,9 @@
{{- if hasKey .Values "imageProxy" -}} {{/* For smooth upgrade, Remove later */}} {{- if hasKey .Values "imageProxy" -}} {{/* For smooth upgrade, Remove later */}}
{{- $img := .Values.imageProxy -}} {{- $img := .Values.imageProxy -}}
{{- $_ := set .Values "proxyImage" (dict "repository" $img.repository "tag" $img.tag "pullPolicy" $img.pullPolicy) -}} {{- $_ := set .Values "proxyImage" (dict "repository" $img.repository "tag" $img.tag "pullPolicy" $img.pullPolicy) -}}
{{- end -}}
{{- if not .Values.service.main.ports.main.targetPort -}} {{/* For smooth upgrade, Remove later */}}
{{- $_ := set .Values.service.main.ports.main "targetPort" 8080 -}}
{{- end }} {{- end }}
image: {{ .Values.proxyImage.repository }}:{{ .Values.proxyImage.tag }} image: {{ .Values.proxyImage.repository }}:{{ .Values.proxyImage.tag }}
imagePullPolicy: {{ .Values.proxyImage.pullPolicy }} imagePullPolicy: {{ .Values.proxyImage.pullPolicy }}
@@ -14,17 +17,13 @@ securityContext:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-common-config' name: '{{ include "tc.common.names.fullname" . }}-common-config'
volumeMounts:
- name: proxy-conf
mountPath: /etc/nginx
readOnly: true
ports: ports:
- containerPort: {{ .Values.service.main.ports.main.port }} - containerPort: {{ .Values.service.main.ports.main.targetPort }}
name: main name: main
readinessProbe: readinessProbe:
httpGet: httpGet:
path: /api/server-info/ping path: /api/server-info/ping
port: {{ .Values.service.main.ports.main.port }} port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
@@ -32,7 +31,7 @@ readinessProbe:
livenessProbe: livenessProbe:
httpGet: httpGet:
path: /api/server-info/ping path: /api/server-info/ping
port: {{ .Values.service.main.ports.main.port }} port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
@@ -40,7 +39,7 @@ livenessProbe:
startupProbe: startupProbe:
httpGet: httpGet:
path: /api/server-info/ping path: /api/server-info/ping
port: {{ .Values.service.main.ports.main.port }} port: {{ .Values.service.main.ports.main.targetPort }}
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
@@ -2,9 +2,7 @@
{{- define "immich.secret" -}} {{- define "immich.secret" -}}
{{- $secretName := printf "%s-immich-secret" (include "tc.common.names.fullname" .) }} {{- $secretName := printf "%s-immich-secret" (include "tc.common.names.fullname" .) }}
--- ---
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
type: Opaque type: Opaque
+1 -2
View File
@@ -13,8 +13,7 @@ securityContext:
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
command: command:
- /bin/sh - /bin/sh
- -c - ./entrypoint.sh
- chmod +x ./entrypoint.sh && ./entrypoint.sh
envFrom: envFrom:
- configMapRef: - configMapRef:
name: '{{ include "tc.common.names.fullname" . }}-common-config' name: '{{ include "tc.common.names.fullname" . }}-common-config'
+3 -22
View File
@@ -15,13 +15,12 @@ webImage:
proxyImage: proxyImage:
repository: tccr.io/truecharts/immich-proxy repository: tccr.io/truecharts/immich-proxy
tag: 1.29.5_44@sha256:a4c24a70cc1e1bbbdecc3df371af08528430846709ef22ca16e2a923aa8da509 tag: 1.38.2_60@sha256:c788886ce9510541e4031b664d5d3cafbaf14e3bea25792484e1485704dd7231
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
command: command:
- /bin/sh - /bin/sh
- -c - ./start-server.sh
- chmod +x ./start-server.sh && ./start-server.sh
securityContext: securityContext:
readOnlyRootFilesystem: false readOnlyRootFilesystem: false
@@ -63,36 +62,18 @@ probes:
type: HTTP type: HTTP
port: 3001 port: 3001
# Due to https://github.com/immich-app/immich/issues/726
hostAliases:
- ip: 127.0.0.1
hostnames:
- immich-web
- immich-server
- immich-machine-learning
service: service:
main: main:
ports: ports:
main: main:
port: 10323 port: 10323
protocol: HTTP protocol: HTTP
targetPort: 8080
persistence: persistence:
uploads: uploads:
enabled: true enabled: true
mountPath: /usr/src/app/upload mountPath: /usr/src/app/upload
proxy-conf:
enabled: true
noMount: true
type: custom
mountPath: /etc/nginx/
volumeSpec:
configMap:
name: '{{ include "tc.common.names.fullname" . }}-proxy-config'
items:
- key: nginx.conf
path: nginx.conf
postgresql: postgresql:
enabled: true enabled: true