1. Triển khai RocketMQ Broker
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mq-broker
name: mq-broker
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mq-broker
template:
metadata:
labels:
app: mq-broker
spec:
containers:
- env:
- name: NAMESRV_ADDR
value: mq-namesrv-service:9876
image: rocketmqinc/rocketmq:4.4.0
command: ["/bin/sh","mqbroker"]
name: mq-broker
ports:
- containerPort: 10909
name: tcp-10909
protocol: TCP
- containerPort: 10911
name: tcp-10911
protocol: TCP
- containerPort: 10912
name: tcp-10912
protocol: TCP
resources:
limits:
memory: 1200Mi
requests:
memory: 1200Mi
2. Triển khai NameServer
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mq-namesrv
name: mq-namesrv
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mq-namesrv
template:
metadata:
labels:
app: mq-namesrv
spec:
containers:
- image: rocketmqinc/rocketmq:4.4.0
name: mq-namesrv
command: ["/bin/sh","mqnamesrv"]
ports:
- containerPort: 9876
name: tcp-9876
protocol: TCP
resources:
limits:
memory: 600Mi
requests:
memory: 600Mi
3. Triển khai RocketMQ Console
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mq-console
name: mq-console
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mq-console
template:
metadata:
labels:
app: mq-console
spec:
containers:
- env:
- name: JAVA_OPTS
value: -Drocketmq.namesrv.addr=mq-namesrv-service:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
image: styletang/rocketmq-console-ng
name: mq-console
4. Service cho NameServer
apiVersion: v1
kind: Service
metadata:
labels:
app: mq-namesrv-service
name: mq-namesrv-service
namespace: default
spec:
ports:
- name: tcp-9876
port: 9876
protocol: TCP
targetPort: 9876
selector:
app: mq-namesrv
5. Service cho Console
apiVersion: v1
kind: Service
metadata:
labels:
app: mq-console
name: mq-console-service
namespace: default
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
app: mq-console
6. Cấu hình Ingress cho Console
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mq-console-ingress
namespace: default
spec:
rules:
- host: mq-console.example.com
http:
paths:
- backend:
service:
name: mq-console-service
port:
number: 8080
path: /
pathType: ImplementationSpecific
7. Lưu ý quan trọng
- Thư mục lưu trữ log và tin nhắn cần được sử dụng với PersistentVolume để đảm bảo dữ liệu không bị mất khi pod restart
- Cần thay thế tên service và namespace tương ứng với môi trường triển khai thực tế
- Image mặc định lưu trữ dữ liệu trong thư mục home của user, có thể cấu hình thay đổi đường dẫn này thông qua file cấu hình