Publish new changes in catalog

This commit is contained in:
sonicaj
2023-11-20 16:55:03 +00:00
parent f7ad15aadb
commit 9ef460388f
37 changed files with 1064 additions and 590 deletions

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../common
version: 1.2.2
digest: sha256:fb077cb81f6acecd5c9e6adc22a18e156f780cd78f27198cdb47810f95364b56
generated: "2023-11-09T09:51:08.676733946+02:00"

View File

@@ -1,22 +0,0 @@
immichStorage:
uploads:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/uploads
library:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/library
thumbs:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/thumbs
profile:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/profile
video:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/video
pgData:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgData
pgBackup:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgBackup

View File

@@ -1,25 +0,0 @@
immichStorage:
uploads:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/uploads
library:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/library
thumbs:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/thumbs
profile:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/profile
video:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/video
additionalLibraries:
- hostPath: /mnt/{{ .Release.Name }}/additionalLibrary1
- hostPath: /mnt/{{ .Release.Name }}/additionalLibrary2
pgData:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgData
pgBackup:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgBackup

View File

@@ -1,26 +0,0 @@
immichStorage:
uploads:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/uploads
library:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/library
thumbs:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/thumbs
profile:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/profile
video:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/video
pgData:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgData
pgBackup:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgBackup
immichConfig:
enableML: false
enableTypesense: false

View File

@@ -1,25 +0,0 @@
immichStorage:
uploads:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/uploads
library:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/library
thumbs:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/thumbs
profile:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/profile
video:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/video
pgData:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgData
pgBackup:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgBackup
immichConfig:
enableML: false

View File

@@ -1,25 +0,0 @@
immichStorage:
uploads:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/uploads
library:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/library
thumbs:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/thumbs
profile:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/profile
video:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/video
pgData:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgData
pgBackup:
type: hostPath
hostPath: /mnt/{{ .Release.Name }}/pgBackup
immichConfig:
enableTypesense: false

View File

@@ -1,425 +0,0 @@
groups:
- name: Immich Configuration
description: Configure Immich
- name: Network Configuration
description: Configure Network for Immich
- name: Storage Configuration
description: Configure Storage for Immich
- name: Resources Configuration
description: Configure Resources for Immich
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
path: "$kubernetes-resource_configmap_portal_path"
questions:
- variable: TZ
group: Immich Configuration
label: Timezone
schema:
type: string
default: Etc/UTC
required: true
$ref:
- definitions/timezone
- variable: immichConfig
label: ""
group: Immich Configuration
schema:
type: dict
attrs:
- variable: publicLoginMessage
label: Public Login Message
description: |
The message that will be displayed on the login page.
schema:
type: string
default: ""
- variable: enableML
label: Enable Machine Learning
description: |
Enable Machine Learning
schema:
type: boolean
default: true
- variable: enableTypesense
label: Enable Typesense
description: |
Enable Typesense
schema:
type: boolean
default: true
- variable: immichNetwork
label: ""
group: Network Configuration
schema:
type: dict
attrs:
- variable: webuiPort
label: Web Port
description: The port for the Immich WebUI.
schema:
type: int
default: 30041
min: 9000
max: 65535
required: true
- variable: immichStorage
label: ""
group: Storage Configuration
schema:
type: dict
attrs:
- variable: uploads
label: Immich Uploads Storage
description: The path to store Immich uploads.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: uploads
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: library
label: Immich Library Storage
description: The path to store Immich library.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: library
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: thumbs
label: Immich Thumbs Storage
description: The path to store Immich Thumbs.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: thumbs
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: profile
label: Immich Profile Storage
description: The path to store Immich Profile.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: profile
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: video
label: Immich Video Storage
description: The path to store Immich Video.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: video
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: additionalLibraries
label: Additional Libraries
description: |
Additional libraries for Immich.</br>
Internal mountPath will be the same as your hostPath</br>
https://immich.app/docs/features/read-only-gallery
schema:
type: list
default: []
items:
- variable: storageEntry
label: Storage Entry
schema:
type: dict
attrs:
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
required: true
- variable: pgData
label: Immich Postgres Data Storage
description: The path to store Immich Postgres Data.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: pgData
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: pgBackup
label: Immich Postgres Backup Storage
description: The path to store Immich Postgres Backup.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: datasetName
label: Dataset Name
schema:
type: string
show_if: [["type", "=", "ixVolume"]]
required: true
hidden: true
immutable: true
default: pgBackup
$ref:
- "normalize/ixVolume"
- variable: hostPath
label: Host Path
schema:
type: hostpath
show_if: [["type", "=", "hostPath"]]
immutable: true
required: true
- variable: resources
label: ""
group: Resources Configuration
schema:
type: dict
attrs:
- variable: limits
label: Limits
schema:
type: dict
attrs:
- variable: cpu
label: CPU
description: CPU limit for Immich.
schema:
type: string
max_length: 6
valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$'
valid_chars_error: |
Valid CPU limit formats are</br>
- Plain Integer - eg. 1</br>
- Float - eg. 0.5</br>
- Milicpu - eg. 500m
default: "4000m"
required: true
- variable: memory
label: Memory
description: Memory limit for Immich.
schema:
type: string
max_length: 12
valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$'
valid_chars_error: |
Valid Memory limit formats are</br>
- Suffixed with E/P/T/G/M/K - eg. 1G</br>
- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>
- Plain Integer in bytes - eg. 1024</br>
- Exponent - eg. 134e6
default: "8Gi"
required: true
- variable: immichGPU
group: Resources Configuration
label: GPU Configuration
schema:
type: dict
$ref:
- "definitions/gpuConfiguration"
attrs: []

View File

@@ -0,0 +1,6 @@
dependencies:
- name: common
repository: file://../../../common
version: 1.2.3
digest: sha256:e6ff49b06bf5d4d159e505ae6d153f36cd46170bb519caf90462cd5caebfd0fb
generated: "2023-11-15T13:21:05.261510633+02:00"

View File

@@ -3,9 +3,9 @@ description: Immich
annotations:
title: Immich
type: application
version: 1.0.35
version: 1.1.0
apiVersion: v2
appVersion: 1.85.0
appVersion: 1.87.0
kubeVersion: '>=1.16.0-0'
maintainers:
- name: truenas
@@ -14,7 +14,7 @@ maintainers:
dependencies:
- name: common
repository: file://../../../common
version: 1.2.2
version: 1.2.3
home: https://immich.app
icon: https://media.sys.truenas.net/apps/immich/icons/icon.svg
sources:

Binary file not shown.

View File

@@ -0,0 +1,15 @@
immichStorage:
uploads:
type: pvc
library:
type: pvc
thumbs:
type: pvc
profile:
type: pvc
video:
type: pvc
pgData:
type: pvc
pgBackup:
type: emptyDir

View File

@@ -0,0 +1,18 @@
immichStorage:
uploads:
type: pvc
library:
type: pvc
thumbs:
type: pvc
profile:
type: pvc
video:
type: pvc
pgData:
type: pvc
pgBackup:
type: emptyDir
additionalLibraries:
- hostPath: /mnt/{{ .Release.Name }}/additionalLibrary1
- hostPath: /mnt/{{ .Release.Name }}/additionalLibrary2

View File

@@ -0,0 +1,19 @@
immichStorage:
uploads:
type: pvc
library:
type: pvc
thumbs:
type: pvc
profile:
type: pvc
video:
type: pvc
pgData:
type: pvc
pgBackup:
type: emptyDir
immichConfig:
enableML: false
enableTypesense: false

View File

@@ -0,0 +1,18 @@
immichStorage:
uploads:
type: pvc
library:
type: pvc
thumbs:
type: pvc
profile:
type: pvc
video:
type: pvc
pgData:
type: pvc
pgBackup:
type: emptyDir
immichConfig:
enableML: false

View File

@@ -0,0 +1,18 @@
immichStorage:
uploads:
type: pvc
library:
type: pvc
thumbs:
type: pvc
profile:
type: pvc
video:
type: pvc
pgData:
type: pvc
pgBackup:
type: emptyDir
immichConfig:
enableTypesense: false

View File

@@ -1,22 +1,22 @@
image:
repository: altran1502/immich-server
pullPolicy: IfNotPresent
tag: v1.85.0
tag: v1.87.0
webImage:
repository: altran1502/immich-web
pullPolicy: IfNotPresent
tag: v1.85.0
tag: v1.87.0
proxyImage:
repository: altran1502/immich-proxy
pullPolicy: IfNotPresent
tag: v1.85.0
tag: v1.87.0
mlImage:
repository: altran1502/immich-machine-learning
pullPolicy: IfNotPresent
tag: v1.85.0
tag: v1.87.0
typesenseImage:
repository: typesense/typesense
@@ -49,26 +49,33 @@ immichNetwork:
immichStorage:
uploads:
type: ixVolume
datasetName: uploads
ixVolumeConfig:
datasetName: uploads
library:
type: ixVolume
datasetName: library
ixVolumeConfig:
datasetName: library
thumbs:
type: ixVolume
datasetName: thumbs
ixVolumeConfig:
datasetName: thumbs
profile:
type: ixVolume
datasetName: profile
ixVolumeConfig:
datasetName: profile
video:
type: ixVolume
datasetName: video
ixVolumeConfig:
datasetName: video
additionalLibraries: []
pgData:
type: ixVolume
datasetName: pgData
ixVolumeConfig:
datasetName: pgData
pgBackup:
type: ixVolume
datasetName: pgBackup
ixVolumeConfig:
datasetName: pgBackup
notes:
custom: |

View File

@@ -0,0 +1,80 @@
#!/usr/bin/python3
import json
import os
import sys
# Used to migrate storage format to include ACLs
def storage_migrate(storage):
delete_keys = []
if storage['type'] == 'hostPath':
# Check if the key exists, if not we have already migrated
if not storage.get('hostPath'):
return storage
storage['hostPathConfig'] = {'hostPath': storage['hostPath']}
delete_keys.append('hostPath')
elif storage['type'] == 'ixVolume':
# Check if the key exists, if not we have already migrated
if not storage.get('datasetName'):
return storage
storage['ixVolumeConfig'] = {'datasetName': storage['datasetName']}
delete_keys.append('datasetName')
for key in delete_keys:
storage.pop(key, None)
return storage
# Used to migrate libraries to additionalStorages
def libraries_migrate(libraries):
# Additional **Libraries** only had a field for hostPath, because Immich
# had a requirement for both hostPath and mountPath to be the same,
# now its no longer the case, so we can merge it with additionalStorages
for idx, library in enumerate(libraries):
if not library.get('hostPath'):
raise Exception(f'Library {idx} is malformed')
libraries[idx] = {
'type': 'hostPath',
'mountPath': library['hostPath'],
'hostPathConfig': {
'hostPath': library['hostPath'],
}
}
return libraries
def migrate(values):
storage_key = 'immichStorage'
storages = ['uploads', 'library', 'thumbs', 'profile', 'video', 'pgData', 'pgBackup']
for storage in storages:
check_val = values.get(storage_key, {}).get(storage, {})
if not isinstance(check_val, dict) or not check_val:
raise Exception(f'Storage section {storage} is malformed')
values[storage_key][storage] = storage_migrate(check_val)
# Migrate additionalLibraries,
# if additionalLibraries does not exist, we have already migrated
if libraries := values.get(storage_key, {}).get('additionalLibraries', None):
# If additionalLibraries exists, additionalStorages does not exist yet
values[storage_key]['additionalStorages'] = libraries_migrate(libraries)
values[storage_key].pop('additionalLibraries', None)
return values
if __name__ == '__main__':
if len(sys.argv) != 2:
exit(1)
if os.path.exists(sys.argv[1]):
with open(sys.argv[1], 'r') as f:
print(json.dumps(migrate(json.loads(f.read()))))

View File

@@ -0,0 +1,839 @@
groups:
- name: Immich Configuration
description: Configure Immich
- name: Network Configuration
description: Configure Network for Immich
- name: Storage Configuration
description: Configure Storage for Immich
- name: Resources Configuration
description: Configure Resources for Immich
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
path: "$kubernetes-resource_configmap_portal_path"
questions:
- variable: TZ
group: Immich Configuration
label: Timezone
schema:
type: string
default: Etc/UTC
required: true
$ref:
- definitions/timezone
- variable: immichConfig
label: ""
group: Immich Configuration
schema:
type: dict
attrs:
- variable: publicLoginMessage
label: Public Login Message
description: |
The message that will be displayed on the login page.
schema:
type: string
default: ""
- variable: enableML
label: Enable Machine Learning
description: |
Enable Machine Learning
schema:
type: boolean
default: true
- variable: enableTypesense
label: Enable Typesense
description: |
Enable Typesense
schema:
type: boolean
default: true
- variable: immichNetwork
label: ""
group: Network Configuration
schema:
type: dict
attrs:
- variable: webuiPort
label: Web Port
description: The port for the Immich WebUI.
schema:
type: int
default: 30041
min: 9000
max: 65535
required: true
- variable: immichStorage
label: ""
group: Storage Configuration
schema:
type: dict
attrs:
- variable: uploads
label: Immich Uploads Storage
description: The path to store Immich uploads.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "uploads"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: library
label: Immich Library Storage
description: The path to store Immich Library.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "library"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: thumbs
label: Immich Thumbs Storage
description: The path to store Immich Thumbs.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "thumbs"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: profile
label: Immich Profile Storage
description: The path to store Immich Profile.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "profile"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: video
label: Immich Video Storage
description: The path to store Immich Video.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "video"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: pgData
label: Immich Postgres Data Storage
description: The path to store Immich Postgres Data.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
# Nothing to show for the user
hidden: true
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
# Postgres does a CHMOD at startup
# Which fails with ACL
hidden: true
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "pgData"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
# Postgres does a CHMOD at startup
# Which fails with ACL
hidden: true
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: pgBackup
label: Immich Postgres Backup Storage
description: The path to store Immich Postgres Backup.
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.
schema:
type: string
required: true
immutable: true
default: ixVolume
enum:
- value: hostPath
description: Host Path (Path that already exists on the system)
- value: ixVolume
description: ixVolume (Dataset created automatically by the system)
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
# Nothing to show for the user
hidden: true
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
# Postgres does a CHMOD at startup
# Which fails with ACL
hidden: true
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
hidden: true
default: "pgBackup"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
# Postgres does a CHMOD at startup
# Which fails with ACL
hidden: true
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: additionalStorages
label: Additional Storage
description: Additional storage for Immich.
schema:
type: list
default: []
items:
- variable: storageEntry
label: Storage Entry
schema:
type: dict
attrs:
- variable: type
label: Type
description: |
ixVolume: Is dataset created automatically by the system.</br>
Host Path: Is a path that already exists on the system.</br>
SMB Share: Is a SMB share that is mounted to a persistent volume claim.
schema:
type: string
required: true
default: "ixVolume"
immutable: true
enum:
- value: "hostPath"
description: Host Path (Path that already exists on the system)
- value: "ixVolume"
description: ixVolume (Dataset created automatically by the system)
- value: "smb-pv-pvc"
description: SMB Share (Mounts a persistent volume claim to a SMB share)
- variable: readOnly
label: Read Only
description: Mount the volume as read only.
schema:
type: boolean
default: false
- variable: mountPath
label: Mount Path
description: The path inside the container to mount the storage.
schema:
type: path
required: true
- variable: hostPathConfig
label: hostPathConfig
schema:
type: dict
show_if: [["type", "=", "hostPath"]]
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: acl
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
$ref:
- "normalize/acl"
- variable: hostPath
label: Host Path
description: The host path to use for storage.
schema:
type: hostpath
show_if: [["aclEnable", "=", false]]
required: true
- variable: ixVolumeConfig
label: ixVolume Configuration
description: The configuration for the ixVolume dataset.
schema:
type: dict
show_if: [["type", "=", "ixVolume"]]
$ref:
- "normalize/ixVolume"
attrs:
- variable: aclEnable
label: Enable ACL
description: Enable ACL for the dataset.
schema:
type: boolean
default: false
- variable: datasetName
label: Dataset Name
description: The name of the dataset to use for storage.
schema:
type: string
required: true
immutable: true
default: "storage_entry"
- variable: aclEntries
label: ACL Configuration
schema:
type: dict
show_if: [["aclEnable", "=", true]]
attrs: []
- variable: smbConfig
label: SMB Share Configuration
description: The configuration for the SMB Share.
schema:
type: dict
show_if: [["type", "=", "smb-pv-pvc"]]
attrs:
- variable: server
label: Server
description: The server for the SMB share.
schema:
type: string
required: true
- variable: share
label: Share
description: The share name for the SMB share.
schema:
type: string
required: true
- variable: domain
label: Domain (Optional)
description: The domain for the SMB share.
schema:
type: string
- variable: username
label: Username
description: The username for the SMB share.
schema:
type: string
required: true
- variable: password
label: Password
description: The password for the SMB share.
schema:
type: string
required: true
private: true
- variable: size
label: Size (in Gi)
description: The size of the volume quota.
schema:
type: int
required: true
min: 1
default: 1
- variable: resources
label: ""
group: Resources Configuration
schema:
type: dict
attrs:
- variable: limits
label: Limits
schema:
type: dict
attrs:
- variable: cpu
label: CPU
description: CPU limit for Immich.
schema:
type: string
max_length: 6
valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$'
valid_chars_error: |
Valid CPU limit formats are</br>
- Plain Integer - eg. 1</br>
- Float - eg. 0.5</br>
- Milicpu - eg. 500m
default: "4000m"
required: true
- variable: memory
label: Memory
description: Memory limit for Immich.
schema:
type: string
max_length: 12
valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$'
valid_chars_error: |
Valid Memory limit formats are</br>
- Suffixed with E/P/T/G/M/K - eg. 1G</br>
- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>
- Plain Integer in bytes - eg. 1024</br>
- Exponent - eg. 134e6
default: "8Gi"
required: true
- variable: immichGPU
group: Resources Configuration
label: GPU Configuration
schema:
type: dict
$ref:
- "definitions/gpuConfiguration"
attrs: []

View File

@@ -1,11 +1,17 @@
{{- define "immich.persistence" -}}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.pgData) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.pgBackup) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.library) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.uploads) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.thumbs) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.profile) }}
{{- include "immich.storage.ci.migration" (dict "storage" .Values.immichStorage.video) }}
persistence:
{{/* Data */}}
library:
enabled: true
type: {{ .Values.immichStorage.library.type }}
datasetName: {{ .Values.immichStorage.library.datasetName | default "" }}
hostPath: {{ .Values.immichStorage.library.hostPath | default "" }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.immichStorage.library) | nindent 4 }}
targetSelector:
server:
server:
@@ -15,9 +21,7 @@ persistence:
mountPath: /usr/src/app/upload/library
uploads:
enabled: true
type: {{ .Values.immichStorage.uploads.type }}
datasetName: {{ .Values.immichStorage.uploads.datasetName | default "" }}
hostPath: {{ .Values.immichStorage.uploads.hostPath | default "" }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.immichStorage.uploads) | nindent 4 }}
targetSelector:
server:
server:
@@ -27,9 +31,7 @@ persistence:
mountPath: /usr/src/app/upload/upload
thumbs:
enabled: true
type: {{ .Values.immichStorage.thumbs.type }}
datasetName: {{ .Values.immichStorage.thumbs.datasetName | default "" }}
hostPath: {{ .Values.immichStorage.thumbs.hostPath | default "" }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.immichStorage.thumbs) | nindent 4 }}
targetSelector:
server:
server:
@@ -39,9 +41,7 @@ persistence:
mountPath: /usr/src/app/upload/thumbs
profile:
enabled: true
type: {{ .Values.immichStorage.profile.type }}
datasetName: {{ .Values.immichStorage.profile.datasetName | default "" }}
hostPath: {{ .Values.immichStorage.profile.hostPath | default "" }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.immichStorage.profile) | nindent 4 }}
targetSelector:
server:
server:
@@ -51,9 +51,7 @@ persistence:
mountPath: /usr/src/app/upload/profile
video:
enabled: true
type: {{ .Values.immichStorage.video.type }}
datasetName: {{ .Values.immichStorage.video.datasetName | default "" }}
hostPath: {{ .Values.immichStorage.video.hostPath | default "" }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" .Values.immichStorage.video) | nindent 4 }}
targetSelector:
server:
server:
@@ -61,19 +59,18 @@ persistence:
microservices:
microservices:
mountPath: /usr/src/app/upload/encoded-video
{{- range $idx, $storage := .Values.immichStorage.additionalLibraries }}
{{ printf "immich-%v" (int $idx) }}:
{{- range $idx, $storage := .Values.immichStorage.additionalStorages }}
{{ printf "immich-%v:" (int $idx) }}
enabled: true
type: hostPath
hostPath: {{ $storage.hostPath | default "" }}
# Host path and mount path MUST be the same
{{- include "immich.storage.ci.migration" (dict "storage" $storage) }}
{{- include "ix.v1.common.app.storageOptions" (dict "storage" $storage) | nindent 4 }}
targetSelector:
server:
server:
mountPath: {{ $storage.hostPath }}
mountPath: {{ $storage.mountPath }}
microservices:
microservices:
mountPath: {{ $storage.hostPath }}
mountPath: {{ $storage.mountPath }}
{{- end }}
{{/* Caches */}}
microcache:
@@ -116,9 +113,20 @@ persistence:
redis:
mountPath: /tmp
{{/* Database */}}
{{- include "ix.v1.common.app.postgresPersistence"
(dict "pgData" .Values.immichStorage.pgData
"pgBackup" .Values.immichStorage.pgBackup
) | nindent 2 }}
{{- end -}}
{{/* Can be removed on the next bump (1.1.0+), only used for CI values */}}
{{- define "immich.storage.ci.migration" -}}
{{- $storage := .storage -}}
{{- if $storage.hostPath -}}
{{- $_ := set $storage "hostPathConfig" dict -}}
{{- $_ := set $storage.hostPathConfig "hostPath" $storage.hostPath -}}
{{- end -}}
{{- end -}}