쿠버네티스(K8S) 환경에서 Immich 설치하기

2025. 1. 23. 11:37·Kubernetes
728x90
반응형

개요

홈서버에서 쿠버네티스를 운용하는 건 흔치 않지만, 마침 제가 실험적으로 운용하고 있어서 포스팅합니다.

환경은 Proxmox에 마스터 노드 3대, 워커 노드 3대의 Rocky Linux로 이루어진 클러스터이며, 사용되는 저장소는 csi-driver-smb를 이용해 TrueNAS로부터 마운트한 삼바공유 저장소입니다.

MetalLB를 이용하여 사설망IP를 할당하고 있으며, Ingress-nginx를 이용해 외부 도메인을 연동하고 있습니다.

 

Helm Chart로 설치하기

TrueNAS가 아닌, 일반적인 쿠버네티스 환경에서 헬름으로 설치할 수도 있습니다.

 

Library PVC 준비

Immich는 사진이 저장되는 Library에 대해 동적 생성을 지원하지 않고 아래처럼 PVC를 미리 생성하여 매칭하도록 되어 있습니다.

TrueNAS에 Photos로 SMB공유를 생성하고 csi-driver-smb를 이용해 PV/PVC를 생성해 주겠습니다.

spec.csi.volumeAttributes.source의 SMB공유경로를 개별 환경에 맞게 수정해야 합니다.

spec.capacitry.storage의 용량은 신경쓰지 않아도 됩니다. NFS나 SMB는 지정된 크기는 무시하고 파일시스템 상 사용할 수 있는 용량을 사용하기 때문입니다.

#smb-photos.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: smb-truenas-photo
spec:
  capacity:
    storage: 1Gi  # 필요한 크기로 설정
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: smb.csi.k8s.io
    volumeHandle: smb-truenas-photo
    volumeAttributes:
      source: "//10.10.10.10/photos"
    nodeStageSecretRef:
      name: smbcreds
      namespace: default
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: smb-truenas-photo
  namespace: immich
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  volumeName: smb-truenas-photo

spec.csi.nodeStageSecretRef의 smbcreds는 csi를 이용해 smb를 사용할 때마다 사용될 ID/PW를 포함하고, PV혹은 SC를 생성할 때 이용합니다.

맨 아래 username과 password는 실제 SMB인증에 사용되는 ID와 PW를 암호화해서 집어넣습니다.

echo -n "username" | base64
echo -n "password" | base64
# smbcreds.yaml

apiVersion: v1
kind: Secret
metadata:
  name: smbcreds
  namespace: default
type: Opaque
data:
  username: 
  password: 

작성이 끝난 파일을 적용합니다.

kubectl create ns immich
kubectl apply -f smbcreds.yaml
kubectl apply -f smb-photos.yaml

 

Immich 설치하기

먼저 헬름 차트를 추가합니다.

helm repo add immich https://immich-app.github.io/immich-charts
helm repo update

values.yaml는 아래와 같이 확인할 수 있습니다.

helm show values immich/immich >> values.yaml

nano등의 편집기를 활용할 수도 있지만, 삼바 공유를 통해 VSCode등을 이용해 보시면 향후 업데이트 시에도 값을 비교해서 보는 등 더 편리하게 환경을 꾸릴 수 있습니다.

먼저 변경해야 하는 값들은 아래와 같습니다.

그리고 쿠버네티스 환경 내 default로 지정된 storageClass가 있다면 문제없이 진행이 되겠지만, 제 경우 default strorageClass가 없어 immich-server와 redis 컨테이너가 pending되는 문제가 있었습니다.

그래서 아래 사진과 같이 직접 해당 부분의 persistence를 지정했습니다.

postgresql:
  primary:
    persistence:
      enabled: true
      storageClass: nfs-truenas-db
      accessModes:
        - ReadWriteOnce
      size: 10Gi
redis:
  master:
    persistence:
     enabled: true
     storageClass: nfs-truenas-data
     accessModes:
       - ReadWriteOnce
     size: 8Gi

작성이 끝났다면 파일을 저장하고 설치를 시작합니다.

helm install immich immich/immich -f values.yaml -n immich

초기생성되는 파드를 지켜보려면 아래처럼 입력합니다.

kubectl get pods -n immich -o wide --watch

파드 생성이 완료되었다면 LoadBalancerIP:2283이나 Ingress로 접속하여 초기 설정을 진행할 수 있게 됩니다.

 

이후 실사용에 대한 부분은 아래 글을 참조해 주세요.

2025.01.23 - [Apps] - Immich로 시놀로지 포토 대체하기

 

Immich로 시놀로지 포토 대체하기

2024년 10월 30일 변경 내용 : TrueNAS가 24.10업데이트 대응 docker compose 설치방법 추가2025년 1월 22일 변경 내용 : 쿠버네티스 설치 내용 분리, 일반 docker compose내용 추가개요사진과 비디오를 동기화하

worklazy.net

 

 

출처

1. https://github.com/immich-app/immich-charts/blob/main/README.md

 

immich-charts/README.md at main · immich-app/immich-charts

Helm chart implementation of Immich. Contribute to immich-app/immich-charts development by creating an account on GitHub.

github.com

728x90
반응형
'Kubernetes' 카테고리의 다른 글
  • Kubespray를 이용하여 K8S 클러스터 업그레이드 하기
  • 쿠버네티스 Error, Completed파드 전체 지우기
  • 홈서버에서 쿠버네티스 사용을 위한 기본 환경 구성하기
  • Kubespray로 쿠버네티스(Kubernetes, K8S) 설치하기
펜타네스트
펜타네스트
하라는 일은 안하고 월급루팡하고 싶은 직장인의 취미 기록장
    반응형
    250x250
  • 펜타네스트
    월급루팡의 꿈
    펜타네스트
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Apps (17)
      • Homeserver (8)
      • Kubernetes (5)
      • Nextcloud (7)
      • Proxmox (4)
      • TrueNAS (12)
      • Torrent (7)
      • ETC (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • 월급루팡의 꿈
    • 월급루팡의 일상
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
펜타네스트
쿠버네티스(K8S) 환경에서 Immich 설치하기
상단으로

티스토리툴바