11

我需要在 kubernetes 集群上设置一个没有持久性或安全要求的基本 rabbit mq 实例(无集群设置)。

我需要的:

单个 rabbit mq pod 作为 stateful set 运行,replicas = 1,并通过特定 url(amgp 端口和管理接口端口)从集群内部和外部访问它

我不需要的东西:

  • 坚持
  • 安全
  • 集群设置

到目前为止,我发现的 helm 图表都是针对具有集群、持久性等的生产设置,但我不需要这些东西,因为我只会使用实例进行测试

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

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

4 回答 4

10

如果您不需要的不仅仅是副本和持久性。您可以使用简单的 pod 部署而不是 sts。请参考 sts 文档

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

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

kubectl create -f rabbitmq.yml

将服务公开为 NodePort。

kubectl expose po rabbitmq --port 15672

现在,您可以通过外部访问它

节点IP:节点端口

并在内部使用,

[svc].[命名空间].svc

于 2019-05-22T15:05:49.653 回答
5

将此StatefulSetyaml 文件用于基本的 rabbitmq 实例:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: rabbitmq
spec:
  replicas: 1
  serviceName: rabbitmq
  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

于 2019-10-08T11:08:56.277 回答
1

正确的方法是通过专用 helm-chart ( stable/rabbitmq ) 和helm (Kubernetes 包管理器) 安装 rabbitmq。主要原因是:这种方式经过开源社区的彻底测试和验证。

如果想走捷径,请参考Kubernetes官网的以下任务:启动消息队列服务(rabbitmq)。您将在那里找到所有必要清单文件的链接。

于 2019-05-22T16:27:51.593 回答
0

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

helm install stable/rabbitmq

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

于 2019-11-18T18:02:58.403 回答