RabbitMQ Kubernetes Operators:集群操作员和消息拓扑操作员
RabbitMQ 团队开发并维护两个 Kubernetes 操作员:RabbitMQ 集群 Kubernetes 操作员和 RabbitMQ 消息拓扑操作员。
-
RabbitMQ 集群 Kubernetes 操作员自动化了在 Kubernetes 上运行的 RabbitMQ 集群的配置、管理和操作。
-
RabbitMQ 消息拓扑操作员管理通过 RabbitMQ 集群 Kubernetes 操作员部署的 RabbitMQ 集群内的 RabbitMQ 消息拓扑。
Kubernetes 操作员是 Kubernetes 的软件扩展,提供用于管理应用程序、服务及其组件的自定义资源。
在本信息和其他操作员相关信息中,“Operator”(首字母大写 O)用于指代 Kubernetes 操作员模式的实现,而 “operator”(首字母小写 o)用于指代技术运维工程师(管理员)。
RabbitMQ 集群 Kubernetes 操作员
RabbitMQ 集群 Kubernetes 操作员提供了一种一致且简便的方法,用于将 RabbitMQ 集群部署到 Kubernetes 并运行它们,包括“第二天”(持续)操作。使用操作员部署的 RabbitMQ 集群可以供在 Kubernetes 上或 Kubernetes 外部运行的应用程序使用。
集群操作员的文档跨越多个指南
- 限制
- RabbitMQ 集群 Kubernetes 操作员的快速入门指南
- 安装 RabbitMQ 集群 Kubernetes 操作员
- 配置默认值 用于 RabbitMQ 集群操作员
- RabbitMQ kubectl 插件
- 使用 RabbitMQ 集群 Kubernetes 操作员
- 监控 Kubernetes 上的 RabbitMQ 集群
- Kubernetes 上的 RabbitMQ 集群故障排除
- 升级 RabbitMQ Kubernetes 操作员
- 在 Openshift 上使用 RabbitMQ Kubernetes 操作员
此外,还有一个单独的操作员用于集体管理集群对象,这些对象统称为消息拓扑:虚拟主机、用户、队列等。它包含在以下指南中
- 安装 RabbitMQ 消息拓扑操作员
- 使用 RabbitMQ 消息拓扑操作员
- 将 TLS 与 消息拓扑 Kubernetes 操作员一起使用
- 消息拓扑 Kubernetes 操作员故障排除
该操作员提供以下主要功能
- 单节点和多节点 RabbitMQ 集群的配置
- 每当部署的集群的实际状态与预期状态不匹配时,自动协调
- 使用 Prometheus 和 Grafana 监控 RabbitMQ 集群
- RabbitMQ 集群的横向扩展和自动 滚动升级
RabbitMQ 集群 Kubernetes 操作员设计原则
RabbitMQ 集群 Kubernetes 操作员的设计考虑了以下想法和概念
- 它应提供 RabbitMQ 节点配置 灵活性
- 它应在可能的情况下提供合理的安全默认值
- 它应简化 RabbitMQ 操作
遵循这些想法,操作员不会修改现有的 RabbitmqCluster
规范。这意味着,当操作员升级时,它不会自动使用新的默认值(如果有)或最新的 RabbitMQ 版本更新现有的 RabbitmqCluster
实例。
唯一的例外是,当用户操作从规范中删除字段时,操作员将设置默认值。
限制
RabbitMQ 集群操作员协调
删除的 Secret
对象将由 Kubernetes 操作员重新创建,但新生成的 secret 值不会部署到 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 Public License 2.0 下发布。
支持的 Kubernetes 版本
RabbitMQ 操作员旨在与任何兼容 Kubernetes 的平台一起使用。如果您在使用特定 Kubernetes 发行版时遇到问题,请在 GitHub 存储库中检查已知问题。
有关操作员支持的 Kubernetes 和 RabbitMQ 服务器版本的更多信息,请查阅 README。