diff --git a/apps/hydra/immich/kustomization.yaml b/apps/hydra/immich/kustomization.yaml index 865e28e..432a1bf 100644 --- a/apps/hydra/immich/kustomization.yaml +++ b/apps/hydra/immich/kustomization.yaml @@ -5,4 +5,6 @@ metadata: namespace: immich resources: - namespace.yaml +- redis-srv.yaml +- redis.yaml - uploads-pvc.yaml diff --git a/apps/hydra/immich/redis-srv.yaml b/apps/hydra/immich/redis-srv.yaml new file mode 100644 index 0000000..d58091d --- /dev/null +++ b/apps/hydra/immich/redis-srv.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: redis + name: redis + namespace: immich +spec: + ports: + - port: 6379 + targetPort: 0 + selector: + app: redis +status: + loadBalancer: {} diff --git a/apps/hydra/immich/redis.yaml b/apps/hydra/immich/redis.yaml new file mode 100644 index 0000000..cc5dacc --- /dev/null +++ b/apps/hydra/immich/redis.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: redis + name: redis + namespace: immich +spec: + selector: + matchLabels: + app: redis + strategy: {} + template: + metadata: + labels: + app: redis + spec: + containers: + - image: docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9 + name: immich_redis + resources: {} +status: {} diff --git a/apps/hydra/linkding/kustomization.yaml b/apps/hydra/linkding/kustomization.yaml index f79e113..729b1a9 100644 --- a/apps/hydra/linkding/kustomization.yaml +++ b/apps/hydra/linkding/kustomization.yaml @@ -4,7 +4,7 @@ metadata: name: linking namespace: linkding resources: -- pvc.yaml - deployment.yaml - namespace.yaml +- pvc.yaml - srv.yaml diff --git a/go.mod b/go.mod index c84cbe2..a36af82 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module danicos.dev/daniel/homelab go 1.26.2 require ( - danicos.dev/daniel/go-kube v1.13.4 + danicos.dev/daniel/go-kube v1.13.7 github.com/cloudnative-pg/api v1.29.0 github.com/fatih/color v1.19.0 github.com/fluxcd/helm-controller/api v1.5.4 diff --git a/go.sum b/go.sum index f6c1c1e..f9ae27b 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -danicos.dev/daniel/go-kube v1.13.4 h1:7aXOUOhccvfTcZXAJhHaq3wSvmoVD+cRmD74yyucPsM= -danicos.dev/daniel/go-kube v1.13.4/go.mod h1:zOhFK+bE4t14yOokp+yqh8Pht1/U102JV/29QoKBjjc= +danicos.dev/daniel/go-kube v1.13.7 h1:HmIxAERnut8Ue2XLsG8r4LimKJ0MOf/XACa7BoxEMAQ= +danicos.dev/daniel/go-kube v1.13.7/go.mod h1:zOhFK+bE4t14yOokp+yqh8Pht1/U102JV/29QoKBjjc= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/cloudnative-pg/api v1.29.0 h1:mNx6yJ5qi+Xrjs0NYrUy6V4MlXBkVJxGKwvTJZIuTX4= diff --git a/infrastructure/hydra/cloud-native-pg/kustomization.yaml b/infrastructure/hydra/cloud-native-pg/kustomization.yaml index 1571fea..c966ad6 100644 --- a/infrastructure/hydra/cloud-native-pg/kustomization.yaml +++ b/infrastructure/hydra/cloud-native-pg/kustomization.yaml @@ -4,6 +4,6 @@ metadata: name: cnpg namespace: cnpg-system resources: -- namespace.yaml -- helm-repository-source.yaml - helm-release.yaml +- helm-repository-source.yaml +- namespace.yaml diff --git a/infrastructure/hydra/longhorn/kustomization.yaml b/infrastructure/hydra/longhorn/kustomization.yaml index 35fd5f3..fdbce47 100644 --- a/infrastructure/hydra/longhorn/kustomization.yaml +++ b/infrastructure/hydra/longhorn/kustomization.yaml @@ -4,6 +4,6 @@ metadata: name: longhorn namespace: longhorn-system resources: -- release.yaml -- namespace.yaml - longhorn-stack.yaml +- namespace.yaml +- release.yaml diff --git a/infrastructure/hydra/monitoring/kustomization.yaml b/infrastructure/hydra/monitoring/kustomization.yaml index f7b18cc..b26240f 100644 --- a/infrastructure/hydra/monitoring/kustomization.yaml +++ b/infrastructure/hydra/monitoring/kustomization.yaml @@ -4,6 +4,6 @@ metadata: name: monitoring namespace: monitoring resources: -- namespace.yaml - kube-prometheus-stack.yaml +- namespace.yaml - release.yaml diff --git a/infrastructure/hydra/postgres/kustomization.yaml b/infrastructure/hydra/postgres/kustomization.yaml index 253a4d9..63ec40e 100644 --- a/infrastructure/hydra/postgres/kustomization.yaml +++ b/infrastructure/hydra/postgres/kustomization.yaml @@ -5,5 +5,5 @@ metadata: namespace: cnpg-cluster resources: - cluster-namespace.yaml -- pg-cluster.yaml - immich-db.yaml +- pg-cluster.yaml diff --git a/infrastructure/hydra/truenas-csi/kustomization.yaml b/infrastructure/hydra/truenas-csi/kustomization.yaml index 1509ea8..1522768 100644 --- a/infrastructure/hydra/truenas-csi/kustomization.yaml +++ b/infrastructure/hydra/truenas-csi/kustomization.yaml @@ -4,7 +4,7 @@ metadata: name: truenas-csi namespace: truenas-csi resources: -- namespace.yaml - config.yaml -- nfs-storage-class.yaml - iscsi-storage-class.yaml +- namespace.yaml +- nfs-storage-class.yaml diff --git a/pkg/immich/immich.go b/pkg/immich/immich.go index a43a34c..700d7ef 100644 --- a/pkg/immich/immich.go +++ b/pkg/immich/immich.go @@ -25,10 +25,14 @@ var Secret = struct { DBPortKey: "db_port", } +const RedisPort = 6379 + var meta kube.Metadata var Namespace = kube.Namespace(root.Immich.Name) var srv core.Service var uploads_pvc core.PersistentVolumeClaim +var redis_meta kube.Metadata +var redis_srv core.Service func init() { meta = kube.NewMetadata(root.Immich.Name, Namespace) @@ -40,6 +44,9 @@ func init() { uploads_pvc.Spec.Resources = core.VolumeResourceRequirements{ Requests: req, } + + redis_meta = kube.NewMetadata("redis", Namespace) + redis_srv = redis_meta.Service(RedisPort) } func Stack() stack.Stack { @@ -48,7 +55,8 @@ func Stack() stack.Stack { map[string]any{ "namespace": Namespace, "uploads-pvc": uploads_pvc, - // "redis": Redis(), + "redis-srv": redis_srv, + "redis": Redis(), // "deployment": Deployment(), }, ) @@ -57,6 +65,15 @@ func Stack() stack.Stack { func Deployment() apps.Deployment { uploadVol := kube.NewVolumeFrom(kube.VolumeSourcePVC, "upload", uploads_pvc.Name) + localtimeVol := core.Volume{ + Name: "localtime", + VolumeSource: core.VolumeSource{ + HostPath: &core.HostPathVolumeSource{ + Path: "/etc/localtime", + Type: new(core.HostPathFile), + }, + }, + } envMapping := map[string]string{} secretMapping := map[string]string{ "DB_HOSTNAME": Secret.DBHostKey, @@ -75,15 +92,21 @@ func Deployment() apps.Deployment { }, }, Volumes: []core.Volume{ - // /etc/localtime uploadVol, + localtimeVol, }, } return kube.NewDeployment(meta, podSpec) } func Redis() apps.Deployment { - meta := kube.NewMetadata(root.Immich.Name+"-redis", Namespace) - podSpec := core.PodSpec{} - return kube.NewDeployment(meta, podSpec) + podSpec := core.PodSpec{ + Containers: []core.Container{ + { + Name: "immich_redis", + Image: "docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9", + }, + }, + } + return kube.NewDeployment(redis_meta, podSpec) } diff --git a/pkg/root/services.go b/pkg/root/services.go index 554b5b6..d67c6bc 100644 --- a/pkg/root/services.go +++ b/pkg/root/services.go @@ -35,8 +35,8 @@ var Linkding = Service{ var Immich = Service{ Name: "immich", - Image: "ghcr.io/immich-app/immich-server:v2.6.0:-release}", - Port: 2283, + Image: "ghcr.io/immich-app/immich-server:v2.6.0:-release", + Port: 2283, // Server Port // PublicURL: "https://photos.danicos.me", }