Kubernetes 기반 Redis 구성 (1/2)

이번 글은 기존 Infrastructer 기반 또는 Server에 Redis 를 master/slave로 구성하여 사용하였던 것을 k8s(Kubernetes) 기반으로 얼마나 쉽게 구성할 수 있는지 알아보겠습니다. 기존 public site의 redis는 deprecation 되어, bitnami 에 제공하는 redis helm chart를 기반으로 구성합니다.

1. pre-requisite

redis를 설치하기 이전에 helm 이 v2 또는 v3 이상 버번이 설치되어 있어야 합니다.

2. helm chart를 이용한 redis 환경 구성

bitnami 에서 제공하는 redis helm chart를 사용하기 위해 아래의 site로 이동합니다.

bitnami/redis

redis-01-github-url

3. repository 를 추가

helm repo add bitnami https://charts.bitnami.com/bitnami

[수행 결과]
bitnami” has been added to your repositories

4. redis 에 데이터를 저장할 dynamic pv(Persistent Volume) 설정

redis에서 데이터를 저장할 storage volume을 설정하기 위해 values.yaml을 redis-values.yaml로 download 하여 편집합니다.

values.yaml 클릭
redis-02-values-download

raw 버튼 클릭
redis-03-raw-click

클립보드 복사(ctrl + c) redis-04-select-all-values

vi redis-values.yaml


위에서 clipboard에 복사한 내용을 editor 창을 열어 붙여넣기를 합니다.

redis storage volume 설정을 위해 redis-values.yaml 파일 편집
storage volume은 자신의 kubernetes에 환경에 설정된 storage class로 설정합니다
redis-05-edit-redis-values-yaml

master node storageClass 설정
redis-06-set-master-storageclass

slave node storageClass 설정
redis-06-set-slave-node-storageclass

접속 보안을 위해 password 설정
[변경 전]
redis-07-set-password-to-redis

[변경 후]
redis-08-set-password

serviceAccount 설정
redis container가 수행하면서 storage에 접근해서 read/write 해야하기 때문에 redis-sa 라는 serviceAccount를 생성합니다.

[변경 전]
redis-11-edit-serviceaccount

[변경 후]
redis-12-add-serviceaccount

containerSecurityContext 설정
[변경 전]
redis-09.-edit-runasuser

[변경 후]
redis-10-edit-runasuser

5. redis master/slave 를 k8s 에 배포

helm tool을 이용하여 redis를 k8s에 배포합니다.

helm install redis -f redis-values.yaml bitnami/redis


[수행 결과]
redis-09-install-redis-to-k8s

6. k8s에 설치된 redis pods 목록 확인

위에 redis를 설치 후 redis가 정상적으로 master 1개 slave 2개가 배포되었는지 pod 목록을 확인합니다.

kubectl get pods -l app=redis


[수행결과]
redis-13-list-pods-on-k8s