k8s redis cluster 구축 feat. helm

이동욱·2023년 9월 21일
0

k8s

목록 보기
3/3

k8s redis cluster 구축 feat. helm

1. 개요


현재 지원 중인 프로젝트가 k8s cluster 환경인데 클러스터에 올릴 서비스가 redis로 세션관리, 캐시, pubsub, ... 등등 사용해서 redis 서비스를 띄워야했다.
개발 환경이라면 그냥 stand alone으로 띄워도 되겠지만 추후 운영을 할 경우 성능이나 ha를 위해 redis cluster를 구축해야해서 구축하게 되었다.

2. 목차


  1. helm 설치
  2. redis-cluster chart custom
  3. pv 생성
  4. redis-cluster 생성
  5. test

3. 구축


  1. helm 설치
    먼저 helm이란 k8s가 사용하는 open source package manager이다.
    나는 삼성 클라우드 플랫폼 (이하 scp)를 사용했기 때문에 명령어로 helm을 설치했다.
    만약 직접 설치해야하는 경우 구글링하면 설치하는 sh파일이나 기타 방법 등등 많을테니 설치하자 !

  2. redis-cluster chart custom

  • bitnami/redis-cluster chart를 사용했다.
$ helm fetch bitnami/redis-cluster
$ tar -zxvf redis-cluster-9.0.5.tgz
$ vi redis-cluster/values.yaml

namespace: "test"
storageClass: "test-redis-cluster-sc
service:
  type: ClusterIP
  clusterIP: "xxx.xxx.xxx.xxx"
  • 나는 cluster ip를 고정적으로 사용하기 위해 해당 부분을 변경했다. 추가적으로 이미지, 포트 등등 수정할거면 자기 환경에 맞게 커스텀하면 된다.
  1. redis-cluster 생성
$ helm install -n test redis-cluster --set password=test /path/redis-cluster
  • --set password는 필요하면 적용하자 (redis의 password)
$ kubectl get svc -A
$ kubectl get po -A
  • 위 명령어로 확인해보면 정상적으로 만들어졌으나 pending 상태가 되있을 거다. 왜냐면 해당 chart에서 redis-cluster는 statefulset으로 만드는데 chart 중 redis-statefulset.yaml을 보면 StorageClass(이하 sc)를 사용하는데 sc가 없어서 그렇다. 대규모의 시스템은 아니기 때문에 auto scaling을 하진 않을거라 직접 pv를 만들었다
    • sc란 pv, pvc를 직접 설정하려면 수동으로 만들어야하지만 sc가 있으면 pvc가 요청을 보내면 자동적으로 pv를 만들어주는 것이다.
  1. pv 생성
$ vi redis-cluster-volume.yaml
$ kubectl apply -f redis-cluster-volume.yaml

  • redis cluster node(pod)가 6개기 때문에 6개의 pv를 만들어줬다.
  1. test
  • 확인
$ kubectl get svc -A
$ kubectl get po -A
  • test
    • 내 로컬 pc에서 redis cluster에 접속하고자 한다.
$ redis-cli.exe -a test -h 192.168.xxx.xxx -p 30000 -c

redis-cli) keys *

4. 고찰


redis cluster를 구축하려면 노드 간에 통신이 필요한데 기존의 deployment와 같은 것을 사용하면 ip, name 등이 계속 변하기 때문에 고유한 식별자를 제공해주는 statefulset과 headless service를 사용하는데 직접 사용하는 예시?를 보니 이 개념에 대해 사실 좀 헷갈렸는데 좋은 공부가 되었다 ... !!

profile
lduk 웹 개발자(back)

0개의 댓글