99 lines
2.9 KiB
YAML
99 lines
2.9 KiB
YAML
# immich-server: pinned to talos-cp-3, same reasoning as paperless
|
|||
|
|
# (deployment.yaml comment there) - immich-media is a ReadWriteOnce Longhorn
|
||
|
|
# volume with a single replica physically on that node's disk (shared with
|
||
|
|
# paperless-media on the same 4TB HDD). Recreate strategy for the same
|
||
|
|
# reason: two pods can't both attach an RWO volume.
|
||
|
|
apiVersion: apps/v1
|
||
|
|
kind: Deployment
|
||
|
|
metadata:
|
||
|
|
name: immich-server
|
||
|
|
spec:
|
||
|
|
replicas: 1
|
||
|
|
strategy:
|
||
|
|
type: Recreate
|
||
|
|
selector:
|
||
|
|
matchLabels:
|
||
|
|
app: immich-server
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: immich-server
|
||
|
|
spec:
|
||
|
|
nodeSelector:
|
||
|
|
kubernetes.io/hostname: talos-cp-3
|
||
|
|
containers:
|
||
|
|
- name: immich-server
|
||
|
|
image: ghcr.io/immich-app/immich-server:release
|
||
|
|
ports:
|
||
|
|
- containerPort: 2283
|
||
|
|
envFrom:
|
||
|
|
- configMapRef:
|
||
|
|
name: immich-config
|
||
|
|
env:
|
||
|
|
- name: DB_USERNAME
|
||
|
|
valueFrom:
|
||
|
|
secretKeyRef:
|
||
|
|
name: immich-db-app
|
||
|
|
key: username
|
||
|
|
- name: DB_PASSWORD
|
||
|
|
valueFrom:
|
||
|
|
secretKeyRef:
|
||
|
|
name: immich-db-app
|
||
|
|
key: password
|
||
|
|
# Composed by k8s/infra/iam's provisioning script (system-config
|
||
|
|
# JSON, oauth section) - see immich-oidc Secret.
|
||
|
|
- name: IMMICH_CONFIG_FILE
|
||
|
|
value: /config/immich.json
|
||
|
|
resources:
|
||
|
|
requests: { cpu: "500m", memory: "1Gi" }
|
||
|
|
limits: { cpu: "2", memory: "4Gi" }
|
||
|
|
volumeMounts:
|
||
|
|
- name: media
|
||
|
|
mountPath: /usr/src/app/upload
|
||
|
|
- name: oidc-config
|
||
|
|
mountPath: /config
|
||
|
|
readOnly: true
|
||
|
|
volumes:
|
||
|
|
- name: media
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: immich-media
|
||
|
|
- name: oidc-config
|
||
|
|
secret:
|
||
|
|
secretName: immich-oidc
|
||
|
|
items:
|
||
|
|
- key: config.json
|
||
|
|
path: immich.json
|
||
|
|
---
|
||
|
|
# CPU-only for now - the cluster's one GPU node (worker-1) is already
|
||
|
|
# dedicated to llm-serving predictors. Not node-pinned: its cache PVC is on
|
||
|
|
# the default 3-replica pool, not the single-disk cp-3 HDD.
|
||
|
|
apiVersion: apps/v1
|
||
|
|
kind: Deployment
|
||
|
|
metadata:
|
||
|
|
name: immich-machine-learning
|
||
|
|
spec:
|
||
|
|
replicas: 1
|
||
|
|
selector:
|
||
|
|
matchLabels:
|
||
|
|
app: immich-machine-learning
|
||
|
|
template:
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: immich-machine-learning
|
||
|
|
spec:
|
||
|
|
containers:
|
||
|
|
- name: immich-machine-learning
|
||
|
|
image: ghcr.io/immich-app/immich-machine-learning:release
|
||
|
|
ports:
|
||
|
|
- containerPort: 3003
|
||
|
|
resources:
|
||
|
|
requests: { cpu: "500m", memory: "1Gi" }
|
||
|
|
limits: { cpu: "2", memory: "4Gi" }
|
||
|
|
volumeMounts:
|
||
|
|
- name: ml-cache
|
||
|
|
mountPath: /cache
|
||
|
|
volumes:
|
||
|
|
- name: ml-cache
|
||
|
|
persistentVolumeClaim:
|
||
|
|
claimName: immich-ml-cache
|