Kubernetes에 RabbitMQ 구축하기

2022. 6. 27. 14:49프로그래밍 개발(Development)/k8s

반응형

쿠버네티스에 RabbitMQ를 구축시 Deployment로 생성할 수도 있지만, Pod가 종료시 대기열에 있는 데이터가 삭제 되므로, 유지하기 위해서 StatefulSet으로 생성해야만 한다.

 

rabbitmq-statefulset.yaml

user / password : rabbit/rabbit 으로 설정한 컨테이너를 설정한다.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: rabbit
  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_DEFAULT_USER
          value: "rabbit"
        - name: RABBITMQ_DEFAULT_PASS
          value: "rabbit"
        #- 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

Statefulset 생성 및 Pod 생성

$ kubectl apply -f rabbitmq-statefulset.yaml

rabbitmq-service.yaml

statefulset이 생성이 되면 서비스를 생성하여 외부/내부 접근 포트를 설정해 준다.

externalip는 HostIP를 등록 해주면 된다.

apiVersion: v1
kind: Service
metadata:
  # Expose the management HTTP port on each node
  namespace: rabbit
  name: rabbitmq-management
  labels:
    app: rabbitmq
spec:
  selector:
    app: rabbitmq
  ports:
  - port: 15672
    name: http
    targetPort: 15672
  externalIPs:
    - 192.168.10.5
  #type: LoadBalancer # Or LoadBalancer in production w/ proper security
---
apiVersion: v1
kind: Service
metadata:
  # The required headless service for StatefulSets
  namespace: rabbit
  name: rabbitmq
  labels:
    app: rabbitmq
spec:
  ports:
  - port: 5672
    name: amqp
    targetPort: 5672
  - port: 4369
    name: epmd
  - port: 25672
    name: rabbitmq-dist
  #externalIPs:
  # - 172.16.113.205
  selector:
    app: rabbitmq
  type: ClusterIP

서비스를 생성해 준다.

$ kubectl apply -f rabbitmq-service.yaml

서비스 생성 후에 http://{externalip}:15672 로 접속하면 RabbitMQ 포탈 접속이 될것이다.

내부 통신은 {서비스명}:{포트}로 rabbitmq:5672 로 통신을 하면 된다.

반응형