작성
·
658
0
안녕하세요 강사님!
강의를 듣고있는 수강생입니다.
강의를 토대로 쿠버네티스를 이용해서 web-was를 연동하려 하는데 한 가지 궁금한 부분이 있습니다.
테스트 환경은 Statefulset을 이용하여 nginx는 외부와 통신이 되게끔 설정을 했고 tomcat은 내부 파드들만 통신이 되게끔 하여 각 3개씩 구성과 storageclass로 볼륨도 개별로 가지도록 만들어준 상태입니다.
파드를 만드는 것까진 이제 문제가 없는데 한가지 궁금한게 생겼습니다.
일반적인 서버같은 경우엔 nginx에서 tomcat으로 프록시 패스를 직접 default.conf에 tomcat ip주소를 넣어 설정하는데
쿠버네티스에선 파드가 재생성되어지면 kubectl exec 로 들어가 수정해도 사라지는 특성 때문에 매번 파드가 생성 될때 마다
일일이 찾아 들어가서 수정해주기엔 너무 효율이 떨어지더라구요.
또한 파드가 재생성이 되면 IP또한 바뀌어서 ConfigMap으로 결국 수작업으로 일일이 바꿔줘야 하는 일이 생길 것같아 시도는 안해 봤습니다. 해도 힘들것 같더라구요..
테스트에선 3개로 했지만 만약 10개 ~20개의 nginx와 tomcat을 배포하고 싶은 상황이면
web-was 간 연동을 어떤식으로 해줘야할지 감이 안잡힙니다.
인터넷 서칭을 해도 이런 쪽으로는 잘 안나와 있는것 같아 질문드립니다.
항상 고생 많으십니다
감사합니다.
답변 1
0
안녕하세요 강사 최일선입니다.
제가 이해한 질문은 NGINX의 프록시를 TOMCAT으로 고정하고 싶다고 말씀하신듯 합니다.
살펴보면 톰캣도 스테이트풀셋으로 지정돼있고 (svc의 내용 잘라서 정확해보이지는 않습니다만) ClusterIP 타입의 서비스도 있는 것으로 보입니다.
제가 드리는 해결책은 ConfigMap Mount를 사용하는 건데요. Configmap을 사용해 default.conf 파일을 정의하고 pod에서 참조하도록 하면 됩니다.
1. 우선 Proxy 설정이 담긴 default.conf 를 우선 작성한 다음 configmap 으로 생성합니다. 다음 configmap 생성 예제를 보시면 될 듯합니다.
kubectl create configmap myconfig --from-file=default.conf
2. 이때 Proxy가 가리키는 주소는 tomcat의 <svc-name>.<namespace-name>으로 하시면 됩니다. 네트워크 쪽에서 DNS 내용을 공부하셨다면 쿠버네티스 DNS 서비스를 사용한다는 것 알고 계실겁니다.
3. 그리고 다음 링크의 Config 내용을 참조해서 Configmap 파일을 마운팅하면 됩니다.
https://kubernetes.io/ko/docs/concepts/configuration/configmap/
위 링크 내용 중 보여드리고 싶은 부분만 가져온 것인데요 여기서는 game-demo라는 cofigmap을 참조해 /config에 직접 마운트하는 모습이 확인됩니다.
감사합니다.