在 Kubersphere 上部署含有 delayed_message_exchange 模块的 RabbitMQ

背景

RabbitMQ 默认不含有 delayed_message_exchange 模块,需要下载并启用,同时部署到 KS 集群。

Dockerfile 基础镜像

由于 KS 应用商店中有 RabbitMQ 应用,可以稍微修改并使用。主要修改的就是基础镜像,使其含有 delayed_message_exchange 模块。

  1. 从 Github下载 delayed_message_exchange 模块,具体版本根据自己的需求进行下载即可。
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0
  1. 下载完后,创建 Dockerfile 文件并输入下列内容。
FROM rabbitmq:3.8.1-alpine
# 使用 3.8.1-alpine 的版本,根据自己的需要进行调整。
ADD rabbitmq_delayed_message_exchange-3.8.0.ez /opt/rabbitmq/plugins
# 复制rabbitmq_delayed_message_exchange插件到plugins目录下。
RUN rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 启用rabbitmq_delayed_message_exchange插件
WORKDIR /opt/rabbitmq
  1. 构建镜像
docker build -t rabbitmq:3.8.1-alpine-delayed-message .
  1. 推送到自己的镜像仓库

KS 上部署 RabbitMQ

在KS的应用商店里找到MQ,然后通过YAML进行编辑,具体配置如下:

image:
  rabbitmq:
    repository: registry-vpc.cn-hangzhou.aliyuncs.com/mq_basic/rabbitmq
    tag: 3.8.1-alpine-delayed-message
    pullPolicy: IfNotPresent
imagePullSecrets:
    - name: docker-repo-secret
nameOverride: ''
fullnameOverride: ''
persistence:
  size: 5Gi
extraPlugins:
  - rabbitmq_delayed_message_exchange
extraConfigurations: |-
  ## Number of Erlang processes that will accept connections for the TCP
  ## and TLS listeners.
  ##
  # num_acceptors.tcp = 10
  # num_acceptors.ssl = 10
advancedConfigurations: |-
  [
    {rabbitmq_auth_backend_ldap, [
      %% Authorisation
    ]}
  ].
defaultUsername: bmp
defaultPassword: bmpmqtest@123
service:
  type: ClusterIP
resources: 
  limits:
    memory: 256Mi
  requests:
    memory: 256Mi
nodeSelector: {}
tolerations: []
affinity: {}

其中的镜像地址采用上面Dockerfile打出来的基础镜像,其中包含了rabbitmq_delayed_message_exchange插件,并且在YAML里也指定了启动该插件。

部署完成后,登录 RabbitMQ 控制台,确认 Exchanges 中含有 x-delayed-message 类型。

image.png

也可以在 Pod 中执行下列命令进行查看:

rabbitmqctl list_exchanges
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容