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 사용법
주요 기능
- Overview (대시보드 요약)
- 클러스터의 상태와 노드 정보, 메모리/디스크 사용량을 요약해서 보여줍니다.
- 메시지 대기열(Queue)의 개수와 처리 현황도 빠르게 확인할 수 있습니다.
- Queues (대기열 관리)
- 메시지 큐를 생성, 수정, 삭제할 수 있습니다.
- 큐를 클릭하면 큐에 저장된 메시지 수, 대기 중인 소비자(consumer), 그리고 큐의 상태를 볼 수 있습니다.
- Publish Message: 대기열에 직접 메시지를 넣을 수 있습니다.
- Get Message: 대기열에서 메시지를 수동으로 가져올 수 있습니다.
- Purge Queue: 큐를 비울 수 있습니다.
- Delete Queue: 대기열을 삭제합니다.
- 주요 기능:
- Exchanges (교환기 관리)
- *교환기(Exchange)**는 메시지를 적절한 큐로 라우팅합니다.
- 기본 교환기 외에 새 교환기를 만들고 큐와 바인딩할 수 있습니다.
- Publish Message: 특정 교환기로 직접 메시지를 발행합니다.
- Bindings: 교환기와 큐 간의 바인딩 관계를 설정합니다. 이를 통해 특정 조건에 맞는 메시지가 적절한 큐로 전달됩니다.
- 주요 기능:
- Bindings (바인딩 관계 확인)
- 교환기와 큐 사이의 바인딩 관계를 한눈에 파악할 수 있습니다.
- 특정 메시지가 어떻게 큐로 전달되는지 경로를 확인하고 수정할 수 있습니다.
- Channels (채널 관리)
- 현재 활성화된 채널(클라이언트와 RabbitMQ 사이의 연결)을 보여줍니다.
- 채널의 속도, 메시지 처리량과 같은 상태를 모니터링할 수 있습니다.
- Connections (연결 관리)
- 클라이언트가 RabbitMQ와 맺은 연결 상태를 보여줍니다.
- 특정 연결을 끊거나 강제 종료할 수 있습니다.
- Consumers (소비자 관리)
- 현재 메시지를 소비 중인 소비자 목록을 보여줍니다.
- 소비자 태그와 연결된 큐를 통해 각 소비자의 상태를 추적할 수 있습니다.
- Admin (관리자 설정)
- 사용자와 권한을 관리합니다.
- 새로운 사용자 생성, 역할 부여 및 접근 권한 설정을 할 수 있습니다.
메시지 발행 및 소비 예제
- 메시지 발행 (Publish Message)
- Exchanges 탭에서 교환기 선택 → Publish Message 클릭.
- 메시지의 Routing Key를 입력 (큐에 전달될 키).
- 메시지 본문을 JSON 또는 텍스트로 작성.
- Publish 버튼을 클릭하여 메시지를 발행.
- 메시지 소비 (Get Messages)
- Queues 탭에서 특정 큐를 선택합니다.
- Get Messages 버튼을 클릭하여 큐에 쌓여 있는 메시지를 가져옵니다.
- 몇 개의 메시지를 가져올지 설정한 후 Get Message 버튼 클릭.
- 소비된 메시지가 화면에 표시됩니다.
RabbitMQ 모니터링
- Graph 탭에서는 큐, 연결, 채널 등의 실시간 지표를 그래프로 볼 수 있습니다.
- 특정 큐의 메시지 처리량(메시지 전송 및 수신)을 모니터링하여 병목 현상을 파악할 수 있습니다.
- 메모리와 디스크 사용량 경고를 통해 클러스터의 성능 문제를 조기에 탐지합니다.
사용자 및 권한 관리
RabbitMQ는 사용자마다 권한을 다르게 설정할 수 있습니다.
- Admin → Users에서 새 사용자 생성.
- 각 사용자에게 administrator, monitoring, management 등의 역할을 부여할 수 있습니다.
- 사용자마다 특정 교환기와 큐에 대한 접근 권한을 설정할 수 있습니다.
이와 같은 절차로 RabbitMQ를 Kubernetes 클러스터에 배포할 수 있습니다.
'Kubernetes' 카테고리의 다른 글
Kubernetes Calico Bird is not ready (0) | 2024.10.26 |
---|---|
Kubernetes Calico node 시작 시 kube-apiserver의 svc로 통신 실패 (0) | 2024.10.26 |
Kubernetes Dashboard 배포 Istio domain 설정 (0) | 2024.10.14 |
Kubernetes Session Affinity (0) | 2024.10.13 |
Kubernetes Ingress Controller (2) | 2024.10.13 |