Redis Insight Kubernetes 배포
지난 포스트 에서 Redis Cluster를 배포하였습니다.
https://jeongchul.tistory.com/725
이번 포스트에서는 위에서 배포한 Redis Cluster와 연동된 Redis Insight를 배포하겠습니다.
- Redis의 데이터를 최적화하고 가시화할 수 있는 GUI 인터페이스입니다.
- https://redis.io/insight/
- Reference: https://redis.io/insight/
Kubernetes 배포
저는 도메인을 등록하여 사용할 예정이라 Certificate, Gateway 설정을 해두었습니다.
다음의 내용을 참고해주세요!
https://jeongchul.tistory.com/721
VirtualService
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: vs-redis-insight
namespace: redis
spec:
gateways:
- default/cluster-gateway
hosts:
- [YOUR_DOMAIN]
http:
- corsPolicy:
allowHeaders:
- authorization
- content-Type
- accept
allowMethods:
- POST
- GET
- DELETE
- PUT
- OPTIONS
allowOrigins:
- regex: .*
exposeHeaders:
- authorization
- location
maxAge: 24h
match:
- uri:
prefix: /
route:
- destination:
host: redisinsight-service.redis.svc.cluster.local
port:
number: 80
위의 VirtualService를 배포합니다.
kubectl apply -f virtualservice.yaml
Service
apiVersion: v1
kind: Service
metadata:
labels:
app: redisinsight
name: redisinsight-service
namespace: redis
spec:
ports:
- appProtocol: http
port: 80
targetPort: 5540
selector:
app: redisinsight
위의 Service를 배포합니다.
kubectl apply -f service.yaml
PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redisinsight-pv-claim
namespace: redis
labels:
app: redisinsight
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: nfs
volumeMode: Filesystem
위의 PVC를 배포합니다.
kubectl apply -f pvc.yaml
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisinsight
namespace: redis
labels:
app: redisinsight
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: redisinsight
template:
metadata:
labels:
app: redisinsight
spec:
volumes:
- name: redisinsight
persistentVolumeClaim:
claimName: redisinsight-pv-claim
initContainers:
- name: init
image: busybox
command:
- /bin/sh
- '-c'
- |
chown -R 1000 /data
resources: {}
volumeMounts:
- name: redisinsight
mountPath: /data
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
containers:
- name: redisinsight
image: redis/redisinsight:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: redisinsight
mountPath: /data
ports:
- containerPort: 5540
protocol: TCP
위의 Deployment를 배포합니다.
kubectl apply -f deployment.yaml
도메인을 설정하셨거나 NodePort 주소로 웹 브라우저에서 이동합니다.
다음을 동의합니다.
- Enable Analytics
- Show notification
- I have read and understood the Terms
초기에 Redis database를 등록해야 합니다.
다음을 입력합니다.
- Host: redis-cluster-headless.redis.svc.cluster.local
- Port: 6379
- Database Alias: Redis Cluster
연결이 되었습니다.
Browser로 이동하면 Key를 확인할 수 있습니다.
Analysis Tool을 이용하면 Cluster의 세부정보를 확인할 수 있습니다.
Redis Insight의 경우 보안을 위한 ID/Password의 secure 설정이 불가하여 누구든 접속 가능하다는 문제가 있습니다..
다음을 참고하면 Nginx를 배포하여 ID/Password를 입력해 접근 시에 브라우저 상에서 패스워드를 입력하도록 가능하게 할 수 있습니다.
https://github.com/RedisInsight/RedisInsight-reverse-proxy
읽어주셔서 감사합니다!
'Redis' 카테고리의 다른 글
Redis의 LFU 정책 (0) | 2024.10.12 |
---|---|
Redis의 LRU 정책 (6) | 2024.10.12 |
Redis Value 최대 크기 (0) | 2024.10.12 |
음성 합성 모델(TTS) 서빙을 Redis를 활용해 효율적으로 서비스하기 (0) | 2024.10.12 |
Kubernetes Redis Cluster 설치 (0) | 2024.08.17 |