Redis Insight 설치하기

링키텍트·2025년 3월 28일
post-thumbnail

목적

  1. Redis의 상태를 직관적으로 모니터링하고 관리하기 위해 사용합니다.
  2. Key-Value 데이터를 쉽게 조회하고, 데이터 변경 및 삭제 작업을 편리하게 수행하기 위해 활용됩니다.
  3. 성능 분석 및 최적화를 통해 Redis의 효율적인 운영을 지원합니다.

Redis Insight를 사용하는 이유

  1. GUI 기반 도구로 CLI 없이도 Redis 데이터를 쉽게 탐색하고 관리할 수 있습니다.
  2. 실시간으로 Redis 성능 지표를 확인하고 문제를 빠르게 진단할 수 있습니다.
  3. 복잡한 명령어 없이도 데이터 시각화 및 성능 튜닝이 가능하여 운영 효율성을 높입니다.


1.Redis Insight 설치하기

Redis 모니터링을 위한 UI 툴인 Redis Insight를 설치합니다.

1.1 Redis Insight yaml 파일 작성하기

저는 테스트이기 때문에 퍼블릭 이미지를 가져와서 작업했습니다.
그리고 IP는 0.0.0.0으로 설정하여 외부 어디에서건 접근 가능하도록 설정했습니다.
추후 고도화 시에 IP를 제한하는 작업을 하려 합니다.

  # redis-insight-deployment.yaml
  
  namespace: redis
  name: redis-insight
  labels:
    app: redis-insight
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-insight
  template:
    metadata:
      labels:
        app: redis-insight
    spec:
      containers:
        - name: redis-insight
          image: redislabs/redisinsight:latest
          ports:
            - containerPort: 5540
          env:
            - name: RI_APP_HOST
              value: "0.0.0.0"
            - name: RI_APP_PORT
              value: "5540"
      imagePullSecrets:
        - name: regcred
---
apiVersion: v1
kind: Service
metadata:
  name: redis-insight-service
  namespace: redis
spec:
  selector:
    app: redis-insight
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5540
  type: ClusterIP

1.2 Redis Insight yaml 배포하기

yaml 파일을 만들었으니 배포해야죠!

kubectl apply -f redis-insight-deployment.yaml

1.3 Redis Insight Pod 정상 확인

아래 이미지와 같이 redis Namespace 대상을 설치가 됐다면 redis-insight 설치는 완료되었습니다.



2. Ingress ALB와 연결하기

Redis Insight를 외부에서 접근하기 위해서는 Public한 자원에 올리던지, Ingress ALB를 통해 접근하던지 2가지의 방법이 있습니다. 저는 Private한 자원에 설치 했기 때문에 Ingress ALB를 통한 접근이 필요합니다.

2.1 Ingress 리소스 생성

저는 간단한 테스트를 위해 80포트로만 통신할 예정이라 80 포트를 사용하는 yaml 파일을 작성했습니다. ALB_DNS_Name에 EKS Ingress ALB의 DNS Name을 넣어줍니다.

# redis-insight-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: redis
  name: redis-insight-ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
spec:
  rules:
    - host: <ALB_DNS_Name>
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redis-insight-service
                port:
                  number: 5540

2.2 Ingress yaml 파일 배포

kubectl apply -f redis-insight-ingress.yaml

2.3 ALB 주소 확인

정상적으로 배포되었는지 확인하고 마무리합니다.

kubectl get ingress -n redis

3. 도메인을 통한 UI 접속

ALB 도메인을 통해 Redis Insight 접속을 시도해봅니다.

3.1 Target Group 생성

아래 옵션을 선택하여 TG을 생성합니다.

  • IP Addresses 선택
    -HTTP
    -5440
    -EKS와 동일한 VPC

3.2 Target 연결

Target IP를 연결할 때는 EKS의 노드가 아닌 POD의 IP를 연결해줘야합니다.
-o wide 명령어를 통해 POD IP를 알아냅니다. Register하면 끝!

kubectl get po -n redis -o wide

3.3 ALB에 TG 붙이기

아래 이미지와 같이 특정 도메인을 붙여 복잡한 DNS Name으로 접근 하는 것이 아닌 지정한 도메인을 통한 접근이 되게 합니다.



Redis Insight UI 접속

완료!!! Redis-insight 도메인으로 접속 시에 정상 통신 되는 것을 확인 합니다.
제가 설치에 대한 부분만 넣고 ALB, EKS 방화벽에 대한 부분은 생략하였는데요.

포트별 흐름을 간단히 정리해봤습니다. 상세 내용은 아래 설명을 읽어주세요.
사용자 → ALB(80) → EKS (5540) → Kafka (5540)

사용자 (80)
사용자가 웹 브라우저나 HTTP 클라이언트를 통해 포트 80을 사용하여 접속합니다.
이때 사용자가 접속하는 도메인(예: redis-ui.example.com)을 통해 ALB로 요청이 전달됩니다.
ALB (80)
ALB(AWS Application Load Balancer)는 외부에서 들어오는 트래픽을 받아서, 내부 EKS 클러스터로 전달합니다.
ALB는 80번 포트로 요청을 받아서, EKS에 설정된 Ingress 리소스를 통해 redis-insight-service로 요청을 포워딩합니다.
EKS (5540)
EKS에서 Ingress Controller가 ALB로부터 받은 요청을 처리하고, 해당 요청을 redis-insight-service로 전달합니다. redis-insight-service는 내부에서 5540번 포트를 사용하고, ALB는 80번 포트로 외부와 통신하므로, ALB는 요청을 80번 포트로 받고, EKS의 서비스는 5540번 포트로 처리합니다.
RedisInsight Pod (5540)
redis-insight-service는 5540번 포트에서 Redis Insight UI를 제공하고 있습니다.
EKS에서 서비스가 해당 포트를 사용하여 Redis와 연결된 UI 서비스를 제공하고, 데이터를 처리합니다.

0개의 댓글