如何为Kubernetes中Redis-Stack StatefulSet传递自定义Redis配置?
为Kubernetes中的Redis-Stack StatefulSet传递自定义配置的方法
1. 修改默认密码
- 简单场景:直接通过环境变量设置
在values.yaml中添加环境变量配置:env: - name: REDIS_PASSWORD value: "your-secure-password" - 生产场景:用Secret存储密码
- 在Chart的
templates目录下创建secret.yaml模板:apiVersion: v1 kind: Secret metadata: name: redis-stack-secret type: Opaque data: redis-password: {{ .Values.redisPassword | b64enc }} - 在
values.yaml中定义密码变量:redisPassword: "your-secure-password" - 在StatefulSet中引用Secret:
env: - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: redis-stack-secret key: redis-password
- 在Chart的
2. 传递自定义Redis配置
方法一:挂载自定义redis.conf文件
- 在Chart的
templates目录下创建configmap.yaml模板,写入自定义配置:apiVersion: v1 kind: ConfigMap metadata: name: redis-stack-config data: redis.conf: | requirepass {{ .Values.redisPassword }} maxmemory 256mb maxmemory-policy allkeys-lru appendonly yes # 按需添加其他Redis配置项 - 修改StatefulSet模板,添加ConfigMap挂载并指定配置文件启动:
spec: template: spec: containers: - name: redis-stack volumeMounts: - name: redis-config mountPath: /etc/redis/redis.conf subPath: redis.conf command: - redis-server - /etc/redis/redis.conf - --loadmodule /usr/lib/redis/modules/redisearch.so - --loadmodule /usr/lib/redis/modules/redisgraph.so - --loadmodule /usr/lib/redis/modules/redisjson.so - --loadmodule /usr/lib/redis/modules/redistimeseries.so volumes: - name: redis-config configMap: name: redis-stack-config
方法二:通过启动参数传递单个配置项
如果仅需修改少量配置,可直接在StatefulSet的容器args中添加参数:
spec: template: spec: containers: - name: redis-stack args: - --requirepass {{ .Values.redisPassword }} - --maxmemory 256mb - --maxmemory-policy allkeys-lru - --loadmodule /usr/lib/redis/modules/redisearch.so # 其他Redis-Stack模块加载参数
3. 验证配置生效
- 进入Redis-Stack Pod执行命令验证:
kubectl exec -it <redis-stack-pod-name> -- redis-cli - 若设置了密码,先执行
AUTH your-secure-password,再通过CONFIG GET <config-key>查看配置,比如:CONFIG GET requirepass CONFIG GET maxmemory
内容的提问来源于stack exchange,提问作者Jay Modi
相关产品推荐
相关产品推荐

