Kubernetes에서 Redis 클러스터 및 RedisInsight 빠르게 배포하기

Redis 클러스터

배치 방법

Bitnami 헬 차트를 사용하여 Kubernetes의 redis 네임스페이스에 Redis 클러스터를 단일 명령으로 배치할 수 있습니다.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install -n redis production bitnami/redis-cluster

생성된 Redis 비밀번호 확인

헬 차트 배치는 Redis 클러스터에 대한 임의의 비밀번호를 생성합니다. 다음 명령어를 통해 비밀번호를 확인할 수 있습니다:

export REDIS_PASSWORD=$(kubectl get secret --namespace redis production-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)

values.yaml 사용자 정의

기본 Redis 클러스터 헬 차트 구성이 사용 사례에 최적화되지 않을 수 있으므로 사용자 정의가 필요합니다.

공식 기본 구성:

https://github.com/bitnami/charts/blob/master/bitnami/redis-cluster/values.yaml

values.yaml의 로컬 복사본을 만드세요. values.yaml의 내용을 수정하고 다음 명령을 실행하여 구성 변경 사항을 Redis 클러스터에 적용할 수 있습니다:

helm upgrade -n redis -f values.yaml production

values.yaml에는 사용자 정의할 수 있는 많은 구성 옵션이 있습니다. 다음은 간단한 예시입니다:

cluster:
  init: true
  ## nodes: 복제본을 포함한 노드 총수입니다.
  ## 이는 3개의 마스터 노드와 3개의 복제본 노드가 있음을 의미합니다
  ## (replicas 기본값이 1이므로 각 마스터 노드에는 1개의 복제본이 있음).
  ## 따라서 nodes = numberOfMasterNodes + numberOfMasterNodes * replicas
  nodes: 6
  replicas: 1

RedisInsight

RedisInsight를 통한 Redis 클러스터 관리

우리는 redis-cli 명령줄 도구를 사용하여 Redis 클러스터와 상호작용하는 것을 선호하며 효율적입니다. 하지만 웹 UI를 사용하면 동일한 작업을 더 직관적이고 효율적으로 수행할 수 있습니다. RedisLab에서 개발한 RedisInsight를 선택합니다. 웹 UI를 Kubernetes에 Deployment로 배치할 수 있습니다. 다음은 RedisLab 공식 문서에서 약간 수정한 버전입니다. 주요 차이점은 재시작 시 구성이 손실되지 않도록 PVC(영구 볼륨 요청)를 추가한 것입니다:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redisinsight-pv-claim
  labels:
    app: redisinsight
    namespace: redis
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redisinsight
  namespace: redis
  labels:
    app: redisinsight
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redisinsight
  template:
    metadata:
      labels:
        app: redisinsight
    spec:
      containers:
      - name: redisinsight
        image: redislabs/redisinsight:1.9.0
        imagePullPolicy: IfNotPresent
        securityContext:
          runAsUser: 0
        volumeMounts:
        - name: db
          mountPath: /db
        ports:
        - containerPort: 8001
          protocol: TCP
      volumes:
      - name: db
        persistentVolumeClaim:
          claimName: redisinsight-pv-claim

위 YAML을 redisinsight.yaml로 저장하고 다음 명령을 실행하여 Kubernetes에 배치합니다:

kubectl apply -f redisinsight.yaml

배치가 완료되면 다음을 실행하여 포트 포워딩을 설정합니다:

kubectl port-forward deployment/redisinsight -n redis 8001

그런 다음 웹 브라우저에서 http://localhost:8001을 열어 RedisInsight 웹 UI에 접근할 수 있습니다. UI에서 "Connect to a Redis Database" 버튼을 클릭하면 다음 팝업 창이 나타납니다:

호스트는 Kubernetes 콘솔에서 사용 가능한 Redis 클러스터 서비스의 IP 값입니다. 포트는 기본 Redis 포트인 6379입니다. 사용자 이름 기본값은 "default"입니다. 이름은 원하는 이름으로 설정할 수 있습니다. 이전 섹션에서 설명한 대로 kubectl 명령줄에서 비밀번호를 검색해야 합니다. "ADD REDIS DATABASE" 버튼을 클릭하면 모든 Redis 클러스터 구성원을 시드 노드로 선택하여 클러스터에 연결하라는 메시지가 표시됩니다. 전체 또는 그 중 하나를 선택할 수 있습니다. 연결 구성이 완료되면 방금 설치한 Redis 클러스터를 보고 관리할 수 있는 완전한 기능의 웹 UI에 접근할 수 있어야 합니다.

위 스크린샷에서 볼 수 있듯이, 방금 구성한 Redis 클러스터에는 3개의 마스터 노드와 3개의 슬레이브 노드가 있습니다. 각 파티션에 있는 키 수와 사용 중인 메모리 양도 표시됩니다.

태그: kubernetes Redis RedisInsight helm Bitnami

7월 18일 01:00에 게시됨