Redis

Redis是高级键值缓存和存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,列表,集合,排序集合,位图和超级日志。

TL; DR;

# Testing configuration
$ helm install my-release <helm-repo>/redis
# Production configuration
$ helm install my-release <helm-repo>/redis --values values-production.yaml

介绍

该图表使用Helm软件包管理器在Kubernetes集群上引导了Redis部署。

Bitnami图表可与Kubeapps一起用于在群集中部署和管理Helm Charts。该图表已经过测试,可以在BKPR上与NGINX Ingress,证书管理器,流利的软件和Prometheus一起使用

先决条件

  • 总督1.12+
  • Helm 2.11+或Helm 3.0-beta3 +
  • 基础架构中的PV供应商支持

安装图表

要使用发布名称安装图表my-release

$ helm install my-release <helm-repo>/redis

该命令以默认配置在Kubernetes集群上部署Redis。“参数”部分列出了可以在安装过程中配置的参数。

提示:列出所有使用的版本helm list

卸载图表

要卸载/删除my-release部署:

$ helm delete my-release

该命令将删除与图表关联的所有Kubernetes组件并删除发行版。

参量

下表列出了Redis图表的可配置参数及其默认值。

参数

描述

默认

global.imageRegistry

全局Docker映像注册表

nil

global.imagePullSecrets

全局Docker注册表机密名称作为数组

[] (不向已部署的吊舱添加图像拉取秘密)

global.storageClass

用于动态配置的全局存储类

nil

global.redis.password

Redis密码(覆盖password

nil

image.registry

Redis映像注册表

docker.io

image.repository

Redis映像名称

bitnami/redis

image.tag

Redis图像标签

{TAG_NAME}

image.pullPolicy

图片拉出政策

IfNotPresent

image.pullSecrets

将docker-registry秘密名称指定为数组

nil

nameOverride

使用字符串部分覆盖redis.fullname模板的字符串(将在发行版名称之前)

nil

fullnameOverride

使用字符串完全覆盖redis.fullname模板的字符串

nil

cluster.enabled

使用主从拓扑

true

cluster.slaveCount

奴隶数量

1

existingSecret

现有秘密对象的名称(用于密码验证)

nil

existingSecretPasswordKey

密钥名称,其中包含要从现有机密中检索的密码

nil

usePassword

使用密码

true

usePasswordFile

将密码挂载为文件而不是环境变量

false

password

Redis密码(如果设置了现存密码,则忽略此密码)

随机产生

configmap

其他通用Redis节点配置(此值作为模板评估)

参见values.yaml

clusterDomain

使用的Kubernetes DNS域名

cluster.local

networkPolicy.enabled

启用网络策略

false

networkPolicy.allowExternal

不需要客户端标签进行连接

true

networkPolicy.ingressNSMatchLabels

允许来自其他名称空间的连接

{}

networkPolicy.ingressNSPodMatchLabels

对于其他名称空间,按Pod标签和名称空间标签进行匹配

{}

securityContext.enabled

启用安全上下文(redis主节点和从节点pod)

true

securityContext.fsGroup

容器的组ID(redis主节点和从节点pod)

1001

securityContext.runAsUser

容器的用户标识(redis主节点和从节点pod)

1001

securityContext.sysctls

设置容器的命名空间sysctls(redis主和从属pod)

nil

serviceAccount.create

指定是否应创建ServiceAccount

false

serviceAccount.name

要创建的ServiceAccount的名称

使用全名模板生成

rbac.create

指定是否应创建RBAC资源

false

rbac.role.rules

创建规则

[]

metrics.enabled

启动边车普罗米修斯出口商

false

metrics.image.registry

Redis导出器映像注册表

docker.io

metrics.image.repository

Redis导出器映像名称

bitnami/redis-exporter

metrics.image.tag

Redis导出器图像标签

{TAG_NAME}

metrics.image.pullPolicy

图片拉出政策

IfNotPresent

metrics.image.pullSecrets

将docker-registry秘密名称指定为数组

nil

metrics.extraArgs

二进制的额外参数;这里可能的值

{}

metrics.podLabels

公制出口商吊舱的附加标签

{}

metrics.podAnnotations

Metrics导出器窗格的附加注释

{}

metrics.resources

出口商资源请求/限制

内存:256Mi,CPU:100m

metrics.serviceMonitor.enabled

如果true,则创建Prometheus Operator ServiceMonitor(也必须metrics.enabledtrue

false

metrics.serviceMonitor.namespace

Prometheus在其中运行的可选名称空间

nil

metrics.serviceMonitor.interval

刮取指标的频率(默认使用,回溯至Prometheus的默认设置)

nil

metrics.serviceMonitor.selector

默认为kube-prometheus安装(建议使用CoreOS),但应根据Prometheus安装进行设置

{ prometheus: kube-prometheus }

metrics.service.type

Kubernetes服务类型(redis指标)

ClusterIP

metrics.service.annotations

监视服务的注释(redis主服务器和redis从服务)

{}

metrics.service.labels

指标服务的其他标签

{}

metrics.service.loadBalancerIP

如果redis指标服务类型为loadBalancerIP LoadBalancer

nil

metrics.priorityClassName

指标导出器Pod priorityClassName

{}

metrics.prometheusRule.enabled

将其设置为true可以为Prometheus运算符创建prometheusRules

false

metrics.prometheusRule.additionalLabels

普罗米修斯会发现其他可用于普罗米修斯的标签

{}

metrics.prometheusRule.namespace

应该在其中创建prometheusRules资源的名称空间

与Redis相同的名称空间

metrics.prometheusRule.rules

要创建的规则,请查看示例值。

[]

persistence.existingClaim

提供一个现有的PersistentVolumeClaim

nil

master.persistence.enabled

使用PVC保留数据(主节点)

true

master.persistence.path

安装卷的路径,以使用其他图像

/data

master.persistence.subPath

要挂载的卷的子目录

""

master.persistence.storageClass

背衬PVC的存储类别

generic

master.persistence.accessModes

永久卷访问模式

[ReadWriteOnce]

master.persistence.size

数据量大小

8Gi

master.persistence.matchLabels

matchLabels持久卷选择器

{}

master.persistence.matchExpressions

matchExpressions持久卷选择器

{}

master.statefulset.updateStrategy

StatefulSet的更新策略

onDelete

master.statefulset.rollingUpdatePartition

分区更新策略

nil

master.podLabels

Redis主容器的其他标签

{}

master.podAnnotations

Redis主容器的其他注释

{}

redisPort

Redis端口(在主服务器和从服务器中)

6379

master.command

Redis主入口点字符串。redis-server如果未提供该命令,则执行该命令。

/run.sh

master.configmap

主节点的其他Redis配置(此值作为模板评估)

nil

master.disableCommands

禁用的Redis命令数组(主)

["FLUSHDB", "FLUSHALL"]

master.extraFlags

Redis主站其他命令行标志

[]

master.nodeSelector

用于容器分配的Redis主节点标签

{“ beta.kubernetes.io/arch”:“ amd64”}

master.tolerations

Redis主容器分配的公差标签

[]

master.affinity

Redis主Pod分配的相似性设置

{}

master.schedulerName

备用调度程序的名称

nil

master.service.type

Kubernetes服务类型(redis主服务器)

ClusterIP

master.service.port

Kubernetes服务端口(redis主服务器)

6379

master.service.nodePort

Kubernetes服务nodePort(redis master)

nil

master.service.annotations

Redis主服务的注释

{}

master.service.labels

Redis主服务的附加标签

{}

master.service.loadBalancerIP

如果redis主服务类型为loadBalancerIP LoadBalancer

nil

master.service.loadBalancerSourceRanges

如果redis主服务类型为loadBalancerSourceRanges LoadBalancer

nil

master.resources

Redis主CPU /内存资源请求/限制

内存:256Mi,CPU:100m

master.livenessProbe.enabled

打开和关闭活动度探针(redis主窗格)

true

master.livenessProbe.initialDelaySeconds

启动活动性探测之前的延迟(redis主窗格)

30

master.livenessProbe.periodSeconds

多久执行一次探查(redis master pod)

30

master.livenessProbe.timeoutSeconds

探测超时时(redis主容器)

5

master.livenessProbe.successThreshold

探针失败后的最小连续成功次数(redis主容器)

1

master.livenessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。

5

master.readinessProbe.enabled

打开和关闭就绪探针(redis主容器)

true

master.readinessProbe.initialDelaySeconds

启动就绪探针之前的延迟(redis主容器)

5

master.readinessProbe.periodSeconds

多久执行一次探查(redis master pod)

10

master.readinessProbe.timeoutSeconds

探测超时时(redis主容器)

1

master.readinessProbe.successThreshold

探针失败后的最小连续成功次数(redis主容器)

1

master.readinessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。

5

master.priorityClassName

Redis Master Pod PriorityClassName

{}

volumePermissions.enabled

启用用于更改注册表中的卷权限的初始化容器(对于默认的k8runAsUserfsUser值不起作用的情况)

false

volumePermissions.image.registry

初始化容器容量许可映像注册表

docker.io

volumePermissions.image.repository

初始化容器容量许可映像名称

bitnami/minideb

volumePermissions.image.tag

初始化容器体积许可图像标签

buster

volumePermissions.image.pullPolicy

初始化容器容量许可映像拉取策略

Always

volumePermissions.resources

初始化容器的容量许可CPU /内存资源请求/限制

{}

slave.service.type

Kubernetes服务类型(redis从属)

ClusterIP

slave.service.nodePort

Kubernetes服务nodePort(redis从属)

nil

slave.service.annotations

Redis从站服务注释

{}

slave.service.labels

Redis从站服务的附加标签

{}

slave.service.port

Kubernetes服务端口(redis从站)

6379

slave.service.loadBalancerIP

如果Redis从属服务类型为LoadBalancerIP LoadBalancer

nil

slave.service.loadBalancerSourceRanges

如果Redis从属服务类型为loadBalancerSourceRanges LoadBalancer

nil

slave.command

Redis从站入口点数组。如果未提供,则使用docker映像的ENTRYPOINT。

/run.sh

slave.configmap

从节点的其他Redis配置(此值作为模板评估)

nil

slave.disableCommands

Redis命令数组以禁用(从属)

[FLUSHDB, FLUSHALL]

slave.extraFlags

Redis从站附加命令行标志

[]

slave.livenessProbe.enabled

打开和关闭活动性探针(redis从属Pod)

true

slave.livenessProbe.initialDelaySeconds

启动活动性探测之前的延迟(redis从属Pod)

30

slave.livenessProbe.periodSeconds

多久执行一次探测(redis从属Pod)

10

slave.livenessProbe.timeoutSeconds

探测超时时(redis从属Pod)

5

slave.livenessProbe.successThreshold

探针失败后的最小连续成功次数(redis slave pod)

1

slave.livenessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。

5

slave.readinessProbe.enabled

打开和关闭slave.readiness探针(redis slave pod)

true

slave.readinessProbe.initialDelaySeconds

启动slave.readiness探针之前的延迟(redis slave pod)

5

slave.readinessProbe.periodSeconds

多久执行一次探测(redis从属Pod)

10

slave.readinessProbe.timeoutSeconds

探测超时时(redis从属Pod)

10

slave.readinessProbe.successThreshold

探针失败后的最小连续成功次数(redis slave pod)

1

slave.readinessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。(redis奴隶吊舱)

5

slave.persistence.enabled

使用PVC保留数据(从节点)

true

slave.persistence.path

安装卷的路径,以使用其他图像

/data

slave.persistence.subPath

要挂载的卷的子目录

""

slave.persistence.storageClass

背衬PVC的存储类别

generic

slave.persistence.accessModes

永久卷访问模式

[ReadWriteOnce]

slave.persistence.size

数据量大小

8Gi

slave.persistence.matchLabels

matchLabels持久卷选择器

{}

slave.persistence.matchExpressions

matchExpressions持久卷选择器

{}

slave.statefulset.updateStrategy

StatefulSet的更新策略

onDelete

slave.statefulset.rollingUpdatePartition

分区更新策略

nil

slave.podLabels

Redis从属Pod的附加标签

master.podLabels

slave.podAnnotations

Redis从属Pod的附加注释

master.podAnnotations

slave.schedulerName

备用调度程序的名称

nil

slave.resources

Redis从站CPU /内存资源请求/限制

{}

slave.affinity

为奴隶启用节点/荚亲和力

{}

slave.priorityClassName

Redis从站pod priorityClassName

{}

sentinel.enabled

启用哨兵容器

false

sentinel.usePassword

使用标记容器的密码

true

sentinel.masterSet

前哨主机组的名称

mymaster

sentinel.initialCheckTimeout

查询Redis Sentinel服务以获取活动Sentinel列表的超时

5

sentinel.quorum

选举新主人的法定人数

2

sentinel.downAfterMilliseconds

检测Redis节点超时

60000

sentinel.failoverTimeout

执行选举故障转移的超时

18000

sentinel.parallelSyncs

集群中的并行同步数

1

sentinel.port

Redis Sentinel端口

26379

sentinel.configmap

前哨节点的其他Redis配置(此值作为模板评估)

nil

sentinel.staticID

为哨兵副本启用静态ID(如果禁用的ID将在启动时随机生成)

false

sentinel.service.type

Kubernetes服务类型(redis标记)

ClusterIP

sentinel.service.nodePort

Kubernetes服务nodePort(redis sentinel)

nil

sentinel.service.annotations

Redis哨兵服务注释

{}

sentinel.service.labels

Redis哨兵服务的附加标签

{}

sentinel.service.redisPort

用于Redis只读操作的Kubernetes服务端口

6379

sentinel.service.sentinelPort

用于Redis标记的Kubernetes服务端口

26379

sentinel.service.redisNodePort

用于Redis只读操作的Kubernetes服务节点端口

``

sentinel.service.sentinelNodePort

用于Redis标记的Kubernetes服务节点端口

``

sentinel.service.loadBalancerIP

如果Redis前哨服务类型为LoadBalancerIP LoadBalancer

nil

sentinel.livenessProbe.enabled

打开和关闭活动性探针(redis前哨吊舱)

true

sentinel.livenessProbe.initialDelaySeconds

启动活力探测之前的延迟(redis前哨吊舱)

5

sentinel.livenessProbe.periodSeconds

多久执行一次探测(redis前哨容器)

5

sentinel.livenessProbe.timeoutSeconds

探针超时时(redis前哨容器)

5

sentinel.livenessProbe.successThreshold

探针失败后的最小连续成功次数(redis前哨容器)

1

sentinel.livenessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。

5

sentinel.readinessProbe.enabled

打开和关闭sentinel.readiness探针(redis sentinel pod)

true

sentinel.readinessProbe.initialDelaySeconds

启动sendinel.readiness探针之前的延迟(redis sentinel pod)

5

sentinel.readinessProbe.periodSeconds

多久执行一次探测(redis前哨吊舱)

5

sentinel.readinessProbe.timeoutSeconds

探针超时时(redis前哨容器)

1

sentinel.readinessProbe.successThreshold

探针失败后的最小连续成功次数(redis前哨容器)

1

sentinel.readinessProbe.failureThreshold

成功后将被视为探针的最小连续失败数。(redis前哨容器)

5

sentinel.resources

Redis前哨CPU /内存资源请求/限制

{}

sentinel.image.registry

Redis Sentinel映像注册表

docker.io

sentinel.image.repository

Redis Sentinel映像名称

bitnami/redis-sentinel

sentinel.image.tag

Redis Sentinel图片标签

{TAG_NAME}

sentinel.image.pullPolicy

图片拉出政策

IfNotPresent

sentinel.image.pullSecrets

将docker-registry秘密名称指定为数组

nil

sysctlImage.enabled

启用初始化容器来修改内核设置

false

sysctlImage.command

sysctlImage命令执行

[]

sysctlImage.registry

sysctlImage初始化容器注册表

docker.io

sysctlImage.repository

sysctlImage初始化容器名称

bitnami/minideb

sysctlImage.tag

sysctlImage初始化容器标签

buster

sysctlImage.pullPolicy

sysctlImage初始化容器拉取策略

Always

sysctlImage.mountHostSys

将主机/sys文件夹挂载到/host-sys

false

sysctlImage.resources

sysctlImage初始化容器CPU /内存资源请求/限制

{}

podSecurityPolicy.create

指定是否应创建PodSecurityPolicy

false

使用的--set key=value[,key=value]参数指定每个参数helm install。例如,

$ helm install my-release \
  --set password=secretpassword \
    <helm-repo>/redis

上面的命令将Redis服务器密码设置为secretpassword

或者,可以在安装图表时提供指定参数值的YAML文件。例如,

$ helm install my-release -f values.yaml <helm-repo>/redis

提示:您可以使用默认值。

minikube用户注意事项minikube的当前版本(在撰写本文时为v0.24.1)提供hostPath仅可由root写入的持久卷。使用图表默认值会导致Redis Pod在尝试写入/bitnami目录时导致Pod失败。考虑使用安装Redis --set persistence.enabled=false。有关更多信息,请参见minikube 1990

配置和安装详细信息

滚动式VS不可变标签

强烈建议在生产环境中使用不可变标签。这样可以确保如果使用不同的映像更新相同的标记,则部署不会自动更改。

如果存在主容器的新版本,重大更改或严重漏洞,Bitnami将发布新图表以更新其容器。

生产配置

该图表包括一个values-production.yaml文件,您可以在其中找到一些与常规配置相比面向生产配置的参数values.yaml。您可以使用此文件而不是默认文件。

  • 奴隶数量:
    ```diff
  • cluster.slaveCount:2
  • cluster.slaveCount:3
  • 启用NetworkPolicy:
    ```diff
  • networkPolicy.enabled:否
  • networkPolicy.enabled:true
  • 启动侧面汽车普罗米修斯出口商:
    ```diff
  • metrics.enabled:假
  • metrics.enabled:true

集群拓扑

默认值:主从

使用安装图表时cluster.enabled=true,它将部署Redis主StatefulSet(仅允许一个主节点)和Redis从StateStatefulSet。从属设备将是主设备的只读副本。将公开两个服务:

  • Redis主服务:指向可以执行读写操作的主服务器
  • Redis从站服务:指向从站,其中仅允许读取操作。

万一主节点崩溃,从节点将等待,直到Kubernetes Controller Manager再次重新生成主节点为止。

奴隶主奴

使用cluster.enabled=true和安装图表时sentinel.enabled=true,它将部署Redis主服务器StatefulSet(仅允许一个主服务器)和Redis从属StatefulSet。在这种情况下,豆荚将包含一个带有Redis Sentinel的额外容器。此容器将形成Redis Sentinel节点的群集,如果实际的主机失败,它将提升一个新的主机。除此之外,仅公开一项服务:

  • Redis服务:公开端口6379(用于Redis只读操作)和端口26379(用于访问Redis Sentinel)。

对于只读操作,请使用端口6379访问服务。对于写操作,必须使用以下命令(使用redis-cli或类似命令)访问Redis Sentinel群集并查询当前的主服务器:

SENTINEL get-master-addr-by-name <name of your MasterSet. Example: mymaster>

该命令将返回当前主机的地址,可以从群集内部对其进行访问。

万一当前的主节点崩溃,Sentinel容器将选择一个新的主节点。

使用密码文件

要将密码文件用于Redis,您需要创建一个包含密码的秘密。

注意:重要的是必须调用带有密码的文件redis-password

然后使用秘密名称作为参数来部署Helm Chart:

usePassword=true
usePasswordFile=true
existingSecret=redis-password-file
sentinels.enabled=true
metrics.enabled=true

指标

该图表可以选择启动Prometheus的指标导出器。指标终结点(端口9121)在服务中公开。可以使用类似于示例Prometheus scrape配置中所述的方法从群集中擦除指标。如果要从集群外部抓取指标,则可以利用Kubernetes API代理访问端点。

主机内核设置

Redis可能需要对主机内核进行一些更改才能按预期工作,特别是增加somaxconn价值并禁用透明大页面。
为此,您可以使用sysctlImage配置值设置特权的initContainer ,例如:

sysctlImage:
  enabled: true
  mountHostSys: true
  command:
    - /bin/sh
    - -c
    - |-
      install_packages procps
      sysctl -w net.core.somaxconn=10000
      echo never > /host-sys/kernel/mm/transparent_hugepage/enabled

另外,对于Kubernetes 1.12+,您可以设置securityContext.sysctls为主和从Pod配置sysctls 。例:

securityContext:
  sysctls:
  - name: net.core.somaxconn
    value: "10000"

请注意,这不会禁用透明大表。

坚持不懈

默认情况下,统计图在路径上安装持久卷/data。使用动态卷供应创建卷。如果持久卷声明已存在,请在安装期间指定它。

现有的PersistentVolume索赔

  1. 创建PersistentVolume
  2. 创建PersistentVolumeClaim
  3. 安装图表
$ helm install my-release --set persistence.existingClaim=PVC_NAME <helm-repo>/redis

网络政策

要为Redis启用网络策略,请安装
实现Kubernetes NetworkPolicy规范的网络插件
并将其设置networkPolicy.enabledtrue

对于Kubernetes v1.5和v1.6,还必须通过设置
DefaultDeny名称空间注释来打开NetworkPolicy 。注意:这将对名称空间中的所有Pod强制执行策略:

kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"

启用NetworkPolicy后,只有带有生成的客户端标签的Pod
才能连接到Redis。
成功安装后,该标签将显示在输出中。

使用networkPolicy.ingressNSMatchLabels来自其他命名空间的pod可以连接到Redis。设置networkPolicy.ingressNSPodMatchLabels为与匹配的命名空间中的pod标签匹配。例如,对于标记为的名称空间redis=external和该名称空间中的标记为podredis-client=true的字段,应设置以下字段:

networkPolicy:
  enabled: true
  ingressNSMatchLabels:
    redis: external
  ingressNSPodMatchLabels:
    redis-client: true

将现有发行版升级到新的主要版本

图表的主要版本更改(例如v1.2.3-> v2.0.0)表明存在
不兼容的重大更改,需要手动操作。

到10.0.0

对于带有的发行版usePassword: true,该值sentinel.usePassword控制密码验证是否也适用于前哨端口。true对于安全配置,默认为,但是可以考虑以下情况而禁用:

  • 5.0.1在引入身份验证功能之前使用redis-sentinel版本。
  • 需要更新redis客户端以支持哨兵身份验证的位置。

如果使用主/从拓扑,或者使用usePassword: false,则无需采取任何措施。

至8.0.18

对于带有metrics.enabled: true导出器映像默认标签的发行版,现在为v1.x.x。这引入了许多更改,包括度量标准名称。您现在要使用此仪表板。请参阅redis_exporter github页面以获取更多详细信息。

至7.0.0

此版本导致Redis Master StatefulSet定义发生更改,因此命令头盔升级将无法立即使用。或者,可以执行以下操作之一:

  • 推荐:创建Redis Master PVC的克隆(例如,使用类似项目的项目)。然后重新使用此克隆的PVC启动新版本。
helm install my-release <helm-repo>/redis --set persistence.existingClaim=<NEW PVC>
  • 替代方案(不建议这样做,后果自负):helm delete --purge不删除分配给Redis Master StatefulSet的PVC。因此,可以执行以下命令来升级发行版
helm delete --purge <RELEASE>
helm install <RELEASE> <helm-repo>/redis

图表的早期版本未在从属服务器中使用持久性,因此此升级会将其添加到它们中。另一个重要的变化是,没有值从主机继承到从机。例如,在6.0.0中slaves.readinessProbe.periodSeconds,如果为空,则将其设置为master.readinessProbe.periodSeconds。这种方法缺乏透明度,难以维护。从现在开始,必须像配置主机一样配置所有从机参数。

一些值也发生了变化:

  • master.portslave.port已更改为redisPort(主机和从机的值相同)
  • master.securityContext并且slave.securityContext已更改为securityContext(主机和从机的值相同)

默认情况下,升级不会更改群集拓扑。如果要使用Redis Sentinel,则必须显式设置sentinel.enabledtrue

至6.0.0

图表的早期版本使用init容器来更改卷的权限。如果securityContext模板中的指令还不够用(例如,使用cephFS),则可以这样做。在图表的此新版本中,默认情况下禁用此容器(这不会影响大多数部署)。如果您的安装仍然需要起始容器,执行helm upgrade--set volumePermissions.enabled=true

至5.0.0

对于包含redis-serverredis-cli二进制文件的任何映像,此版本中的默认映像可能会切换出来。如果redis-server不是默认图像ENTRYPOINT,则master.command 必须指定。

重大变化

  • master.args并被slave.args删除。使用master.commandslave.command代替以覆盖图像入口点,或master.extraFlags将其他标志传递给redis-server
  • disableCommands 现在被解释为字符串数组,而不是逗号分隔值的字符串。
  • master.persistence.path现在默认为/data

4.0.0

此版本chart从中删除了spec.selector.matchLabels 不变的标签StatefulSet apps/v1beta2。它被无意中
添加,导致任何后续升级失败。参见https://github.com/helm/charts/issues/7726

它还修复了https://github.com/helm/charts/issues/7726extensions/v1beta1如果spec.selector未明确设置,则无法升级部署。

最后,它通过删除可变标签来修复https://github.com/helm/charts/issues/7803spec.VolumeClaimTemplate.metadata.labels从而使其可升级。

为了升级,请在升级之前删除Redis StatefulSet:

$ kubectl delete statefulsets.apps --cascade=false my-release-redis-master

并编辑Redis从属(以及指标,如果启用)部署:

kubectl patch deployments my-release-redis-slave --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'
kubectl patch deployments my-release-redis-metrics --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]'

显着变化

9.0.0

由于Redis导出器代码的最新更改,因此度量标准导出器已从单独的部署更改为Sidecar容器。检查官方页面以获取更多信息。指标容器映像已从oliver006 / redis_exporter更改为bitnami / redis-exporter(Bitnami维护的Oliver006 / redis_exporter软件包)。

7.0.0

为了在从站发生故障的情况下提高性能,我们向只读从站添加了持久性。这意味着我们从Deployment移到StatefulSets。这不会影响从图表的早期版本进行的升级,因为部署根本不包含任何持久性。

此版本还允许在Redis Pod内部启用Redis Sentinel容器(默认情况下禁用此功能)。万一主服务器崩溃,将选择一个新的Redis节点作为主服务器。为了查询当前的主服务器(不公开Redis主服务器服务),您需要首先查询Sentinel群集。在本节中找到更多信息。