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:
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
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