how to setup basic rabbitmq on kubernetes

Martin picture Martin · May 22, 2019 · Viewed 9.6k times · Source

I need to setup a basic rabbit mq instance (no cluster setup) without persistence or security requirements on a kubernetes cluster.

What I need:

Single rabbit mq pod running as stateful set with replicas = 1, and reach it from inside and outside of cluster via specific url (amgp port and mangement interface port)

What I don't need:

  • persistence
  • security
  • cluster setup

The helm charts I found so far are all adressing production setups with clustering, persistence and so on, but I don't need this stuff as I will use instance only for testing

This is what I have so far:

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

Answer

hariK picture hariK · May 22, 2019

If you don't need more than a replica and persistent. You can go with a simple pod deployment rather than sts. Please refer sts doc

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

Edit the relevant container ports and create the pod.

kubectl create -f rabbitmq.yml

Expose the service as NodePort.

kubectl expose po rabbitmq --port 15672

Now, you can access it externally via

NodesIP:NodePort

and internally by using,

[svc].[namespace].svc