升级 RabbitMQ Kubernetes 运算符
本主题介绍如何升级 RabbitMQ Kubernetes 运算符及其组件。
概述
升级 RabbitMQ 集群 Kubernetes 运算符或消息传递拓扑运算符会产生以下影响
- 更新到新的运算符清单
- (对于指定版本) RabbitmqCluster Pod 的滚动重启
更新到新的运算符清单
要升级到新版本的运算符,只需应用所需版本的新的运算符清单。例如,对于 RabbitMQ 集群运算符
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
# namespace/rabbitmq-system unchanged
# customresourcedefinition.apiextensions.k8s.io/rabbitmqclusters.rabbitmq.com configured
# serviceaccount/rabbitmq-cluster-operator unchanged
# role.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-role unchanged
# clusterrole.rbac.authorization.k8s.io/rabbitmq-cluster-operator-role unchanged
# rolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-leader-election-rolebinding unchanged
# clusterrolebinding.rbac.authorization.k8s.io/rabbitmq-cluster-operator-rolebinding unchanged
# deployment.apps/rabbitmq-cluster-operator configured
这将导致运算符提供的自定义资源定义进行更新,并且运算符 Pod 将使用更新版本的运算符容器镜像。
集群运算符的新版本通常会包含对新集群中使用的 RabbitMQ 默认版本进行的更改(如果 RabbitmqCluster 清单的 spec
中未指定版本)。因此,升级后,您可能会看到新创建的 RabbitmqCluster 将运行在更新版本的 RabbitMQ 上(如果它们在 spec
中未指定版本)。请注意,这不会影响现有 RabbitmqCluster,因为它们的清单已经填充了先前运算符版本的默认值。
RabbitmqCluster Pod 的滚动重启
在某些情况下,升级 RabbitMQ 集群运算符(不是消息传递拓扑运算符)的版本将需要重启 RabbitmqCluster 的 Pod。这通常是由于运算符创建的 RabbitmqCluster 的基础 PodSpec 发生了更改。在这种情况下,升级集群运算符将导致 Kubernetes 发行版上的 RabbitmqCluster 进行滚动重启。
如果集群运算符版本将触发 RabbitmqCluster Pod 的滚动重启,则将在该版本的发布说明中进行说明。例如,请参见 https://github.com/rabbitmq/cluster-operator/releases/tag/v1.7.0。