首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在kubernetes上安装rabbitmq插件?

如何在kubernetes上安装rabbitmq插件?
EN

Stack Overflow用户
提问于 2018-06-29 06:59:47
回答 3查看 4.7K关注 0票数 2

我有一个Kubernetes环境和一个狂犬病病毒谁部署2荚狂犬of。

我需要在rabbitmq (延迟消息插件)上安装一个插件,但我不喜欢“手动”方式,所以如果删除了这个插件,我必须再次安装插件。

我想知道实现这一目标的推荐方法是什么。

FYI:手动方法是将文件复制到plugins文件夹中,然后启动以下命令:

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-29 11:49:41

您应该从配置映射中挂载RabbitMQ的配置。

例如:

ConfigMap:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-config
  namespace: rabbitmq
data:
  enabled_plugins: |
      [rabbitmq_management,rabbitmq_peer_discovery_k8s].
  rabbitmq.conf: |
      ...
  definitions.json: |
      ...

然后在您的部署或StatefulSet中:

代码语言:javascript
复制
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
       ...

首先有几种安装插件的方法。一种是以当前正在使用的图像为基础,添加插件,然后使用新的映像。或者,您可以利用库伯奈特生命周期钩下载文件的启动前。这是一个postStart实例

票数 7
EN

Stack Overflow用户

发布于 2018-07-02 10:24:32

我已经结束了在共享硬驱动的基础上安装一个持久的volumen,并使用生命周期挂钩将文件复制到正确的路径

代码语言:javascript
复制
  lifecycle:
    postStart:
      exec:
        command: ['sh', '-c', 'cp /data/rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /opt/rabbitmq/plugins/']

以前,我使用生命周期将wget抛到下载url,然后解压缩并复制文件,但我认为上面的内容更“优雅”。

代码语言:javascript
复制
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/']
票数 2
EN

Stack Overflow用户

发布于 2020-07-17 11:34:44

我使用了以下生命周期挂钩来启用插件:

代码语言:javascript
复制
lifecycle:
  postStart:
    exec:
      command: ["/bin/sh", "-c", "rabbitmq-plugins --offline enable rabbitmq_management rabbitmq_peer_discovery_k8s rabbitmq_prometheus"]

需要使用--offline标志等待rabbitmq启动,然后启用。

安装对我没用。我在rabbitmq中遇到错误,无法在/etc/rabbitmq中写入文件。因为这个https://github.com/kubernetes/kubernetes/pull/58720无法解决这个问题

在这里,您可以看到一个示例清单:

代码语言:javascript
复制
---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  namespace: develop
spec:
  type: ClusterIP
  selector:
    app: rabbitmq
    tier: core
  ports:
    - name: port-5672-tcp
      port: 5672
    - name: port-15672-tcp
      port: 15672

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  namespace: develop
spec:
  replicas: 2
  selector:
    matchLabels:
      app: rabbitmq
      tier: core
  template:
    metadata:
      labels:
        app: rabbitmq
        tier: core
    spec:
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      volumes:
        - name: rabbitmq-storage
          persistentVolumeClaim:
            claimName: rabbitmq-pvc
      containers:
        - name: rabbitmq
          image: rabbitmq:3.8-management
          lifecycle:
            postStart:
              exec:
                command: ["/bin/sh", "-c", "rabbitmq-plugins --offline enable rabbitmq_management rabbitmq_peer_discovery_k8s rabbitmq_prometheus"]
          resources:
            requests:
              memory: 2Gi
              cpu: 1
            limits:
              memory: 2Gi
              cpu: 1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5672
            - containerPort: 15672
          volumeMounts:
            - name: rabbitmq-storage
              mountPath: "/var/lib/rabbitmq/"
          env:
            - name: RABBITMQ_DEFAULT_USER
              valueFrom:
                secretKeyRef:
                  name: rabbitmq-username
                  key: RABBITMQ__USERNAME
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: rabbitmq-password
                  key: RABBITMQ__PASSWORD
      nodeSelector:
        type: ultrafastest
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51096003

复制
相关文章

相似问题

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