cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 10fb5b325b3feeee3d9dc4a6190f056ae514eb24
parent 0b7fe2f3d2aa63d7972784865720165c90462614
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Sat, 20 Dec 2025 23:04:30 +0100

hopefully set up immich right the first time

Signed-off-by: MTRNord <MTRNord@users.noreply.github.com>

Diffstat:
Aapps/talos_cluster/immich/database-credentials.yaml | 24++++++++++++++++++++++++
Aapps/talos_cluster/immich/kustomization.yaml | 11+++++++++++
Aapps/talos_cluster/immich/release.yaml | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/talos_cluster/immich/repository.yaml | 13+++++++++++++
Aapps/talos_cluster/immich/route.yaml | 32++++++++++++++++++++++++++++++++
Mapps/talos_cluster/kustomization.yaml | 1+
6 files changed, 150 insertions(+), 0 deletions(-)

diff --git a/apps/talos_cluster/immich/database-credentials.yaml b/apps/talos_cluster/immich/database-credentials.yaml @@ -0,0 +1,24 @@ +host: pg-cluster-v2-rw.postgres-cluster.svc.cluster.local +username: immich +password: ENC[AES256_GCM,data:APqiJvrsqWccCfcCWB/RaOqarRsDA9pr8EiwX82BpIxCA5AbaNvJ7fdDybUoCLvzoCBWas/p7NLwlbmsSGKknQ==,iv:12CuKOXvPX8VaqNULDr7YNSdAkb247A6rK4tGEMIKa8=,tag:eGODqbv/IwHkh1Cnkbh4YA==,type:str] +dbname: immich +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrTzdBaFpPRUFYdkExaHND + S1FsMEtZQlpMT2hPQ1EweWRFcUMzUGQ5ZnhzCmlNRmExU1JabXM1V2Z6UXFhUU5a + N0ZMS1ZXOFc3YTlRdTZJWGxkSVFKcDgKLS0tIEtGSGtYOVh4aTJRWENmeG1sZFF3 + WXpsdGNhdDVZY0R5K0dhOVNDR1cwdDQKVkGzLfzw31VxPKJLkI0qUoH+I9Rb2pPU + A3R2o+9PGdfBUs7M2c6sepooDOrBcgAn4qDHA5LRGougIGnaO/0+dw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-12-20T20:28:32Z" + mac: ENC[AES256_GCM,data:xiT5EmCue4/Eip/A9fmjNUSjo6RmlPzhLB6aFfc9myBCPYgilEP5UZ4NHX2uU9xvv2KFHIzHPZeD+PaaJK3qAxGAG7kUpFOGm3kU0Ta6UsVaaxU8jpc3+1a6QJX9ysHAG6XBq+TR74LlenZn488jPyK0leAK1xAzpmjuRg5UsMY=,iv:+SWaGJNmHeSu5aBKbPY/0OFEE78KeIbq8iIV96bs7JE=,tag:G7PUHfoC9FbZEUSU0cZ7GA==,type:str] + pgp: [] + encrypted_regex: ^(harborAdminPassword|totpVaultKey|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword|adminPassword|adminUser|adminEmail|emailPassword|secretKey|appId|clientSecret|webhookSecret)$ + version: 3.9.1 diff --git a/apps/talos_cluster/immich/kustomization.yaml b/apps/talos_cluster/immich/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: immich +resources: + - repository.yaml + - release.yaml + - route.yaml +secretGenerator: + - name: immich-database + files: + - database-credentials.yaml diff --git a/apps/talos_cluster/immich/release.yaml b/apps/talos_cluster/immich/release.yaml @@ -0,0 +1,69 @@ +--- +# PVC for immich +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: immmich-pvc + namespace: immich +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 10Gi + storageClassName: longhorn +--- +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: immich + namespace: immich +spec: + releaseName: immich + chartRef: + kind: OCIRepository + name: immich + namespace: immich + interval: 60m + values: + server: + controllers: + main: + containers: + main: + env: + DB_HOSTNAME: + valueFrom: + secretKeyRef: + name: immich-database + key: host + DB_USERNAME: + valueFrom: + secretKeyRef: + name: immich-database + key: username + DB_PASSWORD: + valueFrom: + secretKeyRef: + name: immich-database + key: password + DB_DATABASE_NAME: + valueFrom: + secretKeyRef: + name: immich-database + key: dbname + immich: + persistence: + library: + existingClaim: immmich-pvc + configuration: {} + configurationKind: ConfigMap + valkey: + enabled: false + persistence: + data: + enabled: true + size: 1Gi + type: emptyDir + accessMode: ReadWriteOnce + storageClass: longhorn diff --git a/apps/talos_cluster/immich/repository.yaml b/apps/talos_cluster/immich/repository.yaml @@ -0,0 +1,13 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: immich + namespace: immich +spec: + interval: 60m + url: oci://ghcr.io/immich-app/immich-charts/immich + layerSelector: + mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip" + operation: copy + ref: + semver: "^0.10.3" diff --git a/apps/talos_cluster/immich/route.yaml b/apps/talos_cluster/immich/route.yaml @@ -0,0 +1,32 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: immich + namespace: immich +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - immich.mtrnord.blog + rules: + - backendRefs: + - name: immich-main + port: 2283 + timeouts: + request: 240s + backendRequest: 0s +--- +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: BackendTrafficPolicy +metadata: + name: immich-compression + namespace: immich +spec: + targetRef: + group: gateway.networking.k8s.io + kind: HTTPRoute + name: immich + compression: + - type: Gzip + - type: Brotli diff --git a/apps/talos_cluster/kustomization.yaml b/apps/talos_cluster/kustomization.yaml @@ -29,3 +29,4 @@ resources: #- ./concourse - ./weblate #- ./sentry + - ./immich