ЦЕЛЬ: Использовать плагин сообщества rabbitmq из https://www.rabbitmq.com/community-plugins.html в моей rabbitmq-ha таблице управления.
Любые плагины, которые не поставляются с сервера нужно будет установить. Плагины распространяются как архивы .ez (которые представляют собой zip-файлы с метаданными). Файлы должны быть скопированы в один из каталогов плагинов, заданных $ RABBITMQ_PLUGINS_DIR .
ПРОБЛЕМА: Как файл .ev плагина сообщества rabbitmq вставляется в диаграмму для использования?
ФОН:
Для моего примера я пытаюсь установить последнюю версию плагина сообщества rabbitmq_delayed_message_exchange в последнюю стабильную версию rabbitmq- ха .
Имя плагина определяется добавлением этого в мои values.yaml :
amqp-rabbitmq:
extraPlugins: |
rabbitmq_delayed_message_exchange,
И когда я
helm install example . --debug
генерирует
# 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 _... контейнеров.
Журнал в каждом контейнере показывает
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, создать обмены, очереди и т. Д. c.
Однако нужный плагин rabbitmq_delayed_message_exchange не найден.
- Он нигде не упоминается в файле журнала.
- Он не отображается в rabbit@example-amqp-rabbitmq- n .example-amqp- rabbitmq-discovery.default.sv c .cluster.local-plugins-expand папка с другими плагинами.
Когда мое приложение пытается использовать для установки шлема установленную rabbitmq-ha задержанный обмен, который он получает:
'Error: Connection closed: 503 (COMMAND-INVALID) with message "COMMAND_INVALID - unknown exchange type 'x-delayed-message'"
Он работает с не-kubernetes экземплярами rabbitmq, где я мог легко установить плагин.
Я потратил Несколько дней поиска в Интернете наглядного примера, намеков и подсказок о том, как использовать диаграмму rabbitmq-ha для плагина сообщества и не прогрессировать.
Есть какие-нибудь идеи? Чего мне не хватает?