강사님이 containerPort는 방화벽의 역할이 아니고 listening port를 보여주는 역할이라고 하셔서

먼 소리지? 했다. 그래서 좀 더 자세하게 알아봤다.

 

우선 선배님들 카톡방에다가 질문을 투척했음

 

 

In a nutshell: targetPort and containerPort basically refer to the same port (so if both are used they are expected to have the same value) but they are used in two different contexts and have entirely different purposes.
They cannot be used interchangeably as both are part of the specification of two distinct kubernetes resources/objects: Service and Pod respectively. While the purpose of containerPort can be treated as purely informational, targetPort is required by the Service which exposes a set of Pods.
It's important to understand that by declaring containerPort with the specific value in your Pod/Deployment specification you cannot make your Pod to expose this specific port e.g. if you declare in containerPort field that your nginx Pod exposes port 8080 instead of default 80, you still need to configure your nginx server in your container to listen on this port.
Declaring containerPort in Pod specification is optional. Even without it your Service will know where to direct the request based on the info it has declared in its targetPort.
It's good to remember that it's not required to declare targetPort in the Service definition. If you omit it, it defaults to the value you declared for port (which is the port of the Service itself).
https://stackoverflow.com/questions/63448062/difference-between-container-port-and-targetport-in-kubernetes

 

새로운 사실)

targetPort도 service definition에서 굳이 선언할 필요 없다네.

생략하면 port 값을 targetPort의 default 값으로 둔대.

 

어쨌든...

결론은 위의 사진과 같고, 그러면 containerPort가 굳이 왜 필요한가를 생각해보자.

 

containerPort가 없으면, 애플리케이션이 어떤 port를 통해 동작하는지 한눈에 알기 어렵다.

-> 왜?

이렇게 서비스의 endpoint를 직접 확인해서, 해당 pod에 어떤 port가 열려있는지 봐야한다.

그럼 pod의 ip을 확인해야되는데, pod은 죽었다가 살아나면 ip가 바뀌잖아?

그러니까 이 방법은 절대 좋은 방법이 아닌거야.

 

그래서 이래버리면 엄청난 트롤링이 되어버리는거다.

관리자는 당연히 containerPort:8080이니까 당연히 8080 port로 서비스가 되고 있다고 생각하는데

사실 애플리케이션이 80 port로 서비스 되고 있으면 문제가 되는거지.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기