# Helm 安装 Redis 集群

* 具有默认 sc 存储，如果没有则设置 persistenceEnabled: false

> 参考: <https://operatorhub.io/operator/redis-operator&#x20>;
>
> 参考: <https://ot-redis-operator.netlify.app/docs/overview/>

```bash
helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/
helm install redis-operator ot-helm/redis-operator --namespace ot-operators --create-namespace --version 0.19.2
kubectl describe --namespace ot-operators pods
kubectl get pods -n ot-operators
```

### 创建 redis-cluster 默认认证用户

```bash
kubectl create secret generic redis-secret \
  --from-literal=redis-password="T3BzdHJlZUAxMjM0Cg=" --namespace ot-operators
```

### 安装 redis-cluster 测试集群

```bash
helm install redis-cluster ot-helm/redis-cluster \
  --set redisCluster.clusterSize=3 \
  --set redisCluster.redisSecret.secretName=redis-secret \
  --set redisCluster.redisSecret.secretKey=redis-password \
  --set redisExporter.enabled=true \
  --namespace ot-operators  --version 0.16.5
```

### 临时在 kube-public 命名空间下启动客户端测试

```bash
kubectl run -it --rm --image=redis --restart=Never redis-client -n kube-public -- /bin/bash
```

### 集群内部访问

```bash
redis-cluster-leader-svc-0.ot-operators.svc.cluster.local:6379
redis-cluster-leader-svc-1.ot-operators.svc.cluster.local:6379
redis-cluster-leader-svc-2.ot-operators.svc.cluster.local:6379
```

同 VPC 下访问

要从同一 VPC 内访问 Redis 集群，请使用 nodeRedisSvc.yaml 文件中定义的 NodePort 服务。每个服务对应一个Redis领导节点，可以通过其各自的NodePort访问

* **redis-cluster-leader-svc-0**: Connect using `svc-ip:30025`
* **redis-cluster-leader-svc-1**: Connect using `svc-ip:30026`
* **redis-cluster-leader-svc-2**: Connect using `svc-ip:30027`

Ensure the `svc-ip` corresponds to the IP address of the node hosting the Kubernetes services.

```bash
root@test-jys:/tmp/test-redis# cat nodeRedisSvc.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis-cluster-leader-svc-0
  name: redis-cluster-leader-svc-0
  namespace: ot-operators
spec:
  ports:
  - name: redis-client
    port: 6379
    protocol: TCP
    targetPort: 6379
    nodePort: 30025
  selector:
    statefulset.kubernetes.io/pod-name: redis-cluster-leader-0
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis-cluster-leader-svc-1
  name: redis-cluster-leader-svc-1
  namespace: ot-operators
spec:
  ports:
  - name: redis-client
    port: 6379
    protocol: TCP
    targetPort: 6379
    nodePort: 30026
  selector:
    statefulset.kubernetes.io/pod-name: redis-cluster-leader-1
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis-cluster-leader-svc-2
  name: redis-cluster-leader-svc-2
  namespace: ot-operators
spec:
  ports:
  - name: redis-client
    port: 6379
    protocol: TCP
    targetPort: 6379
    nodePort: 30027
  selector:
    statefulset.kubernetes.io/pod-name: redis-cluster-leader-2
  type: NodePort
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://close.gitbook.io/yun-wei-bi-ji/kubernetes/helm/helm-an-zhuang-redis-ji-qun.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
