Как установить плагин rabbitmq на kubernetes? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть среда Kubernetes с подчиненным кроликом, который развертывает 2 пакета кролика.

Мне нужно установить плагин на rabbitmq (плагин для отложенных сообщений), но мне не нравится «ручной» способ, поэтому, если модуль удален, я должен установить плагин снова.

Я хочу знать, какой рекомендуемый способ достижения этого.

К вашему сведению: ручной способ - скопировать файл в папку плагинов, а затем запустить следующую команду:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я закончил монтирование постоянных томов на общий жесткий диск и, используя ловушки жизненного цикла, скопировал файл по правильному пути

  lifecycle:
    postStart:
      exec:
        command: ['sh', '-c', 'cp /data/rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /opt/rabbitmq/plugins/']

Раньше я использовал жизненный цикл, чтобы бросить wget в URL-адрес загрузки, а затем разархивировать и скопировать файл, но я думаю, что приведенное выше более "элегантно"

lifecycle:
          postStart:
                  exec:
                    command: ['sh', '-c', 'wget https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip && unzip rabbitmq_delayed_message_exchange-20171201-3.7.x.zip -d /opt/rabbitmq/plugins/']
0 голосов
/ 29 июня 2018

Вы должны смонтировать конфигурацию для RabbitMQ из карты конфигурации.

Например:

ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-config
  namespace: rabbitmq
data:
  enabled_plugins: |
      [rabbitmq_management,rabbitmq_peer_discovery_k8s].
  rabbitmq.conf: |
      ...
  definitions.json: |
      ...

А затем в вашем Deployment или StatefulSet:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: rabbitmq
  namespace: rabbitmq
spec:
  replicas: 3
  ...
  template:
    ...
    spec:
      containers:
      - image: rabbitmq:3.7.4-management-alpine
        imagePullPolicy: IfNotPresent
        name: rabbitmq
        volumeMounts:
        - name: config-volume
          mountPath: /etc/rabbitmq
        ...
      volumes:
        - name: config-volume
          configMap:
            name: rabbitmq-config
            items:
            - key: rabbitmq.conf
              path: rabbitmq.conf
            - key: enabled_plugins
              path: enabled_plugins
            - key: definitions.json
              path: definitions.json
       ...

Существует несколько способов установить плагин. Один из них заключается в том, чтобы основать изображение, которое вы используете в данный момент, добавить плагин и использовать вместо него новое изображение. В качестве альтернативы вы можете использовать ловушки жизненного цикла Kubernetes для загрузки файла перед запуском. Вот пример postStart

...