Triển khai nhanh RocketMQ và RocketMQ Console trên Kubernetes

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

Thẻ: Kubernetes RocketMQ deployment containerization DevOps

Đăng vào ngày 14 tháng 7 lúc 12:39