💡

クラウドサービス上のRedisデータをGUIで確認/操作する

2023/12/25に公開

やりたいこと

stg環境などのデバッグをしていると、webアプリケーションで利用しているRedisの中のデータを確認したくなる。
AWSはわからないが少なくともGCPではRedisの中のデータを確認するサービスはないのでいい感じにGUIで触れる仕組みは自分で構築しないといけない。
webアプリケーションのexample.com/redisのようなパスで以下のようなGUIを表示できたら色々と便利そうな気がする。

方法

類似ツールはいくつかありますが本記事ではシンプルなRedis Commanderを使います。

下記のリソースをデプロイしてください。
Gateway API + GCP NEGを利用した例になるので、使っていない場合はDeploymentとServiceだけで大丈夫です。
NEGのように必ずhealthcheckを求められる場合は、パスを/redis/favicon.pngとするのがポイントです。
また、今回のように/redisのように特定のパスで開きたい場合は環境変数URL_PREFIXが必要です。
REDIS_HOSTSなどはご自身の環境に応じて変更してください。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: redis-commander
  name: redis-commander
  namespace: NAMESPACE
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-commander
  strategy: {}
  template:
    metadata:
      labels:
        app: redis-commander
    spec:
      containers:
      - image: ghcr.io/joeferner/redis-commander:latest
        imagePullPolicy: IfNotPresent
        name: redis-commander
        ports:
        - containerPort: 8081
          protocol: TCP
        env:
        - name: REDIS_HOSTS
          value: DB0:redis:6379:0,DB1:redis:6379:1,DB2:redis:6379:2,DB3:redis:6379:3
        - name: URL_PREFIX
          value: /redis
        resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: redis-commander
  namespace: NAMESPACE
spec:
  ports:
  - name: http-port
    port: 8081
    protocol: TCP
    targetPort: 8081
  selector:
    app: redis-commander
  type: ClusterIP
---
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: redis-commander
  namespace: NAMESPACE
spec:
  targetRef:
    group: ""
    kind: Service
    name: redis-commander
---
apiVersion: networking.gke.io/v1
kind: HealthCheckPolicy
metadata:
  name: redis-commander
  namespace: NAMESPACE
spec:
  default:
    checkIntervalSec: 10
    config:
      httpHealthCheck:
        port: 8081
        requestPath: /redis/favicon.png
      type: HTTP
    healthyThreshold: 2
    timeoutSec: 10
    unhealthyThreshold: 2
  targetRef:
    group: ""
    kind: Service
    name: redis-commander

あとは適宜HTTPRouteなりIngressなりにパスを追加してください。

Discussion