chore: Adds Immich support.

This commit is contained in:
greysoh 2024-11-25 14:14:43 -05:00
parent 66fc8bd88e
commit 9979265d4c
Signed by: imterah
GPG key ID: 8FA7DD57BA6CEA37
11 changed files with 112 additions and 7 deletions

View file

@ -88,7 +88,8 @@ class Project:
helm_mode_settings = [
"add_repo",
"upgrade",
"install"
"install",
"install_no_upgrade_cmd"
]
kube_mode_settings = [
@ -347,7 +348,7 @@ def generate_change_set(projects: list[Project]) -> dict[str, list[str]]:
changeset_values[project.name] = [
f"helm repo add {project.helm_settings.name} {project.helm_settings.repo}"
]
elif project.helm_settings.mode == "upgrade" or project.helm_settings.mode == "install":
elif project.helm_settings.mode == "upgrade" or project.helm_settings.mode == "install" or project.helm_settings.mode == "install_no_upgrade_cmd":
if project.helm_settings.name == None or project.helm_settings.repo == None:
print("ERROR: 'upgrade' or 'install' is set but either: name, or repo, is undefined")
exit(1)
@ -409,16 +410,24 @@ def generate_change_set(projects: list[Project]) -> dict[str, list[str]]:
should_still_continue = True
if (not os.path.isfile(f"{changeset_path}/helmhashes/{meta_id}") or should_still_continue) and project.helm_settings.mode == "install":
print(f"WARN ({project.name}): you are using the old install command! either switch over to upgrade, or switch to 'install_no_upgrade_cmd'")
Path(f"{changeset_path}/helmhashes/{meta_id}").touch()
changeset_values[project.name] = [
f"helm repo update {project.helm_settings.repo[:project.helm_settings.repo.index("/")]}",
f"helm upgrade --install {options_file} {variables} {project.helm_settings.name} \"{project.helm_settings.repo}\" {create_namespace} {namespace}"
]
elif (not os.path.isfile(f"{changeset_path}/helmhashes/{meta_id}") or should_still_continue) and project.helm_settings.mode == "install_no_upgrade_cmd":
Path(f"{changeset_path}/helmhashes/{meta_id}").touch()
changeset_values[project.name] = [
f"helm repo update {project.helm_settings.repo[:project.helm_settings.repo.index("/")]}",
f"helm install {options_file} {variables} {project.helm_settings.name} \"{project.helm_settings.repo}\" {create_namespace} {namespace}"
]
elif project.helm_settings.mode == "upgrade" or mode == "update":
changeset_values[project.name] = [
f"helm repo update {project.helm_settings.repo[:project.helm_settings.repo.index("/")]}",
f"helm upgrade {options_file} {variables} {project.helm_settings.name} \"{project.helm_settings.repo}\" {create_namespace} {namespace}"
f"helm upgrade --install {options_file} {variables} {project.helm_settings.name} \"{project.helm_settings.repo}\" {create_namespace} {namespace}"
]
case "k3s":
if project.kube_settings == None:

View file

@ -5,4 +5,4 @@ metadata:
labels:
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/warn: privileged
pod-security.kubernetes.io/warn: privileged

View file

@ -6,10 +6,10 @@ description = Secret Values
mode = include
path = ./secrets/project.ini
[longhorn]
description = Longhorn Distributed Storage
[storage]
description = Storage Configuration
mode = include
path = ./longhorn/project.ini
path = ./storage/project.ini
[loadbalancer]
description = LoadBalancer Configuration

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: immich

View file

@ -0,0 +1,42 @@
[meta]
format_ver = 1
[immich_namespace]
description = Immich Namespace
mode = k3s
depends_on = traefik:nfs_provisioner
[#immich_namespace/k3s]
mode = install
yml_path = ./namespace.yml
[immich_pvc]
description = Immich PVC
mode = k3s
depends_on = immich_namespace
[#immich_pvc/k3s]
mode = install
yml_path = ./pvc.yml
[immich_repo]
description = Immich Helm Repository
mode = helm
depends_on = immich_pvc
[#immich_repo/helm]
mode = add_repo
name = immich
repo = https://immich-app.github.io/immich-charts
[immich]
description = Immich Software
mode = helm
depends_on = immich_repo
[#immich/helm]
mode = upgrade
name = immich
repo = immich/immich
variable_file = ../../secrets/immich.env
namespace = immich

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: immich-pvc
namespace: immich
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi

View file

@ -24,3 +24,7 @@ path = ./tailscale/project.ini
[woodpecker_project]
mode = include
path = ./woodpecker-ci/project.ini
[immich_project]
mode = include
path = ./immich/project.ini

View file

@ -0,0 +1,22 @@
[meta]
format_ver = 1
[nfs_provisioner_repo]
description = nfs-subdir-external-provisioner repository
mode = helm
[#nfs_provisioner_repo/helm]
mode = add_repo
name = nfs-subdir-external-provisioner
repo = https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
[nfs_provisioner]
description = nfs-subdir-external-provisioner storage
mode = helm
depends_on = nfs_provisioner_repo
[#nfs_provisioner/helm]
mode = install_no_upgrade_cmd
name = nfs-subdir-external-provisioner
repo = nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
variable_file = ../../secrets/nfs.env

View file

@ -0,0 +1,12 @@
[meta]
format_ver = 1
[longhorn]
description = Longhorn Distributed Storage
mode = include
path = ./longhorn/project.ini
[nfs]
description = NFS Storage
mode = include
path = ./nfs/project.ini