Kubernetes에서 Pulsar 시작하기
Kubernetes에서 Pulsar 시작하기 (Get started in Kubernetes)
tip 이 페이지는 더 이상 업데이트되지 않는 문서예요. Kubernetes에서 Pulsar를 실행하는 최신·완전한 정보는 quick start guide를 참고해요.
이 섹션은 Helm으로 Kubernetes에 Apache Pulsar를 설치하고 실행하는 모든 단계를 안내해요. 다음 내용을 포함해요.
- Helm을 사용해 Kubernetes에 Apache Pulsar 설치
- Apache Pulsar 시작 및 중지
pulsar-admin으로 토픽 생성- Pulsar 클라이언트로 메시지 생성·소비
- Prometheus와 Grafana로 Apache Pulsar 상태 모니터링
프로덕션용 Pulsar 클러스터 배포에 대해서는 Pulsar Helm chart 구성·설치 문서를 읽어봐요.
출처: 문서
본문
사전 준비 (Prerequisite)
- Kubernetes 서버 1.18.0+
- kubectl 1.18.0+
- Helm 3.0+
tip 다음 단계 중 2단계와 3단계는 개발자용이고, 4단계와 5단계는 관리자용이에요.
0단계: Kubernetes 클러스터 준비 (Prepare a Kubernetes cluster)
Pulsar Helm chart를 설치하기 전에 Kubernetes 클러스터를 만들어야 해요. 안내에 따라 Kubernetes 클러스터를 준비할 수 있어요.
이 빠른 시작 가이드에서는 Minikube를 사용해요. Kubernetes 클러스터를 준비하려면 다음 단계를 따르세요.
- Minikube에 Kubernetes 클러스터를 만들어요.
minikube start --memory=8192 --cpus=4 --kubernetes-version=<k8s-version>
<k8s-version>은 Minikube 설치가 지원하는 Kubernetes 버전 중 아무 것이나 될 수 있어요. 예: v1.16.1.
kubectl이 Minikube를 사용하도록 설정해요.
kubectl config use-context minikube
- Minikube의 로컬 Kubernetes 클러스터와 함께 Kubernetes Dashboard를 사용하려면 아래 명령을 입력해요.
minikube dashboard
이 명령은 브라우저에서 웹페이지가 자동으로 열리게 해요.
1단계: Pulsar Helm chart 설치 (Install Pulsar Helm chart)
- Pulsar charts 저장소를 추가해요.
helm repo add apachepulsar https://pulsar.apache.org/charts
helm repo update
- Pulsar Helm chart 저장소를 클론해요.
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart
prepare_helm_release.sh스크립트를 실행해 Apache Pulsar Helm chart 설치에 필요한 시크릿을 만들어요. Grafana 대시보드와 Pulsar Manager에 로그인할 때 사용자명pulsar, 비밀번호pulsar를 사용해요.
./scripts/pulsar/prepare_helm_release.sh \
-n pulsar \
-k pulsar-mini \
-c
- Pulsar Helm chart를 사용해 Pulsar 클러스터를 Kubernetes에 설치해요.
helm install \
--values examples/values-minikube.yaml \
--namespace pulsar \
pulsar-mini apachepulsar/pulsar
- 모든 파드의 상태를 확인해요.
kubectl get pods -n pulsar
모든 파드가 성공적으로 시작되면 STATUS가 Running 또는 Completed로 바뀐 것을 볼 수 있어요.
출력 (Output)
NAME READY STATUS RESTARTS AGE
pulsar-mini-bookie-0 1/1 Running 0 9m27s
pulsar-mini-bookie-init-5gphs 0/1 Completed 0 9m27s
pulsar-mini-broker-0 1/1 Running 0 9m27s
pulsar-mini-grafana-6b7bcc64c7-4tkxd 1/1 Running 0 9m27s
pulsar-mini-prometheus-5fcf5dd84c-w8mgz 1/1 Running 0 9m27s
pulsar-mini-proxy-0 1/1 Running 0 9m27s
pulsar-mini-pulsar-init-t7cqt 0/1 Completed 0 9m27s
pulsar-mini-pulsar-manager-9bcbb4d9f-htpcs 1/1 Running 0 9m27s
pulsar-mini-toolset-0 1/1 Running 0 9m27s
pulsar-mini-zookeeper-0 1/1 Running 0 9m27s
pulsar네임스페이스의 모든 서비스 상태를 확인해요.
kubectl get services -n pulsar
출력 (Output)
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
pulsar-mini-bookie ClusterIP None <none> 3181/TCP,8000/TCP 11m
pulsar-mini-broker ClusterIP None <none> 8080/TCP,6650/TCP 11m
pulsar-mini-grafana LoadBalancer 10.106.141.246 <pending> 3000:31905/TCP 11m
pulsar-mini-prometheus ClusterIP None <none> 9090/TCP 11m
pulsar-mini-proxy LoadBalancer 10.97.240.109 <pending> 80:32305/TCP,6650:31816/TCP 11m
pulsar-mini-pulsar-manager LoadBalancer 10.103.192.175 <pending> 9527:30190/TCP 11m
pulsar-mini-toolset ClusterIP None <none> <none> 11m
pulsar-mini-zookeeper ClusterIP None <none> 2888/TCP,3888/TCP,2181/TCP 11m
2단계: pulsar-admin으로 테넌트/네임스페이스/토픽 생성 (Use pulsar-admin to create Pulsar tenants/namespaces/topics)
pulsar-admin은 Pulsar의 CLI(커맨드라인 인터페이스) 도구예요. 이 단계에서는 pulsar-admin으로 테넌트, 네임스페이스, 토픽 같은 리소스를 만들 수 있어요.
toolset컨테이너에 들어가요.
kubectl exec -it -n pulsar pulsar-mini-toolset-0 -- /bin/bash
toolset컨테이너에서apache라는 테넌트를 만들어요.
bin/pulsar-admin tenants create apache
그런 다음 테넌트 목록을 조회해 테넌트가 성공적으로 생성됐는지 확인해요.
bin/pulsar-admin tenants list
다음과 비슷한 출력을 볼 수 있어요. apache 테넌트가 성공적으로 생성된 것이에요.
"apache"
"public"
"pulsar"
toolset컨테이너에서apache테넌트에pulsar라는 네임스페이스를 만들어요.
bin/pulsar-admin namespaces create apache/pulsar
그런 다음 apache 테넌트의 네임스페이스 목록을 조회해 네임스페이스가 성공적으로 생성됐는지 확인해요.
bin/pulsar-admin namespaces list apache
다음과 비슷한 출력을 볼 수 있어요. apache/pulsar 네임스페이스가 성공적으로 생성된 것이에요.
"apache/pulsar"
toolset컨테이너에서apache/pulsar네임스페이스에4개 파티션을 가진test-topic토픽을 만들어요.
bin/pulsar-admin topics create-partitioned-topic apache/pulsar/test-topic -p 4
toolset컨테이너에서apache/pulsar네임스페이스의 모든 파티셔닝된 토픽을 조회해요.
bin/pulsar-admin topics list-partitioned-topics apache/pulsar
그러면 apache/pulsar 네임스페이스의 모든 파티셔닝된 토픽을 볼 수 있어요.
"persistent://apache/pulsar/test-topic"
3단계: Pulsar 클라이언트로 메시지 생성·소비 (Use Pulsar client to produce and consume messages)
Pulsar 클라이언트로 프로듀서와 컨슈머를 만들어 메시지를 생성·소비할 수 있어요.
기본적으로 Pulsar Helm chart는 Pulsar 클러스터를 Kubernetes LoadBalancer로 노출해요. Minikube에서는 다음 명령으로 프록시 서비스를 확인할 수 있어요.
kubectl get services -n pulsar | grep pulsar-mini-proxy
다음과 비슷한 출력을 볼 수 있어요.
pulsar-mini-proxy LoadBalancer 10.97.240.109 <pending> 80:32305/TCP,6650:31816/TCP 28m
이 출력은 Pulsar 클러스터의 바이너리 포트와 HTTP 포트가 매핑된 노드 포트가 무엇인지 알려줘요. 80: 뒤의 포트는 HTTP 포트이고, 6650: 뒤의 포트는 바이너리 포트예요.
그런 다음 다음 명령으로 Minikube 서버의 IP 주소와 노출된 포트를 찾을 수 있어요.
minikube service pulsar-mini-proxy -n pulsar
출력 (Output)
|-----------|-------------------|-------------|-------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------|-------------|-------------------------|
| pulsar | pulsar-mini-proxy | http/80 | http://172.17.0.4:32305 |
| | | pulsar/6650 | http://172.17.0.4:31816 |
|-----------|-------------------|-------------|-------------------------|
🏃 Starting tunnel for service pulsar-mini-proxy.
|-----------|-------------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------|-------------|------------------------|
| pulsar | pulsar-mini-proxy | | http://127.0.0.1:61853 |
| | | | http://127.0.0.1:61854 |
|-----------|-------------------|-------------|------------------------|
이 시점에서 Pulsar 클라이언트에 연결할 서비스 URL을 얻을 수 있어요. URL 예시는 다음과 같아요.
webServiceUrl=http://127.0.0.1:61853/
brokerServiceUrl=pulsar://127.0.0.1:61854/
그러면 다음 단계를 진행할 수 있어요.
- 다운로드 페이지에서 Apache Pulsar tarball을 내려받아요.
- 다운로드한 파일에 따라 tarball을 압축 해제해요.
tar -xf <file-name>.tar.gz
PULSAR_HOME을 노출해요. (1) 압축 해제한 다운로드 파일의 디렉터리로 들어가요. (2)PULSAR_HOME을 환경 변수로 설정해요.
export PULSAR_HOME=$(pwd)
- Pulsar 클라이언트를 구성해요.
${PULSAR_HOME}/conf/client.conf파일에서webServiceUrl과brokerServiceUrl을 위 단계에서 얻은 서비스 URL로 교체해요. apache/pulsar/test-topic에서 메시지를 소비할 구독을 만들어요.
bin/pulsar-client consume -s sub apache/pulsar/test-topic -n 0
- 새 터미널을 열고, 그 터미널에서 프로듀서를 만들어
test-topic토픽에 10개의 메시지를 보내요.
bin/pulsar-client produce apache/pulsar/test-topic -m "---------hello apache pulsar-------" -n 10
- 결과를 확인해요.
- 프로듀서 측
출력 (Output)
메시지가 성공적으로 생성됐어요.
18:15:15.489 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced
- 컨슈머 측
출력 (Output)
동시에 아래처럼 메시지를 받을 수 있어요.
----- got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar------------ got message --------------hello apache pulsar-------
4단계: Pulsar Manager로 클러스터 관리 (Use Pulsar Manager to manage the cluster)
Pulsar Manager는 Pulsar를 관리·모니터링하는 웹 기반 GUI 관리 도구예요.
- 기본적으로
Pulsar Manager는 별도의LoadBalancer로 노출돼요. 다음 명령으로 Pulsar Manager UI를 열 수 있어요.
minikube service -n pulsar pulsar-mini-pulsar-manager
- 브라우저에서 Pulsar Manager UI가 열릴 거예요. 사용자명
pulsar, 비밀번호pulsar로 Pulsar Manager에 로그인할 수 있어요. - Pulsar Manager UI에서 환경(environment)을 만들 수 있어요.
- 왼쪽 위의
New Environment버튼을 클릭해요. - 팝업 창의
Environment Name필드에pulsar-mini를 입력해요. - 팝업 창의
Service URL필드에http://pulsar-mini-broker:8080를 입력해요. - 팝업 창에서
Confirm버튼을 클릭해요.
- 왼쪽 위의
- 환경을 성공적으로 만든 뒤에는 해당 환경의
tenants페이지로 이동해요. 그런 다음 Pulsar Manager로tenants,namespaces,topics를 만들 수 있어요.
5단계: Prometheus와 Grafana로 클러스터 모니터링 (Use Prometheus and Grafana to monitor cluster)
Grafana는 시계열 데이터를 대시보드로 시각화하는 데 쓸 수 있는 오픈소스 시각화 도구예요.
- 기본적으로 Grafana는 별도의
LoadBalancer로 노출돼요. 다음 명령으로 Grafana UI를 열 수 있어요.
minikube service pulsar-mini-grafana -n pulsar
- 브라우저에서 Grafana UI가 열려요. 사용자명
pulsar, 비밀번호pulsar로 Grafana 대시보드에 로그인할 수 있어요. - Pulsar 클러스터의 여러 구성 요소에 대한 대시보드를 볼 수 있어요.
더 알아보기 (Learn more)
- 최신 정보는 getting-started-helm 문서를 참고해요.
- 프로덕션 배포 구성을 위한 Pulsar Helm chart 구성·설치 문서를 봐요.
- 클러스터 준비 방법은 helm-prepare 문서를 참고해요.
- Pulsar Manager 사용법은 administration-pulsar-manager 문서를 살펴봐요.