[Rocky Linux9] 한정된 리소스 환경에서 Helm으로 Redis 설치하기

 

현재 홈서버의 자원이 한정적이어서 최대한 효율적으로 사용할 수 있도록 설정을 최적화했습니다.
테스트용 자원 할당량이니 참고해주세요.

 

1. Helm 차트 준비

Helm은 쿠버네티스 애플리케이션을 손쉽게 배포하고 관리할 수 있도록 해주는 도구로, Redis와 같은 복잡한 애플리케이션도 빠르게 배포할 수 있습니다. 우선, Redis Helm 차트를 사용하기 위해 저장소를 추가하고 업데이트합니다.

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

 

2. redis-values.yaml 파일 구성

Redis 설치 시 다양한 커스텀 설정을 추가하기 위해 redis-values.yaml 파일을 작성합니다. 

architecture: standalone

global:
  storageClass: "nfs-storage"

## Persistent Volume 설정
primary:
  persistence:
    enabled: true
    size: 1Gi  # Persistent storage 크기 설정

## 메모리 및 CPU 리소스 설정
  resources:
    limits:
      memory: 128Mi  # 최대 메모리 사용량 제한
      cpu: 200m      # 최대 CPU 사용량 제한
    requests:
      memory: 64Mi  # 요청 메모리 할당량
      cpu: 50m      # 요청 CPU 할당량
  • architecture: standalone으로 설정하여 단일 인스턴스로 배포합니다.
  • global.storageClass: nfs-storage로 설정하여 NFS를 통한 영구 스토리지를 사용합니다.
  • primary.persistence.size: 데이터 저장 공간을 1Gi로 제한합니다.
  • resources: 메모리와 CPU 제한을 설정하여 테스트 환경에서 서버 자원을 효율적으로 사용합니다.

 

3. Helm을 이용해 Redis 설치

위에서 작성한 redis-values.yaml 파일을 사용해 Redis를 설치합니다.

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

 

설치 후 Helm은 배포 상태와 접속 방법에 대한 메시지를 출력합니다.

 

NAME: my-redis
LAST DEPLOYED: Mon Oct 28 09:41:49 2024
NAMESPACE: redis
STATUS: deployed
REVISION: 1

...

 

설치가 완료되면 Redis의 기본 정보와 함께 Redis에 접속하는 방법이 표시됩니다.

 

4. Redis 서버 접속

Redis에 접속하려면 먼저 인증 정보와 클라이언트 환경이 필요합니다.

 

4.1 Redis 비밀번호 가져오기

비밀번호는 REDIS_PASSWORD 환경 변수로 설정됩니다. 다음 명령을 실행하여 비밀번호를 가져옵니다.

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

 

4.2 Redis 클라이언트 Pod 생성

쿠버네티스 환경 내에서 Redis에 접속하려면 Redis 클라이언트 Pod를 생성하고 접근할 수 있도록 합니다.

kubectl run --namespace redis redis-client --restart='Never' \
  --env REDIS_PASSWORD=$REDIS_PASSWORD \
  --image docker.io/bitnami/redis:7.4.1-debian-12-r0 --command -- sleep infinity

 

클라이언트 Pod가 생성되면, 다음 명령으로 접속하여 Redis CLI를 실행할 수 있습니다.

 

kubectl exec --tty -i redis-client --namespace redis -- bash

 

4.3 Redis CLI로 접속

이제 Redis CLI를 통해 Redis 서버에 접속할 수 있습니다.

비밀번호 인증을 위해 REDISCLI_AUTH 환경 변수를 설정한 후 접속합니다.

REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h my-redis-master

 

이 명령어가 성공적으로 실행되면 Redis 프롬프트가 열리며, Redis 명령어를 직접 실행할 수 있습니다.

 

5. 마스터 노드에서 Redis 접속하기

외부에서 Redis에 접속하려면 포트 포워딩과 Redis CLI 설치가 필요합니다.

5.1 서비스 포트 포워딩

먼저 포트 포워딩을 통해 로컬 환경에서 Redis에 접근할 수 있도록 설정합니다.

kubectl port-forward --namespace redis svc/my-redis-master 6379:6379

 

5.2 원격 서버에 Redis CLI 설치

접속하려는 로컬 서버에 Redis CLI가 설치되어 있지 않다면, Redis CLI를 설치합니다.

sudo yum install -y redis

 

5.3 Redis CLI로 접속

포트 포워딩이 활성화된 상태에서 다음 명령으로 Redis 서버에 접속합니다.

REDISCLI_AUTH="$REDIS_PASSWORD" redis-cli -h 127.0.0.1 -p 6379

 

6. 테스트 명령어

Redis CLI에 접속한 후, Redis가 정상적으로 작동하는지 몇 가지 명령어로 확인해 볼 수 있습니다.

127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET testKey "Hello, Redis!"
OK
127.0.0.1:6379> GET testKey
"Hello, Redis!"
127.0.0.1:6379> KEYS *
1) "testKey"
127.0.0.1:6379> DEL testKey
(integer) 1
  • PING: Redis 서버의 상태를 확인하는 명령어로, PONG 응답이 오면 정상입니다.
  • SETGET: 키-값을 저장하고 조회하는 명령어로, Redis의 기본 데이터 저장 기능을 확인할 수 있습니다.
  • KEYS *: Redis에 저장된 모든 키를 조회합니다.
  • DEL: 특정 키를 삭제합니다.

 

마무리

이 글에서는 Helm을 사용하여 Redis를 커스텀 설정으로 쿠버네티스에 배포하고, NFS 스토리지와 리소스 제한을 통해 홈 서버 환경에 최적화하는 방법을 살펴보았습니다. Redis CLI를 사용하여 기본적인 기능을 테스트하는 과정도 함께 다뤘습니다. 이러한 커스텀 설정을 통해 필요한 리소스에 맞춰 효율적인 Redis 환경을 구축할 수 있습니다.