消息队列 (messaging)

messaging 类收纳集群的消息中间件,目前有 NATS、RabbitMQ 两个组件。它们各自独占一个 namespace(nats / rabbitmq),均以 StatefulSet 单副本部署,没有配置 HPA / VPA / PDB。

总览

这四个组件的镜像版本、监听端口与密钥来源都可以从 manifest 直接核对,下面按组件分别列出可验证的事实。集群整体的层次结构见 集群架构,节点标签与调度约定见 README 中的拓扑说明。

组件清单

  • Name
    nats
    Description
    消息队列(启用 JetStream 持久化)。镜像 nats:2.14-alpine,namespace nats,StatefulSet 单副本,调度到 node-role: database 节点。容器端口 4222(client)/ 8222(monitoring)/ 6222(cluster)。配置来自 ConfigMap nats-config,JetStream 存储在 /data/jetstream(max_memory_store 1Gi、max_file_store 10Gi)。凭据由 ExternalSecret nats-secret 从 Vault secret/database/prod/nats 拉取 username / password。监控由独立 Deployment nats-exporternatsio/prometheus-nats-exporter:0.20.1,端口 7777)抓取,ServiceMonitor nats 采集其 /metrics。Ingress nats.yldm.tech 经 Cloudflare Tunnel 暴露 monitoring 端口 8222。
  • Name
    rabbitmq
    Description
    消息队列(management 版)。镜像 rabbitmq:4.3-management-alpine,namespace rabbitmq,StatefulSet 单副本,调度到 node-role: database 节点,带专属 ServiceAccount + Role/RoleBinding(读 endpoints、建 events)。容器端口 5672(amqp)/ 15672(management UI)/ 15692(prometheus)。凭据由 ExternalSecret rabbitmq-secret 从 Vault secret/database/prod/rabbitmq 拉取默认用户、密码与 Erlang cookie。Service:ClusterIP rabbitmq(5672/15672)、headless rabbitmq-headless、外部访问用 NodePort rabbitmq-management(15672 → nodePort 30673)。

存储与调度

NATS 与 RabbitMQ 都挂独立 pvc.yaml,使用 local-path(本节点本地盘,分别 20Gi / 100Gi)—— 这与它们被钉在 node-role: database 节点的调度约定一致。

组件镜像namespace副本节点选择存储ExternalSecretServiceMonitor / Ingress
natsnats:2.14-alpinenats1node-role: databasepvc 20Gi (local-path)secret/database/prod/nats有 (经 exporter) / nats.yldm.tech
rabbitmqrabbitmq:4.3-management-alpinerabbitmq1node-role: databasepvc 100Gi (local-path)secret/database/prod/rabbitmq无 (内置 :15692) / NodePort 30673

评论