Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: initial setup for manual preview instances #356

Merged
merged 3 commits into from
Jan 22, 2025
Merged

Conversation

bo0tzz
Copy link
Member

@bo0tzz bo0tzz commented Jan 22, 2025

No description provided.

Copy link

github-actions bot commented Jan 22, 2025

--- kubernetes/flux Kustomization: flux-system/cluster HelmRepository: flux-system/immich-charts

+++ kubernetes/flux Kustomization: flux-system/cluster HelmRepository: flux-system/immich-charts

@@ -0,0 +1,13 @@

+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: HelmRepository
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: immich-charts
+  namespace: flux-system
+spec:
+  interval: 1h
+  url: https://immich-app.github.io/immich-charts
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Namespace: flux-system/preview

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Namespace: flux-system/preview

@@ -0,0 +1,9 @@

+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: preview
+
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/preview-immich-release

+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: flux-system/preview-immich-release

@@ -0,0 +1,28 @@

+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+  labels:
+    kustomize.toolkit.fluxcd.io/name: cluster-apps
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: preview-immich-release
+  namespace: flux-system
+spec:
+  commonMetadata:
+    labels:
+      app.kubernetes.io/name: preview-immich-release
+  interval: 30m
+  path: ./kubernetes/apps/preview/immich-release/app
+  postBuild:
+    substitute:
+      HOST: release-preview.internal.immich.cloud
+      NAME: preview-immich-release
+  prune: true
+  retryInterval: 1m
+  sourceRef:
+    kind: GitRepository
+    name: immich-kubernetes
+  targetNamespace: preview
+  timeout: 5m
+  wait: true
+
--- kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release PersistentVolumeClaim: preview/preview-immich-release-library

+++ kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release PersistentVolumeClaim: preview/preview-immich-release-library

@@ -0,0 +1,18 @@

+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  labels:
+    app.kubernetes.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: preview-immich-release-library
+  namespace: preview
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 100Gi
+  storageClassName: zfs
+
--- kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release Cluster: preview/preview-immich-release

+++ kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release Cluster: preview/preview-immich-release

@@ -0,0 +1,24 @@

+---
+apiVersion: postgresql.cnpg.io/v1
+kind: Cluster
+metadata:
+  labels:
+    app.kubernetes.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: preview-immich-release
+  namespace: preview
+spec:
+  backup:
+    volumeSnapshot:
+      className: zfs
+  enableSuperuserAccess: true
+  imageName: ghcr.io/tensorchord/cloudnative-pgvecto.rs:14.12-v0.3.0
+  instances: 1
+  postgresql:
+    shared_preload_libraries:
+    - vectors.so
+  storage:
+    size: 10Gi
+    storageClass: zfs
+
--- kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release HelmRelease: preview/preview-immich-release

+++ kubernetes/apps/preview/immich-release/app Kustomization: flux-system/preview-immich-release HelmRelease: preview/preview-immich-release

@@ -0,0 +1,80 @@

+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+  labels:
+    app.kubernetes.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/name: preview-immich-release
+    kustomize.toolkit.fluxcd.io/namespace: flux-system
+  name: preview-immich-release
+  namespace: preview
+spec:
+  chart:
+    spec:
+      chart: immich
+      interval: 1m
+      sourceRef:
+        kind: HelmRepository
+        name: immich-charts
+        namespace: flux-system
+      version: 0.9.0
+  interval: 5m
+  upgrade:
+    remediation:
+      retries: 3
+  values:
+    env:
+      DB_DATABASE_NAME:
+        valueFrom:
+          secretKeyRef:
+            key: dbname
+            name: preview-immich-release-app
+      DB_HOSTNAME:
+        valueFrom:
+          secretKeyRef:
+            key: host
+            name: preview-immich-release-superuser
+      DB_PASSWORD:
+        valueFrom:
+          secretKeyRef:
+            key: password
+            name: preview-immich-release-superuser
+      DB_USERNAME:
+        valueFrom:
+          secretKeyRef:
+            key: user
+            name: preview-immich-release-superuser
+      LOG_LEVEL: verbose
+    image:
+      tag: main
+    immich:
+      persistence:
+        library:
+          existingClaim: preview-immich-release-library
+    machine-learning:
+      image:
+        pullPolicy: Always
+    postgres:
+      enabled: false
+    redis:
+      enabled: true
+    server:
+      image:
+        pullPolicy: Always
+      ingress:
+        main:
+          annotations:
+            cert-manager.io/cluster-issuer: letsencrypt-staging
+            nginx.ingress.kubernetes.io/proxy-body-size: '0'
+          className: nginx
+          enabled: true
+          hosts:
+          - host: release-preview.internal.immich.cloud
+            paths:
+            - path: /
+              pathType: Prefix
+          tls:
+          - hosts:
+            - release-preview.internal.immich.cloud
+            secretName: preview-immich-release-tls
+

Copy link

--- HelmRelease: preview/preview-immich-release NetworkPolicy: preview/preview-immich-release-redis

+++ HelmRelease: preview/preview-immich-release NetworkPolicy: preview/preview-immich-release-redis

@@ -0,0 +1,24 @@

+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+  name: preview-immich-release-redis
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+spec:
+  podSelector:
+    matchLabels:
+      app.kubernetes.io/instance: preview-immich-release
+      app.kubernetes.io/name: redis
+  policyTypes:
+  - Ingress
+  - Egress
+  egress:
+  - {}
+  ingress:
+  - ports:
+    - port: 6379
+
--- HelmRelease: preview/preview-immich-release PodDisruptionBudget: preview/preview-immich-release-redis-master

+++ HelmRelease: preview/preview-immich-release PodDisruptionBudget: preview/preview-immich-release-redis-master

@@ -0,0 +1,19 @@

+---
+apiVersion: policy/v1
+kind: PodDisruptionBudget
+metadata:
+  name: preview-immich-release-redis-master
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+    app.kubernetes.io/component: master
+spec:
+  maxUnavailable: 1
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: preview-immich-release
+      app.kubernetes.io/name: redis
+      app.kubernetes.io/component: master
+
--- HelmRelease: preview/preview-immich-release ServiceAccount: preview/preview-immich-release-redis-master

+++ HelmRelease: preview/preview-immich-release ServiceAccount: preview/preview-immich-release-redis-master

@@ -0,0 +1,12 @@

+---
+apiVersion: v1
+kind: ServiceAccount
+automountServiceAccountToken: false
+metadata:
+  name: preview-immich-release-redis-master
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+
--- HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-configuration

+++ HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-configuration

@@ -0,0 +1,31 @@

+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: preview-immich-release-redis-configuration
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+data:
+  redis.conf: |-
+    # User-supplied common configuration:
+    # Enable AOF https://redis.io/topics/persistence#append-only-file
+    appendonly yes
+    # Disable RDB persistence, AOF persistence already enabled.
+    save ""
+    # End of common configuration
+  master.conf: |-
+    dir /data
+    # User-supplied master configuration:
+    rename-command FLUSHDB ""
+    rename-command FLUSHALL ""
+    # End of master configuration
+  replica.conf: |-
+    dir /data
+    # User-supplied replica configuration:
+    rename-command FLUSHDB ""
+    rename-command FLUSHALL ""
+    # End of replica configuration
+
--- HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-health

+++ HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-health

@@ -0,0 +1,106 @@

+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: preview-immich-release-redis-health
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+data:
+  ping_readiness_local.sh: |-
+    #!/bin/bash
+
+    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
+    [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
+    response=$(
+      timeout -s 15 $1 \
+      redis-cli \
+        -h localhost \
+        -p $REDIS_PORT \
+        ping
+    )
+    if [ "$?" -eq "124" ]; then
+      echo "Timed out"
+      exit 1
+    fi
+    if [ "$response" != "PONG" ]; then
+      echo "$response"
+      exit 1
+    fi
+  ping_liveness_local.sh: |-
+    #!/bin/bash
+
+    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
+    [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD"
+    response=$(
+      timeout -s 15 $1 \
+      redis-cli \
+        -h localhost \
+        -p $REDIS_PORT \
+        ping
+    )
+    if [ "$?" -eq "124" ]; then
+      echo "Timed out"
+      exit 1
+    fi
+    responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')
+    if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ] && [ "$responseFirstWord" != "MASTERDOWN" ]; then
+      echo "$response"
+      exit 1
+    fi
+  ping_readiness_master.sh: |-
+    #!/bin/bash
+
+    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")"
+    [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
+    response=$(
+      timeout -s 15 $1 \
+      redis-cli \
+        -h $REDIS_MASTER_HOST \
+        -p $REDIS_MASTER_PORT_NUMBER \
+        ping
+    )
+    if [ "$?" -eq "124" ]; then
+      echo "Timed out"
+      exit 1
+    fi
+    if [ "$response" != "PONG" ]; then
+      echo "$response"
+      exit 1
+    fi
+  ping_liveness_master.sh: |-
+    #!/bin/bash
+
+    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")"
+    [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
+    response=$(
+      timeout -s 15 $1 \
+      redis-cli \
+        -h $REDIS_MASTER_HOST \
+        -p $REDIS_MASTER_PORT_NUMBER \
+        ping
+    )
+    if [ "$?" -eq "124" ]; then
+      echo "Timed out"
+      exit 1
+    fi
+    responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}')
+    if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ]; then
+      echo "$response"
+      exit 1
+    fi
+  ping_readiness_local_and_master.sh: |-
+    script_dir="$(dirname "$0")"
+    exit_status=0
+    "$script_dir/ping_readiness_local.sh" $1 || exit_status=$?
+    "$script_dir/ping_readiness_master.sh" $1 || exit_status=$?
+    exit $exit_status
+  ping_liveness_local_and_master.sh: |-
+    script_dir="$(dirname "$0")"
+    exit_status=0
+    "$script_dir/ping_liveness_local.sh" $1 || exit_status=$?
+    "$script_dir/ping_liveness_master.sh" $1 || exit_status=$?
+    exit $exit_status
+
--- HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-scripts

+++ HelmRelease: preview/preview-immich-release ConfigMap: preview/preview-immich-release-redis-scripts

@@ -0,0 +1,27 @@

+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: preview-immich-release-redis-scripts
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+data:
+  start-master.sh: |
+    #!/bin/bash
+
+    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")"
+    if [[ -f /opt/bitnami/redis/mounted-etc/master.conf ]];then
+        cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf
+    fi
+    if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then
+        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf
+    fi
+    ARGS=("--port" "${REDIS_PORT}")
+    ARGS+=("--protected-mode" "no")
+    ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf")
+    ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf")
+    exec redis-server "${ARGS[@]}"
+
--- HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-redis-headless

+++ HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-redis-headless

@@ -0,0 +1,21 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: preview-immich-release-redis-headless
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+spec:
+  type: ClusterIP
+  clusterIP: None
+  ports:
+  - name: tcp-redis
+    port: 6379
+    targetPort: redis
+  selector:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/name: redis
+
--- HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-redis-master

+++ HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-redis-master

@@ -0,0 +1,25 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: preview-immich-release-redis-master
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+    app.kubernetes.io/component: master
+spec:
+  type: ClusterIP
+  internalTrafficPolicy: Cluster
+  sessionAffinity: None
+  ports:
+  - name: tcp-redis
+    port: 6379
+    targetPort: redis
+    nodePort: null
+  selector:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/name: redis
+    app.kubernetes.io/component: master
+
--- HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-machine-learning

+++ HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-machine-learning

@@ -0,0 +1,21 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: preview-immich-release-machine-learning
+  labels:
+    app.kubernetes.io/service: preview-immich-release-machine-learning
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: machine-learning
+spec:
+  type: ClusterIP
+  ports:
+  - port: 3003
+    targetPort: http
+    protocol: TCP
+    name: http
+  selector:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/name: machine-learning
+
--- HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-server

+++ HelmRelease: preview/preview-immich-release Service: preview/preview-immich-release-server

@@ -0,0 +1,21 @@

+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: preview-immich-release-server
+  labels:
+    app.kubernetes.io/service: preview-immich-release-server
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: server
+spec:
+  type: ClusterIP
+  ports:
+  - port: 2283
+    targetPort: http
+    protocol: TCP
+    name: http
+  selector:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/name: server
+
--- HelmRelease: preview/preview-immich-release Deployment: preview/preview-immich-release-machine-learning

+++ HelmRelease: preview/preview-immich-release Deployment: preview/preview-immich-release-machine-learning

@@ -0,0 +1,96 @@

+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: preview-immich-release-machine-learning
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: machine-learning
+spec:
+  revisionHistoryLimit: 3
+  replicas: 1
+  strategy:
+    type: Recreate
+  selector:
+    matchLabels:
+      app.kubernetes.io/name: machine-learning
+      app.kubernetes.io/instance: preview-immich-release
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/name: machine-learning
+        app.kubernetes.io/instance: preview-immich-release
+    spec:
+      serviceAccountName: default
+      automountServiceAccountToken: true
+      dnsPolicy: ClusterFirst
+      enableServiceLinks: true
+      containers:
+      - name: preview-immich-release-machine-learning
+        image: ghcr.io/immich-app/immich-machine-learning:main
+        imagePullPolicy: Always
+        env:
+        - name: DB_DATABASE_NAME
+          valueFrom:
+            secretKeyRef:
+              key: dbname
+              name: preview-immich-release-app
+        - name: DB_HOSTNAME
+          valueFrom:
+            secretKeyRef:
+              key: host
+              name: preview-immich-release-superuser
+        - name: DB_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              key: password
+              name: preview-immich-release-superuser
+        - name: DB_USERNAME
+          valueFrom:
+            secretKeyRef:
+              key: user
+              name: preview-immich-release-superuser
+        - name: IMMICH_MACHINE_LEARNING_URL
+          value: http://preview-immich-release-machine-learning:3003
+        - name: LOG_LEVEL
+          value: verbose
+        - name: REDIS_HOSTNAME
+          value: preview-immich-release-redis-master
+        - name: TRANSFORMERS_CACHE
+          value: /cache
+        ports:
+        - name: http
+          containerPort: 3003
+          protocol: TCP
+        volumeMounts:
+        - name: cache
+          mountPath: /cache
+        livenessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        readinessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        startupProbe:
+          failureThreshold: 60
+          httpGet:
+            path: /ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+      volumes:
+      - name: cache
+        emptyDir: {}
+
--- HelmRelease: preview/preview-immich-release Deployment: preview/preview-immich-release-server

+++ HelmRelease: preview/preview-immich-release Deployment: preview/preview-immich-release-server

@@ -0,0 +1,95 @@

+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: preview-immich-release-server
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: server
+spec:
+  revisionHistoryLimit: 3
+  replicas: 1
+  strategy:
+    type: Recreate
+  selector:
+    matchLabels:
+      app.kubernetes.io/name: server
+      app.kubernetes.io/instance: preview-immich-release
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/name: server
+        app.kubernetes.io/instance: preview-immich-release
+    spec:
+      serviceAccountName: default
+      automountServiceAccountToken: true
+      dnsPolicy: ClusterFirst
+      enableServiceLinks: true
+      containers:
+      - name: preview-immich-release-server
+        image: ghcr.io/immich-app/immich-server:main
+        imagePullPolicy: Always
+        env:
+        - name: DB_DATABASE_NAME
+          valueFrom:
+            secretKeyRef:
+              key: dbname
+              name: preview-immich-release-app
+        - name: DB_HOSTNAME
+          valueFrom:
+            secretKeyRef:
+              key: host
+              name: preview-immich-release-superuser
+        - name: DB_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              key: password
+              name: preview-immich-release-superuser
+        - name: DB_USERNAME
+          valueFrom:
+            secretKeyRef:
+              key: user
+              name: preview-immich-release-superuser
+        - name: IMMICH_MACHINE_LEARNING_URL
+          value: http://preview-immich-release-machine-learning:3003
+        - name: LOG_LEVEL
+          value: verbose
+        - name: REDIS_HOSTNAME
+          value: preview-immich-release-redis-master
+        ports:
+        - name: http
+          containerPort: 2283
+          protocol: TCP
+        volumeMounts:
+        - name: library
+          mountPath: /usr/src/app/upload
+        livenessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /api/server/ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        readinessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /api/server/ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+        startupProbe:
+          failureThreshold: 30
+          httpGet:
+            path: /api/server/ping
+            port: http
+          initialDelaySeconds: 0
+          periodSeconds: 10
+          timeoutSeconds: 1
+      volumes:
+      - name: library
+        persistentVolumeClaim:
+          claimName: preview-immich-release-library
+
--- HelmRelease: preview/preview-immich-release StatefulSet: preview/preview-immich-release-redis-master

+++ HelmRelease: preview/preview-immich-release StatefulSet: preview/preview-immich-release-redis-master

@@ -0,0 +1,167 @@

+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: preview-immich-release-redis-master
+  namespace: preview
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: redis
+    app.kubernetes.io/component: master
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: preview-immich-release
+      app.kubernetes.io/name: redis
+      app.kubernetes.io/component: master
+  serviceName: preview-immich-release-redis-headless
+  updateStrategy:
+    type: RollingUpdate
+  template:
+    metadata:
+      labels:
+        app.kubernetes.io/instance: preview-immich-release
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: redis
+        app.kubernetes.io/component: master
+      annotations:
+        checksum/configmap: 86bcc953bb473748a3d3dc60b7c11f34e60c93519234d4c37f42e22ada559d47
+        checksum/health: aff24913d801436ea469d8d374b2ddb3ec4c43ee7ab24663d5f8ff1a1b6991a9
+        checksum/scripts: 43cdf68c28f3abe25ce017a82f74dbf2437d1900fd69df51a55a3edf6193d141
+        checksum/secret: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
+    spec:
+      securityContext:
+        fsGroup: 1001
+        fsGroupChangePolicy: Always
+        supplementalGroups: []
+        sysctls: []
+      serviceAccountName: preview-immich-release-redis-master
+      automountServiceAccountToken: false
+      affinity:
+        podAffinity: null
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+          - podAffinityTerm:
+              labelSelector:
+                matchLabels:
+                  app.kubernetes.io/instance: preview-immich-release
+                  app.kubernetes.io/name: redis
+                  app.kubernetes.io/component: master
+              topologyKey: kubernetes.io/hostname
+            weight: 1
+        nodeAffinity: null
+      enableServiceLinks: true
+      terminationGracePeriodSeconds: 30
+      containers:
+      - name: redis
+        image: docker.io/bitnami/redis:7.2.5-debian-12-r0
+        imagePullPolicy: IfNotPresent
+        securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            drop:
+            - ALL
+          readOnlyRootFilesystem: true
+          runAsGroup: 1001
+          runAsNonRoot: true
+          runAsUser: 1001
+          seLinuxOptions: {}
+          seccompProfile:
+            type: RuntimeDefault
+        command:
+        - /bin/bash
+        args:
+        - -c
+        - /opt/bitnami/scripts/start-scripts/start-master.sh
+        env:
+        - name: BITNAMI_DEBUG
+          value: 'false'
+        - name: REDIS_REPLICATION_MODE
+          value: master
+        - name: ALLOW_EMPTY_PASSWORD
+          value: 'yes'
+        - name: REDIS_TLS_ENABLED
+          value: 'no'
+        - name: REDIS_PORT
+          value: '6379'
+        ports:
+        - name: redis
+          containerPort: 6379
+        livenessProbe:
+          initialDelaySeconds: 20
+          periodSeconds: 5
+          timeoutSeconds: 6
+          successThreshold: 1
+          failureThreshold: 5
+          exec:
+            command:
+            - sh
+            - -c
+            - /health/ping_liveness_local.sh 5
+        readinessProbe:
+          initialDelaySeconds: 20
+          periodSeconds: 5
+          timeoutSeconds: 2
+          successThreshold: 1
+          failureThreshold: 5
+          exec:
+            command:
+            - sh
+            - -c
+            - /health/ping_readiness_local.sh 1
+        resources:
+          limits:
+            cpu: 150m
+            ephemeral-storage: 1024Mi
+            memory: 192Mi
+          requests:
+            cpu: 100m
+            ephemeral-storage: 50Mi
+            memory: 128Mi
+        volumeMounts:
+        - name: start-scripts
+          mountPath: /opt/bitnami/scripts/start-scripts
+        - name: health
+          mountPath: /health
+        - name: redis-data
+          mountPath: /data
+        - name: config
+          mountPath: /opt/bitnami/redis/mounted-etc
+        - name: empty-dir
+          mountPath: /opt/bitnami/redis/etc/
+          subPath: app-conf-dir
+        - name: empty-dir
+          mountPath: /tmp
+          subPath: tmp-dir
+      volumes:
+      - name: start-scripts
+        configMap:
+          name: preview-immich-release-redis-scripts
+          defaultMode: 493
+      - name: health
+        configMap:
+          name: preview-immich-release-redis-health
+          defaultMode: 493
+      - name: config
+        configMap:
+          name: preview-immich-release-redis-configuration
+      - name: empty-dir
+        emptyDir: {}
+  volumeClaimTemplates:
+  - apiVersion: v1
+    kind: PersistentVolumeClaim
+    metadata:
+      name: redis-data
+      labels:
+        app.kubernetes.io/instance: preview-immich-release
+        app.kubernetes.io/name: redis
+        app.kubernetes.io/component: master
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 8Gi
+
--- HelmRelease: preview/preview-immich-release Ingress: preview/preview-immich-release-server

+++ HelmRelease: preview/preview-immich-release Ingress: preview/preview-immich-release-server

@@ -0,0 +1,29 @@

+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: preview-immich-release-server
+  labels:
+    app.kubernetes.io/instance: preview-immich-release
+    app.kubernetes.io/managed-by: Helm
+    app.kubernetes.io/name: server
+  annotations:
+    cert-manager.io/cluster-issuer: letsencrypt-staging
+    nginx.ingress.kubernetes.io/proxy-body-size: '0'
+spec:
+  tls:
+  - hosts:
+    - release-preview.internal.immich.cloud
+    secretName: preview-immich-release-tls
+  rules:
+  - host: release-preview.internal.immich.cloud
+    http:
+      paths:
+      - path: /
+        pathType: Prefix
+        backend:
+          service:
+            name: preview-immich-release-server
+            port:
+              number: 2283
+

@bo0tzz bo0tzz marked this pull request as ready for review January 22, 2025 20:33
Copy link
Contributor

@jrasm91 jrasm91 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bo0tzz bo0tzz merged commit 9cfabb3 into main Jan 22, 2025
2 checks passed
@bo0tzz bo0tzz deleted the feat/testing-instances branch January 22, 2025 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants