Kubernetes

Rabbit MQ Kubernetes Helm 배포

김 정출 2024. 10. 15. 12:03

Rabbit MQ Helm 배포

Kubernetes에 RabbitMQ를 배포하는 방법을 안내하겠습니다. 우리는 Helm 차트를 사용해 빠르고 쉽게 RabbitMQ를 설치할 수 있습니다. Helm은 Kubernetes 애플리케이션을 패키징하고 관리할 수 있는 도구입니다.

RabbitMQ를 Kubernetes 클러스터에 배포하기 위한 단계는 다음과 같습니다:

1. Helm 설치

Helm이 설치되어 있지 않다면 먼저 Helm을 설치해야 합니다.

curl <https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3> | bash

2. RabbitMQ 차트 레포지토리 추가

RabbitMQ는 Bitnami 레포지토리에서 관리하는 차트를 사용할 수 있습니다. 우선 Helm에 Bitnami 레포지토리를 추가합니다.

helm repo add bitnami <https://charts.bitnami.com/bitnami>
helm repo update

3. RabbitMQ 배포

이제 Helm을 사용하여 RabbitMQ를 배포합니다. release-name을 원하는 이름으로 지정하면 되고, 네임스페이스가 필요하다면 --namespace 옵션을 추가할 수 있습니다.

kubectl create ns rabbitmq
kubectl label namespace rabbitmq istio-injection=enabled
kubectl describe ns rabbitmq

helm install rabbitmq bitnami/rabbitmq --namespace rabbitmq

위 명령어는 기본 설정으로 RabbitMQ를 배포합니다. 만약 커스터마이즈된 설정을 하고 싶다면, 다음 단계에서 values 파일을 편집할 수 있습니다.

4. RabbitMQ 설정 커스터마이징 (선택 사항)

기본 설정 외에 추가 설정이 필요한 경우 values.yaml 파일을 편집할 수 있습니다. 예를 들어 비밀번호, 퍼시스턴트 볼륨, 노드 설정 등을 변경할 수 있습니다. 기본 템플릿을 다운로드한 후 수정합니다.

helm fetch bitnami/rabbitmq --untar
cd rabbitmq

values.yaml 파일을 다음 설정을 변경합니다.

vi values.yaml
---
global:
  ...
  defaultStorageClass: nfs
  storageClass: nfs

...
auth:
  username: user
  password: "XXXXX"
  securePassword: true

...
## Prometheus Metrics
##
metrics:
  enabled: true

...
persistence:
  ## @param persistence.enabled Enable RabbitMQ data persistence using PVC
  ##
  enabled: true
  storageClass: nfs
helm install rabbitmq . -n rabbitmq

5. 배포 상태 확인

RabbitMQ가 정상적으로 배포되었는지 확인하려면 다음 명령어를 사용합니다.

kubectl get all -nrabbitmq

6. RabbitMQ 관리자 대시보드 접속

RabbitMQ 관리 대시보드에 접근하려면, 포트 포워딩을 설정해 로컬 머신에서 웹 UI에 접속할 수 있습니다.

ubectl port-forward -nrabbitmq svc/rabbitmq 15672:15672

그런 다음 웹 브라우저에서 http://localhost:15672로 접속합니다. 기본 자격 증명은 다음과 같습니다:

  • 사용자 이름: user
  • 비밀번호: xxxxxxx

이 자격 증명은 Helm 차트 기본값이며, values.yaml 파일에서 변경할 수 있습니다.

Dashboard 사용법

주요 기능

  1. Overview (대시보드 요약)
  • 클러스터의 상태노드 정보, 메모리/디스크 사용량을 요약해서 보여줍니다.
  • 메시지 대기열(Queue)의 개수와 처리 현황도 빠르게 확인할 수 있습니다.
  1. Queues (대기열 관리)
  • 메시지 큐를 생성, 수정, 삭제할 수 있습니다.
  • 큐를 클릭하면 큐에 저장된 메시지 수, 대기 중인 소비자(consumer), 그리고 큐의 상태를 볼 수 있습니다.
    • Publish Message: 대기열에 직접 메시지를 넣을 수 있습니다.
    • Get Message: 대기열에서 메시지를 수동으로 가져올 수 있습니다.
    • Purge Queue: 큐를 비울 수 있습니다.
    • Delete Queue: 대기열을 삭제합니다.
  • 주요 기능:
  1. Exchanges (교환기 관리)
  • *교환기(Exchange)**는 메시지를 적절한 큐로 라우팅합니다.
  • 기본 교환기 외에 새 교환기를 만들고 큐와 바인딩할 수 있습니다.
    • Publish Message: 특정 교환기로 직접 메시지를 발행합니다.
    • Bindings: 교환기와 큐 간의 바인딩 관계를 설정합니다. 이를 통해 특정 조건에 맞는 메시지가 적절한 큐로 전달됩니다.
  • 주요 기능:
  1. Bindings (바인딩 관계 확인)
  • 교환기와 큐 사이의 바인딩 관계를 한눈에 파악할 수 있습니다.
  • 특정 메시지가 어떻게 큐로 전달되는지 경로를 확인하고 수정할 수 있습니다.
  1. Channels (채널 관리)
  • 현재 활성화된 채널(클라이언트와 RabbitMQ 사이의 연결)을 보여줍니다.
  • 채널의 속도, 메시지 처리량과 같은 상태를 모니터링할 수 있습니다.
  1. Connections (연결 관리)
  • 클라이언트가 RabbitMQ와 맺은 연결 상태를 보여줍니다.
  • 특정 연결을 끊거나 강제 종료할 수 있습니다.
  1. Consumers (소비자 관리)
  • 현재 메시지를 소비 중인 소비자 목록을 보여줍니다.
  • 소비자 태그연결된 큐를 통해 각 소비자의 상태를 추적할 수 있습니다.
  1. Admin (관리자 설정)
  • 사용자권한을 관리합니다.
  • 새로운 사용자 생성, 역할 부여접근 권한 설정을 할 수 있습니다.

메시지 발행 및 소비 예제

  1. 메시지 발행 (Publish Message)
  1. Exchanges 탭에서 교환기 선택 → Publish Message 클릭.
  2. 메시지의 Routing Key를 입력 (큐에 전달될 키).
  3. 메시지 본문을 JSON 또는 텍스트로 작성.
  4. Publish 버튼을 클릭하여 메시지를 발행.
  1. 메시지 소비 (Get Messages)
  1. Queues 탭에서 특정 큐를 선택합니다.
  2. Get Messages 버튼을 클릭하여 큐에 쌓여 있는 메시지를 가져옵니다.
  3. 몇 개의 메시지를 가져올지 설정한 후 Get Message 버튼 클릭.
  4. 소비된 메시지가 화면에 표시됩니다.

RabbitMQ 모니터링

  • Graph 탭에서는 큐, 연결, 채널 등의 실시간 지표를 그래프로 볼 수 있습니다.
  • 특정 큐의 메시지 처리량(메시지 전송 및 수신)을 모니터링하여 병목 현상을 파악할 수 있습니다.
  • 메모리와 디스크 사용량 경고를 통해 클러스터의 성능 문제를 조기에 탐지합니다.

사용자 및 권한 관리

RabbitMQ는 사용자마다 권한을 다르게 설정할 수 있습니다.

  1. AdminUsers에서 새 사용자 생성.
  2. 각 사용자에게 administrator, monitoring, management 등의 역할을 부여할 수 있습니다.
  3. 사용자마다 특정 교환기와 큐에 대한 접근 권한을 설정할 수 있습니다.

이와 같은 절차로 RabbitMQ를 Kubernetes 클러스터에 배포할 수 있습니다.