현재 지원 중인 프로젝트가 k8s cluster 환경인데 클러스터에 올릴 서비스가 redis로 세션관리, 캐시, pubsub, ... 등등 사용해서 redis 서비스를 띄워야했다.
개발 환경이라면 그냥 stand alone으로 띄워도 되겠지만 추후 운영을 할 경우 성능이나 ha를 위해 redis cluster를 구축해야해서 구축하게 되었다.
helm 설치
먼저 helm이란 k8s가 사용하는 open source package manager이다.
나는 삼성 클라우드 플랫폼 (이하 scp)를 사용했기 때문에 명령어로 helm을 설치했다.
만약 직접 설치해야하는 경우 구글링하면 설치하는 sh파일이나 기타 방법 등등 많을테니 설치하자 !
redis-cluster chart custom
$ 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"
$ helm install -n test redis-cluster --set password=test /path/redis-cluster
$ kubectl get svc -A
$ kubectl get po -A
$ vi redis-cluster-volume.yaml
$ kubectl apply -f redis-cluster-volume.yaml
$ kubectl get svc -A
$ kubectl get po -A
$ redis-cli.exe -a test -h 192.168.xxx.xxx -p 30000 -c
redis-cli) keys *
redis cluster를 구축하려면 노드 간에 통신이 필요한데 기존의 deployment와 같은 것을 사용하면 ip, name 등이 계속 변하기 때문에 고유한 식별자를 제공해주는 statefulset과 headless service를 사용하는데 직접 사용하는 예시?를 보니 이 개념에 대해 사실 좀 헷갈렸는데 좋은 공부가 되었다 ... !!