-
github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 7부AWS 2023. 4. 5. 16:38
6부 링크
https://may9noy.tistory.com/912
eks 에 스프링만 있으니 재미가 없어서,,, 카프카를 앞에 붙이고, 부하테스트를 진행해보겠다.
https://aws.amazon.com/ko/blogs/korea/how-to-loading-test-based-on-aws/
위 링크에 가면 다양한 부하테스트 하는 방법이 나온다.
Jmeter 과 Siege 를 사용하려고 한다.
일단 kafak 부터 eks에 배포해보자.
티스토리 블로그 내용을 따라해보자.
우선 eks에서 바로 하기에는 좀 무서우니, docker-desktop이 설치되어있는 로컬컴퓨터에서 사용하고, 스프링도 카프카에 대한 코드를 추가해서 db에 입력이 잘 되는지 확인하려고 한다.
윈도우라면 파워쉘로 실행해주세요!!
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/helm.html
헬름 차트를 설치한다.
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh
로컬에서 helm 차트를 가지고 카프카를 실행시켜본다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-kafka bitnami/kafka
이렇게 하면 나오는 결과는 아래와 같다.
helm install my-kafka --set replicaCount=3 bitnami/kafka
이렇게 하면 나오는 결과는 아래와 같다.
레플리카가 3개니까 카프카 브로커가 3개가 나왔다.
** Please be patient while the chart is being deployed ** Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster: my-kafka.default.svc.cluster.local Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster: my-kafka-0.my-kafka-headless.default.svc.cluster.local:9092 To create a pod that you can use as a Kafka client run the following commands: kubectl run my-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.4.0-debian-11-r15 --namespace default --command -- sleep infinity kubectl exec --tty -i my-kafka-client --namespace default -- bash PRODUCER: kafka-console-producer.sh \ --broker-list my-kafka-0.my-kafka-headless.default.svc.cluster.local:9092 \ --topic test CONSUMER: kafka-console-consumer.sh \ --bootstrap-server my-kafka.default.svc.cluster.local:9092 \ --topic test \ --from-beginning
프로듀서와 컨슈머를 어떻게 사용하는지 나와있다. 토픽에 파티션 3개로 하고 토픽을 만든다음, 프로듀서와 컨슈머를 실행해보겠다.
우선 아래의 명령어를 통해 카프카 클라이언트를 만들어준다.
kubectl run my-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.4.0-debian-11-r15 --namespace default --command -- sleep infinity
만들었으면 클라이언트에 접속해보자.
kubectl exec --tty -i my-kafka-client --namespace default -- bash
my-kafka-client 파드 내부로 들어왔다면 my-message 이름의 topic 과 파티션을 3으로 설정하고 만들어보자.
kafka-topics.sh --create --topic my-message --partitions 3 --bootstrap-server my-kafka.default.svc.cluster.local:9092
프로듀서로 데이터를 보내보고 컨슈머로 확인해보겠다.
kafka-console-producer.sh --bootstrap-server my-kafka.default.svc.cluster.local:9092 --topic my-message
파워쉘을 하나 더 만들어서 my-kafka-client 파드에 들어가서 컨슈머를 켜주면 된다.
kafka-console-consumer.sh --bootstrap-server my-kafka.default.svc.cluster.local:9092 --topic my-message
이렇게 켜주고 producer 을 켜준 파워쉘에서 메시지를 아무거나 입력하면 컨슈머에서 잘 받아지는 걸 확인할 수 있다.
kubectl delete pod my-kafka-client helm list helm delete my-kafka
로 만들었던 파드와 kafka를 꺼주면 된다.
로컬에서 스프링을 켜고, 헬름차트로 만든 카프카를 켜주면, 스프링에서 카프카로 접속을 못한다.
그래서 카프카를 다운받고, 따로 실행시켜줘야 스프링에서 접속이 가능하다.
helm chart kafka external access 라고 구글링을 해봤고, 여러방법을 사용했지만, 작동하지 않는다.
'AWS' 카테고리의 다른 글
ec2에서 jenkins 빌드서버 만들어보기 3편 (0) 2023.04.10 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 8부 (0) 2023.04.08 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 6부 (0) 2023.04.05 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 5부 (0) 2023.04.03 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 4부 (0) 2023.04.03