• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

ingress_ctrl_nodepory.yaml 파일과 ingress_ctrl_loadbalancer.ymal의 목적은 무엇인가요?

22.04.25 23:46 작성 조회수 185

2

다른 파일들과는 다르게 ingress_ctrl_nodepory.yaml 파일과 ingress_ctrl_loadbalancer.ymal 파일은 이해가 잘 안됩니다 ㅠㅠ
 
4월 27일 변경, 질문 구체적으로 작성

4.8 인그레스(ingress) 강좌에서, 

 

deploy-hn.yaml를 실행시켜 3개의 chk-hn 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-hn)로 노출합니다.

deploy-ip.yaml를 실행시켜 3개의 chk-ip 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-ip)로 노출합니다.

deploy-ngnix.yaml를 실행시켜 3개의 ngnix 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-default)로 노출합니다.

 

그리고, ingress.yaml을 실행시켜 위에 생성한 3개의 서비스에 각각 가상호스트 역할을 하는 endpoints를 매핑합니다.

서비스 : endpoints

ing-default : /

ing-hn : /hn

ing-ip : /ip

 

그리고 ingress_ctrl_nodeport.yaml을 실행시켜 노트포트를 실행합니다.

그리고 노드포트 서비스가 30100번 포트로 띄워져 있으니 워커노드1번의 ip와 30100번 포트로 접속하면 웹 브라우저에서 해당 endpoints로 각 디플로이먼트에 접근 가능하였습니다.

 

그런데 제가 궁금한 점은 ingress_ctrl_nodeport.yaml 파일에는 20개의 오브젝트가 있다는 것입니다. 제가 생각하기에는 ingress_ctrl_nodeport.yaml에는 nodeport 타입의 서비스를 생성하는 오브젝트 1개만 있어야 하지 않을까요?

 

구체적 질문은

1) 왜 ingress_ctrl_nodeport.yaml에 20개의 오브젝트가 있는지 궁금합니다.

2) 20개의 오브젝트에 사용목적이 있다면 왜 사용하는 것인지도 궁금합니다.

3) ingress_ctrl_nodeport.yaml nodeport 타입의 서비스 오브젝트 1개만 두면 인그레스와 노트포트가 연동이 되지 않는 것인지도 궁금합니다.

답변 3

·

답변을 작성해보세요.

2

안녕하세요 

주도님이 바쁘셔서 제가 대신 답변 드립니다. 

Ingress ctrl의 오브젝트를 이미 살펴 보셨다면, Ingress는 단순히 서비스 1개(NodePort 또는 LoadBalancer)만을 선언하는 애가 아닌 것을 아실 것 같습니다. 

예를 들면 설정 데이터를 가지고 있는 ConfigMap이라던가.. 각종 권한을 조정해서 적절한 권한 만을 사용하게 하는 RBAC 관련이라던가..

webhook등을 관장하기 위한 서비스(ClusterIP로 동작) 라던가 등이 결합하여 Ingress 전체를 구성합니다. 

여기서 최종 노출을 편의적인 목적으로 NodePort로 할 것인가 LoadBalancer로 할 것인가를 정한 것일뿐 Ingress를 구성하기 위해서는 20개 (일부는 줄이려면 줄일 수도 있지만...통상적으로 그렇게까지 고쳐 쓰지 않습니다.) 로 구성된 것입니다. 

따라서 

1) 위의 내용으로 대답 가능할 것 같습니다. 

2) 개별 오브젝트를 모두 하나하나 설명하긴 좀 어려울 것 같고요. 이걸 설명한다는건 MetalLB, Metrics Server, Calico등에 대해서는 설명을 해야 하는 것과 비슷합니다. 아마도 강의를 끝까지 다 듣고 다 (충분히) 이해하신 상태에서  20개 오브젝트가 있는 Yaml을 보시면 어떤 내용인지는 보실 수는 있을꺼 같습니다. 그런데도 아마 연결 구조나 왜 이렇게 만들어졌는지 이해가 안되는 부분이 있을텐데요. 그건 nginx ingress controller 문서를 찾아서 봐야 합니다. 또는 image builder source를요 (보통 dockerfile)

또한 일부 옵션은 다루지 않은게 있으니 그것도 쿠버네티스 문서에서 찾아서 봐야 합니다. 

보안쪽 옵션도 마찬가지이고요. 

3) 1과 2번 답변으로 이 질문에 답이 될 것 같네요. 

 

참고로 rewrite한다는 것은 그만큼 그걸 지원하기 위한 구성이 20개 오브젝트들이 유기적으로 엮어서 된다는 것입니다. 쿠버네티스를 레고 같은 애이니까요. 물론 단순히 쿠버 레고를 엮는게 아니라 새로 그에 필요에 따라 이미지도 만들어야 겠지만요. 

20개 오브젝트들에 대해서 개별적인 이해를 다 하고 나시면 좀 더 그림을 그리는데 도움이 되실테니 꼭 해당 내용들을 나중에 다 보시면 좋겠습니다. 

 

도움이 되셨으면 좋겠습니다. 

조훈 드림. 

인그레스를 자유롭게 구성하고 사용하기 위해서는 아직 많은 공부가 필요한 것 같습니다.

조훈님, 주도님 답변 감사합니다.

1

주도님의 프로필

주도

2022.04.26

안녕하세요, 석진님.

튜터 주도입니다.

 

yaml 파일이 이해가 안 간다고 해주셨는데,

혹시 구체적으로 어떤 점이 이해가 안 가시는 건지, 간단히 추가 설명 부탁드려도 될까요?

추가 설명해주시면, 맞춰서 답변드릴 수 있도록 하겠습니다!

 

감사합니다.

0

네 주도님 안녕하세요?

4.8 인그레스(ingress) 강좌에서, 

 

deploy-hn.yaml를 실행시켜 3개의 chk-hn 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-hn)로 노출합니다.

deploy-ip.yaml를 실행시켜 3개의 chk-ip 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-ip)로 노출합니다.

deploy-ngnix.yaml를 실행시켜 3개의 ngnix 파드를 디플로이먼트로 띄우고 ClusterIP 타입의 서비스(ing-default)로 노출합니다.

 

그리고, ingress.yaml을 실행시켜 위에 생성한 3개의 서비스에 각각 가상호스트 역할을 하는 endpoints를 매핑합니다.

서비스 : endpoints

ing-default : /

ing-hn : /hn

ing-ip : /ip

 

그리고 ingress_ctrl_nodeport.yaml을 실행시켜 노트포트를 실행합니다.

그리고 노드포트 서비스가 30100번 포트로 띄워져 있으니 워커노드1번의 ip와 30100번 포트로 접속하면 웹 브라우저에서 해당 endpoints로 각 디플로이먼트에 접근 가능하였습니다.

 

그런데 제가 궁금한 점은 ingress_ctrl_nodeport.yaml 파일에는 20개의 오브젝트가 있다는 것입니다. 제가 생각하기에는 ingress_ctrl_nodeport.yaml에는 nodeport 타입의 서비스를 생성하는 오브젝트 1개만 있어야 하지 않을까요?

 

구체적 질문은

1) 왜 ingress_ctrl_nodeport.yaml에 20개의 오브젝트가 있는지 궁금합니다.

2) 20개의 오브젝트에 사용목적이 있다면 왜 사용하는 것인지도 궁금합니다.

3) ingress_ctrl_nodeport.yaml nodeport 타입의 서비스 오브젝트 1개만 두면 인그레스와 노트포트가 연동이 되지 않는 것인지도 궁금합니다.