Search code examples
kubernetesrabbitmqkubernetes-helmbitnami

Install extra rabbitmq plugin from github using bitnami/rabbitmq chart


Goal: Prepare a values.yaml file for the rabbitmq chart provided by bitnami, such that the plugin rabbitmq-message-deduplication is ready and available after running helm install ...

Previous solution: Currently, I am using the stable/rabbitmq-ha chart with the following values.yaml:

extraPlugins: "rabbitmq_message_deduplication"

extraInitContainers:
  - name: download-plugins
    image: busybox
    command: ["/bin/sh","-c"]
    args: ["
      wget
          -O /opt/rabbitmq/plugins/elixir-1.8.2.ez/elixir-1.8.2.ez
          https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/elixir-1.8.2.ez
          --no-check-certificate
      ;
      wget
          -O /opt/rabbitmq/plugins/rabbitmq_message_deduplication-v3.8.4.ez/rabbitmq_message_deduplication-v3.8.4.ez
          https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/rabbitmq_message_deduplication-v3.8.x_0.4.5.ez
          --no-check-certificate
      "]
    volumeMounts:
      # elixir is a dependency of the deduplication plugin
      - name: elixir
        mountPath: /opt/rabbitmq/plugins/elixir-1.8.2.ez
      - name: deduplication-plugin
        mountPath: /opt/rabbitmq/plugins/rabbitmq_message_deduplication-v3.8.4.ez

extraVolumes:
  - name: elixir
    emptyDir: {}
  - name: deduplication-plugin
    emptyDir: {}

extraVolumeMounts:
  - name: elixir
    mountPath: /opt/rabbitmq/plugins/elixir-1.8.2.ez
    subPath: elixir-1.8.2.ez
  - name: deduplication-plugin
    mountPath: /opt/rabbitmq/plugins/rabbitmq_message_deduplication-v3.8.4.ez
    subPath: rabbitmq_message_deduplication-v3.8.4.ez

This works A-OK. However, stable/rabbitmq-ha is going to disappear next month and so I'm migrating to bitnami/rabbitmq.

Problem: bitnami/rabbitmq expects values.yaml in a different format and I can't for the life of me figure out how I should set up a new values.yaml file to achieve the same result. I've tried messing around with command, args and initContainers but I just can't get it done...

P.S. I have a cluster running locally using minikube. I don't believe this is relevant, but putting this here just in case.

UPDATE: Francisco's answer really helped. Somehow I missed that part of the documentation.

My new .yaml looks like this:

communityPlugins: "https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/elixir-1.8.2.ez https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/rabbitmq_message_deduplication-v3.8.x_0.4.5.ez"

extraPlugins: "rabbitmq_message_deduplication"

It gets the plugin working just like I wanted, and with much less configuration. Good stuff.


Solution

  • Thanks for choosing our chart! Our [bitnami/rabbitmq] chart uses the parameter communityPlugins to install new plugins and extraPlugins to enable them. For example, to enable the elixir plugin you could try changing values.yaml to:

    communityPlugins: "https://github.com/noxdafox/rabbitmq-message-deduplication/releases/download/0.4.5/elixir-1.8.2.ez"
    
    extraPlugins: "rabbitmq_auth_backend_ldap elixir"
    

    For more information, please look into the Plugin section in our README and ask any more doubts if you need to!