首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何配置我的头盔图表来获取一个兔子社区插件?

我如何配置我的头盔图表来获取一个兔子社区插件?
EN

Stack Overflow用户
提问于 2020-01-11 01:59:53
回答 3查看 4.6K关注 0票数 2

目标:在我的“狂犬病”-ha https://www.rabbitmq.com/community-plugins.html头盔图中使用来自的“兔子”社区插件。

任何没有随服务器一起运行的插件都需要安装。插件作为.ez存档(它是带有元数据的压缩文件)分发。这些文件必须复制到$RABBITMQ_PLUGINS_DIR.指定的插件目录之一。

问题:如何将rabbitmq社区插件的.ev文件注入图表以供使用?

背景:

举我的例子,我试图将社区插件rabbitmq_delayed_message_exchange的最新版本安装到最新的稳定版本rabbitmq-ha中。

插件的名称是通过将其添加到我的values.yaml中来标识的。

代码语言:javascript
复制
amqp-rabbitmq:
  extraPlugins: |
    rabbitmq_delayed_message_exchange,

当我

代码语言:javascript
复制
helm install example .  --debug

它产生

代码语言:javascript
复制
# Source: example/charts/amqp-rabbitmq/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: example-amqp-rabbitmq
  namespace: default
  labels:
    app: amqp-rabbitmq
    chart: amqp-rabbitmq-1.38.2
    release: example
    heritage: Helm
data:
  enabled_plugins: |
    [
      rabbitmq_delayed_message_exchange,
      rabbitmq_consistent_hash_exchange,
      rabbitmq_management,
      rabbitmq_peer_discovery_k8s
    ].

  rabbitmq.conf: |
    ## RabbitMQ configuration
    ## Ref: https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example

    ## Authentification

    ## Clustering
    cluster_formation.peer_discovery_backend  = rabbit_peer_discovery_k8s
    cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
    cluster_formation.k8s.address_type = hostname
    cluster_formation.node_cleanup.interval = 10
    # Set to false if automatic cleanup of absent nodes is desired.
    # This can be dangerous, see http://www.rabbitmq.com/cluster-formation.html#node-health-checks-and-cleanup.
    cluster_formation.node_cleanup.only_log_warning = true
    cluster_partition_handling = autoheal
    ## The default "guest" user is only permitted to access the server
    ## via a loopback interface (e.g. localhost)
    loopback_users.guest = false

    management.load_definitions = /etc/definitions/definitions.json

    ## Memory-based Flow Control threshold
    vm_memory_high_watermark.absolute = 256MB

    ## Auth HTTP Backend Plugin

    ## LDAP Plugin

    ## MQTT Plugin

    ## Web MQTT Plugin

    ## STOMP Plugin

    ## Web STOMP Plugin

    ## Prometheus Plugin

    ## AMQPS support

并创建3个k8s_amqp-rabbitmq_example-amqp-rabbitmq-n_default_...容器。

每个容器中的日志显示

代码语言:javascript
复制
2020-01-11 01:21:16.826 [info] <0.8.0> Server startup complete; 6 plugins started.

* rabbitmq_management

* rabbitmq_web_dispatch

* rabbitmq_consistent_hash_exchange

* rabbitmq_peer_discovery_k8s

* rabbitmq_management_agent

* rabbitmq_peer_discovery_common

2020-01-11 01:23:06.954 [info] <0.529.0> node 'rabbit@example-amqp-rabbitmq-1.example-amqp-rabbitmq-discovery.default.svc.cluster.local' up

2020-01-11 01:23:12.776 [info] <0.529.0> rabbit on node 'rabbit@example-amqp-rabbitmq-1.example-amqp-rabbitmq-discovery.default.svc.cluster.local' up

我可以成功地登录到rabbitmq,创建交换,队列等。

然而,所需的rabbitmq_delayed_message_exchange插件在哪里都找不到。

  • 在任何地方的日志文件中都没有提到它。
  • 它不会与其他插件一起出现在rabbit@example-amqp-rabbitmq-n.example-amqp-rabbitmq-discovery.default.svc.cluster.local-plugins-expand文件夹中。

当我的应用程序尝试使用已安装的舵机(Rabbitmq)创建延迟的交换时,它将获得:

'Error: Connection closed: 503 (COMMAND-INVALID) with message "COMMAND_INVALID - unknown exchange type 'x-delayed-message'"

它适用于非kubernetes的rabbitmq实例,在那里我可以轻松地安装插件。

我花了几天时间在网络上寻找一个清晰的例子,提示,以及如何利用一个社区插件的兔子-ha图表而不是进展的线索。

外面有什么想法吗?我遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2021-01-15 11:08:18

构建自定义图表不再是必要的--我是用这个values.yaml完成的

代码语言:javascript
复制
## Plugins to enable
##
plugins: 'rabbitmq_management rabbitmq_peer_discovery_k8s'

## Community plugins to download during container initialization.
## Combine it with extraPlugins to also enable them.
##
communityPlugins: |
  https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.8.9/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez

## Extra plugins to enable
## Use this instead of `plugins` to add new pluginsmv ra  
##
extraPlugins: |
  rabbitmq_auth_backend_ldap 
  rabbitmq_delayed_message_exchange
票数 4
EN

Stack Overflow用户

发布于 2020-04-24 19:06:36

下面是一个安装和启用两个RabbitMQ社区插件的示例

  • rabbitmq_delayed_message_exchange
  • rabbitmq_message_timestamp

步骤1:获取Helm图表:

代码语言:javascript
复制
$ helm search repo rabbitmq
NAME               CHART VERSION    APP VERSION DESCRIPTION                                       
bitnami/rabbitmq   6.25.4           3.8.3       Open source message broker software that implem...

$ helm pull --untar bitnami/rabbitmq

步骤2:更新文件statefulset.yaml

代码语言:javascript
复制
...
# Install community plugins
pushd /opt/bitnami/rabbitmq/plugins/
curl -LO https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.8.0/rabbitmq_delayed_message_exchange-3.8.0.ez
curl -LO https://github.com/rabbitmq/rabbitmq-message-timestamp/releases/download/v3.8.0/rabbitmq_message_timestamp-3.8.0.ez
popd
# End of installing community plugins
exec rabbitmq-server
...

步骤3:在启用两个插件的情况下安装RabbitMQ

代码语言:javascript
复制
$ cd rabbitmq
$ helm install rmq . --set rabbitmq.extraPlugins="rabbitmq_delayed_message_exchange rabbitmq_message_timestamp"

现在,您可以验证已经安装了这两个插件。

代码语言:javascript
复制
$ kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
rmq-rabbitmq-0   1/1     Running   0          3m32s

$ kubectl exec -it rmq-rabbitmq-0 bash
I have no name!@rmq-rabbitmq-0:/$ rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@rmq-rabbitmq-0.rmq-rabbitmq-headless.default.svc.cluster.local
 |/
[  ] rabbitmq_amqp1_0                  3.8.3
[  ] rabbitmq_auth_backend_cache       3.8.3
[  ] rabbitmq_auth_backend_http        3.8.3
[  ] rabbitmq_auth_backend_ldap        3.8.3
[  ] rabbitmq_auth_backend_oauth2      3.8.3
[  ] rabbitmq_auth_mechanism_ssl       3.8.3
[  ] rabbitmq_consistent_hash_exchange 3.8.3
[E*] rabbitmq_delayed_message_exchange 3.8.0
[  ] rabbitmq_event_exchange           3.8.3
[  ] rabbitmq_federation               3.8.3
[  ] rabbitmq_federation_management    3.8.3
[  ] rabbitmq_jms_topic_exchange       3.8.3
[E*] rabbitmq_management               3.8.3
[e*] rabbitmq_management_agent         3.8.3
[E*] rabbitmq_message_timestamp        3.8.0
[  ] rabbitmq_mqtt                     3.8.3
...

注意事项:我的Helm版本是v3.1.1

代码语言:javascript
复制
$ helm version
version.BuildInfo{Version:"v3.1.1", GitCommit:"afe70585407b420d0097d07b21c47dc511525ac8", GitTreeState:"clean", GoVersion:"go1.13.8"}
票数 2
EN

Stack Overflow用户

发布于 2020-01-11 13:26:22

我认为rabbitmq-ha默认头盔图使用的是官方的rabbitMQ图像,因此它只包含核心插件

我检查了图表配置,它只是设置了/etc/rabbitmq/enabled_plugins conf文件,插件文件不会自动下载。

有两种解决办法:

  • 构建自定义的rabbitmq映像,并随它一起发布rabbitmq_delayed_message_exchange文件。
  • 下载initContainer中的插件文件,将其添加到图表值extraInitContainers
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59691030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档