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 集群 Kubernetes 运算符的快速入门指南
- 安装 RabbitMQ 集群 Kubernetes 运算符
- 配置默认值 for RabbitMQ 集群运算符
- RabbitMQ for kubectl 插件
- 使用 RabbitMQ 集群 Kubernetes 运算符
- 监控 Kubernetes 上的 RabbitMQ 集群
- 故障排除 Kubernetes 上的 RabbitMQ 集群
- 升级 RabbitMQ Kubernetes 运算符
- 在 Openshift 上使用 RabbitMQ 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_user
和 default_pass
键在 additionalConfig
中定义默认用户,将导致为默认凭据 Secret
生成不正确的凭据。由于凭据不正确,拓扑运算符的所有操作都会出错,并在日志中打印以下消息
Error: API responded with a 401 Unauthorized
有关更多详细信息和解决方法,请参阅 故障排除消息拓扑运算符 部分。
这些 Kubernetes 运算符的源代码
这两个运算符都是开源的。您可以在 GitHub 上为其开发做出贡献
这些 Kubernetes 运算符的许可证
这两个运算符都根据 Mozilla 公共许可证 2.0 发布。
支持的 Kubernetes 版本
RabbitMQ 运算符旨在与任何符合 Kubernetes 标准的平台一起使用。如果您在特定版本的 Kubernetes 分发中遇到问题,请 检查 GitHub 存储库中的已知问题。
有关运算符支持的 Kubernetes 和 RabbitMQ 服务器版本的更多信息,请参阅 README。