현재 홈서버의 자원이 한정적이어서 최대한 효율적으로 사용할 수 있도록 설정을 최적화했습니다.
테스트용 자원 할당량이니 참고해주세요.
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
응답이 오면 정상입니다.SET
및GET
: 키-값을 저장하고 조회하는 명령어로, Redis의 기본 데이터 저장 기능을 확인할 수 있습니다.KEYS *
: Redis에 저장된 모든 키를 조회합니다.DEL
: 특정 키를 삭제합니다.
마무리
이 글에서는 Helm을 사용하여 Redis를 커스텀 설정으로 쿠버네티스에 배포하고, NFS 스토리지와 리소스 제한을 통해 홈 서버 환경에 최적화하는 방법을 살펴보았습니다. Redis CLI를 사용하여 기본적인 기능을 테스트하는 과정도 함께 다뤘습니다. 이러한 커스텀 설정을 통해 필요한 리소스에 맞춰 효율적인 Redis 환경을 구축할 수 있습니다.
'프로젝트 > 프로젝트 과정' 카테고리의 다른 글
[Spring] 기본 자료형이 아닌 구체적인 자료형 생성하기 (0) | 2024.11.02 |
---|---|
Kubernetes 환경에서 Spring Boot 애플리케이션 모니터링하기: Prometheus와 Grafana 설정 가이드 (1) | 2024.11.01 |
[Prometheus] Kubernetes 환경에서 Kafka 모니터링 구축하기 (by Kafka Exporter) (0) | 2024.10.26 |
[Rocky Linux 9] 한정된 리소스 환경에서 Kubernetes 기반 Kafka 설치 및 설정하기 (0) | 2024.10.26 |
[사이드 프로젝트] 한정 수량 인기 상품 구매 서비스 만들기: 요구 사항 (0) | 2024.09.26 |