EKS Pod에 RabbitMQ를 설치하고 접속 테스트를 진행해보겠다.
RabbitMQ는 Helm Chart로 설치해도 되지만 yaml 파일을 만들어서 접속해보겠다.
또한 다른 pod에서 Ping 테스트를 진행해 보겠다.
필자는 해당 환경에서 이어서 진행한다.
1) RabbitMQ PV yaml 파일 만들기 (저장소)
1) $ vi rabbitmq-pv.yaml
"""
apiVersion: v1
kind: PersistentVolume
metadata:
name: rabbitmq-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: gp2-immediate
awsElasticBlockStore:
volumeID: "생성한 EBS ID" #""는 제거
fsType: ext4
"""
$ kubectl apply -f rabbitmq-pv.yaml #yaml 배포
$ kubectl get svc #서비스 생성 확인
2) RabbitMQ PVC yaml 파일 만들기 (저장소 전달)
# vi rabbitmq-pvc.yaml
"""
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rabbitmq-pvc
labels:
app: rabbitmq
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: gp2-immediate
"""
$ kubectl apply -f rabbitmq-pvc.yaml #yaml 배포
$ kubectl get svc #서비스 생성 확인
3) RabbitMQ yaml 파일 만들고 실행하기
vi rabbitmq-deployment.yaml
"""
# RabbitMQ Deployment 정의
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
labels:
app: rabbitmq
spec:
replicas: 1
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- ip-172-31-0-33.ap-northeast-2.compute.internal
containers:
- name: rabbitmq
image: rabbitmq:3-management
ports:
- containerPort: 5672
- containerPort: 15672
env:
- name: RABBITMQ_DEFAULT_USER
value: user
- name: RABBITMQ_DEFAULT_PASS
value: password
volumeMounts:
- mountPath: /var/lib/rabbitmq
name: rabbitmq-pv
volumes:
- name: rabbitmq-pv
persistentVolumeClaim:
claimName: rabbitmq-pvc
"""
$ kubectl apply -f rabbitmq-deployment.yaml #yaml 배포
$ kubectl get svc #서비스 생성 확인
4) RabbitMQ Service 실행
vi rabbit-service.yaml
"""
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
labels:
app: rabbitmq
spec:
selector:
app: rabbitmq
ports:
- name: amqp
protocol: TCP
port: 5672
targetPort: 5672
- name: management
protocol: TCP
port: 15672
targetPort: 15672
type: ClusterIP
"""
$ kubectl apply -f rabbit-service.yaml #yaml 배포
$ kubectl get svc #서비스 생성 확인
5) AWS EBS CSI 드라이버 설치
eksctl utils associate-iam-oidc-provider --region=<REGION> --cluster=<CLUSTER_NAME> --approve
kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/ecr/?ref=master"
6) Pod에서 RabbitMQ 접속 테스트
1) $ kubectl get pods #rabbitmq pod 이름 확인
2) $ kubectl get pod rabbitmq-5d797cbcfd-8tv6s -o wide #생성한 rabbitmq pod IP 확인
3) kubectl exec -it my-nginx-pod -- /bin/bash #pod 접속
4) ping rabbitmqIP
<Ping이 안될 때>
apt-get update && apt-get install -y iputils-ping #ping 명령어 설치
혹은
curl -I http://rabbitmqIP:15672 #ping이 안될때