如何在kubernetes上设置基本RabbitMQ

时间:2019-05-22 11:47:26

标签: kubernetes rabbitmq kubernetes-ingress kubernetes-statefulset

我需要在kubernetes集群上设置基本的Rabbit MQ实例(无集群设置),而没有持久性或安全性要求。

我需要什么:

作为状态集运行的单个Rabbit mq pod带有副本= 1,并且 通过特定的URL(amgp端口和管理界面端口)从集群内部和外部访问它

我不需要的东西:

  • 持久性
  • 安全性
  • 集群设置

到目前为止,我发现的掌舵图都是通过集群,持久性等来完成生产设置,但是我不需要这些东西,因为我将仅使用实例进行测试

这是我到目前为止所拥有的:

apiVersion: v1
kind: Service
metadata:
  name: rs-rmq-mgt
spec:
  selector:
    app: rs-rmq
  ports:
  - protocol: TCP
    port: 1337
    targetPort: 15672
  type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rs-rmq
spec:
  selector:
    matchLabels:
      app: rs-rmq
  serviceName: "rs-rmq"
  replicas: 1
  template:
    metadata:
      labels:
        app: rs-rmq
    spec:
      containers:
      - name: rs-rmq
        image: rabbitmq:management
        ports:
        - containerPort: 25672
        - containerPort: 5672
        - containerPort: 4369
        - containerPort: 15672

4 个答案:

答案 0 :(得分:0)

如果您不需要的只是副本和持久性。您可以使用简单的pod部署而不是sts。 Please refer sts doc

kubectl run rabbitmq --image=rabbitmq:management --expose --port=15672 --restart=Never
--dry-run -o yaml > rabbitmq.yml

编辑相关的容器端口并创建容器。

kubectl create -f rabbitmq.yml

将服务公开为NodePort。

kubectl expose po rabbitmq --port 15672

现在,您可以通过

从外部进行访问
  

NodesIP:NodePort

并在内部使用

  

[svc]。[namespace] .svc

答案 1 :(得分:0)

执行此操作的正确方法是,通过专用的头盔图(stable/rabbitmq)和helm(Kubernetes程序包管理器)安装Rabbitmq。这样做的主要原因是:这种方式已经过开源社区的彻底测试和验证。

如果要使用快捷方式,请从Kubernetes官方网站上参考以下任务:Starting a message queue service(rabbitmq)。您会在其中找到所有必要清单文件的链接。

答案 2 :(得分:0)

将此部署文件用于基本Rabbitmq实例:

  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: rabbitmq
    labels:
      app: rabbitmq
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: rabbitmq
    template:
      metadata:
        labels:
          app: rabbitmq
      spec:
        containers:
        - name: rabbitmq
          image: rabbitmq:3-management
          env:
          - name: "RABBITMQ_ERLANG_COOKIE"
            value: "1WqgH8N2v1qDBDZDbNy8Bg9IkPWLEpu79m6q+0t36lQ="
          volumeMounts:
          - mountPath: /var/lib/rabbitmq
            name: rabbitmq-data
        volumes:
          - name: rabbitmq-data
            hostPath:
              path: /data/rabbitmq
              type: DirectoryOrCreate

答案 3 :(得分:0)

我认为最简单的方法是使用Helm

helm install stable/rabbitmq

然后只需阅读图表输出注释中的说明即可:)