containerPort는 방화벽이 아니다. (Rather, optional/informational)

2022. 4. 21. 12:09·System Engineering/Kubernetes

강사님이 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로 서비스 되고 있으면 문제가 되는거지.

저작자표시 비영리 (새창열림)

'System Engineering > Kubernetes' 카테고리의 다른 글

쿠버네티스 네트워크 오개념 -1 (routing에 관해서)  (0) 2022.04.29
쿠버네티스 네트워크 분석 좋은 글 (tcp-dump)  (0) 2022.04.29
kubernetes 9/17  (2) 2022.04.16
CKA 취득 목표  (0) 2022.04.07
[쫌 어려움] 쿠버네티스 네트워크를 이해해보자  (0) 2022.04.06
'System Engineering/Kubernetes' 카테고리의 다른 글
  • 쿠버네티스 네트워크 오개념 -1 (routing에 관해서)
  • 쿠버네티스 네트워크 분석 좋은 글 (tcp-dump)
  • kubernetes 9/17
  • CKA 취득 목표
Hojae Lee
Hojae Lee
Solutions Architect
  • Hojae Lee
    기억력이 금붕어라
    Hojae Lee
  • 전체
    오늘
    어제
  • 공지사항

    • 참고사항
    • 이 블로그를 잘 활용하는 방법
    • my linkedin
    • 분류 전체보기 (404)
      • Career Path (19)
        • My Achievements (10)
        • About Career (1)
      • Projects for $100 (1)
      • CLOUD (183)
        • Azure Cloud (61)
        • AWS Cloud (120)
      • System Engineering (91)
        • Kubernetes (48)
        • Docker (0)
        • System Design (4)
        • DevOps (2)
        • SRE (5)
        • git (1)
        • 리눅스, 라즈베리파이 (17)
        • Powershell (2)
      • Computer Science (70)
        • Operating System (22)
        • Computer Architecture (5)
        • Network (18)
        • Database (13)
        • Security (9)
        • Machine Learning, AI (1)
      • Cloud Webinar (4)
        • AWS Summit (4)
      • 3D 프린터 (1)
      • IaC (4)
        • CloudFormation (0)
        • Terraform (4)
      • 아두이노 (임베디드) (2)
      • 개발자의 전기 전자 공부 (3)
      • 이전 직장 (11)
        • TMAX Soft (11)
      • 작업 환경 셋업 (3)
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
Hojae Lee
containerPort는 방화벽이 아니다. (Rather, optional/informational)
상단으로

티스토리툴바