跳至主要内容

RabbitMQ Kubernetes 运算符:集群运算符和消息拓扑运算符

RabbitMQ 团队开发和维护两个 Kubernetes 运算符:RabbitMQ 集群 Kubernetes 运算符和 RabbitMQ 消息拓扑运算符。

  • RabbitMQ 集群 Kubernetes 运算符自动执行在 Kubernetes 上运行的 RabbitMQ 集群的配置、管理和操作。

  • RabbitMQ 消息拓扑运算符管理通过 RabbitMQ 集群 Kubernetes 运算符部署的 RabbitMQ 集群内的 RabbitMQ 消息拓扑。

Kubernetes 运算符是 Kubernetes 的软件扩展,为管理应用程序、服务及其组件提供自定义资源。

在本信息和其他与运算符相关的资料中,“运算符”(大写 O)用于指代 Kubernetes 运算符模式的实现,“运算符”(小写 o)用于指代技术操作工程师(管理员)。

RabbitMQ 集群 Kubernetes 运算符

RabbitMQ 集群 Kubernetes 运算符提供了一种一致且简单的方式来将 RabbitMQ 集群部署到 Kubernetes 并运行它们,包括“第二天”(持续)操作。使用运算符部署的 RabbitMQ 集群可以由在 Kubernetes 上或 Kubernetes 之外运行的应用程序使用。

集群运算符的文档涵盖了几个指南

此外,还有一个单独的运算符用于管理集群对象,这些对象统称为消息拓扑:虚拟主机、用户、队列等。它在以下指南中介绍

  • 安装 RabbitMQ 消息拓扑运算符
  • 使用 RabbitMQ 消息拓扑运算符
  • 使用 TLS 使用消息拓扑 Kubernetes 运算符
  • 故障排除 消息拓扑 Kubernetes 运算符

运算符提供以下主要功能

  • 配置单节点和多节点 RabbitMQ 集群
  • 每当部署的集群的实际状态与预期状态不匹配时,自动协调部署的集群
  • 使用 Prometheus 和 Grafana 监控 RabbitMQ 集群
  • 扩展 RabbitMQ 集群并自动进行 滚动升级

RabbitMQ 集群 Kubernetes 运算符设计原则

RabbitMQ 集群 Kubernetes 运算符在设计时考虑了以下想法和概念

  • 它应该提供 RabbitMQ 节点配置 灵活性
  • 它应该尽可能提供安全的默认值
  • 它应该简化 RabbitMQ 操作

遵循这些想法,运算符不会修改现有的 RabbitmqCluster 规范。这意味着,当运算符升级时,它不会自动将现有 RabbitmqCluster 实例更新为新的默认值(如果有)或更新到最新版本的 RabbitMQ。

唯一的例外是,当通过用户操作从规范中删除字段时,运算符将设置默认值。

限制

RabbitMQ 集群运算符协调

已删除的 Secret 对象将由 Kubernetes 运算符重新创建,但新生成的秘密值不会部署到 RabbitMQ 集群。例如,如果具有管理员凭据的 Secret 被删除,将创建一个新的 Secret,其中包含新的用户名和密码,但这些密码不会反映在 RabbitMQ 集群中。它对任何 Secret 值的工作方式相同,例如 共享的节点间身份验证秘密 的值,称为 Erlang cookie。

RabbitMQ 集群运算符功能标志

集群运算符不支持禁用任何 RabbitMQ 功能标志。运算符列出所有可用的功能标志,并在集群启动时启用所有标志。

RabbitMQ 消息拓扑运算符

RabbitMQ 消息拓扑运算符支持通过 kubernetes 声明式 API 管理 RabbitMQ 消息拓扑对象。

消息拓扑运算符的文档结构如下

限制

自定义默认凭据导致 401 未授权

拓扑运算符依赖于集群运算符创建的默认凭据 Secret。如果 RabbitmqCluster spec 使用 default_userdefault_pass 键在 additionalConfig 中定义默认用户,将导致为默认凭据 Secret 生成不正确的凭据。由于凭据不正确,拓扑运算符的所有操作都会出错,并在日志中打印以下消息

Error: API responded with a 401 Unauthorized

有关更多详细信息和解决方法,请参阅 故障排除消息拓扑运算符 部分。

这些 Kubernetes 运算符的源代码

这两个运算符都是开源的。您可以在 GitHub 上为其开发做出贡献

这些 Kubernetes 运算符的许可证

这两个运算符都根据 Mozilla 公共许可证 2.0 发布。

支持的 Kubernetes 版本

RabbitMQ 运算符旨在与任何符合 Kubernetes 标准的平台一起使用。如果您在特定版本的 Kubernetes 分发中遇到问题,请 检查 GitHub 存储库中的已知问题

有关运算符支持的 Kubernetes 和 RabbitMQ 服务器版本的更多信息,请参阅 README

© 2024 RabbitMQ. All rights reserved.