@Manikanta P가 위에 제시 한 대답이 맞습니다. 그러나 처음 읽을 때는 "항구"에 대한 설명이 다소 불분명 할 수 있습니다. 예를 들어 설명하겠습니다.
httpd가 호스팅하는 정적 콘텐츠 (프론트 페이지, 이미지 등)와 바람둥이가 호스팅하는 동적 콘텐츠 (예 : 요청에 대한 응답 등)가 포함 된 웹 애플리케이션을 생각해보십시오. 웹 서버 (또는 정적 콘텐츠)는 포트에서 httpd에 의해 제공되는 80
반면 Appserver (또는 동적 콘텐츠)는 포트에서 tomcat에 의해 제공됩니다 8080
.
개발자가 원하는 것 : 사용자는 외부에서 Appserver가 아닌 외부에서 웹 서버에 액세스 할 수 있어야합니다.
솔루션 : service.yml에있는 Webserver의 서비스 유형은 NodePort가되고 service.yml에있는 Appserver의 서비스 유형은 ClusterIP가됩니다.
웹 서버의 service.yml 코드 :
spec:
selector:
app: Webserver
type: NodePort // written to make this service accessible from outside.
ports:
- nodePort: 30475 // To access from outside, type <host_IP>:30475 in browser.
port: 5050 // (ignore for now, I will explain below).
protocol: TCP
targetPort: 80 // port where httpd runs inside the webserver pod.
Appserver의 service.yml에 대한 코드
spec:
selector:
app: appserver
type: ClusterIP // written to make this service NOT accessible from outside.
ports:
- port: 5050 // port to access this container internally
protocol: TCP
targetPort: 8080 // port where tomcat runs inside the appserver pod.
또한 httpd.conf
웹 서버 의 파일에 사용자의 요청을 앱 서버로 리디렉션하는 IP를 작성합니다. 이 IP는 host_IP:5050
.
여기서 정확히 무슨 일이 일어나고 있습니까? 사용자는 hostIP:30475
웹 서버 페이지를 작성 하고 본다. 이는 포트 80
(targetport) 에서 httpd에 의해 제공되기 때문입니다 . 사용자가 버튼을 클릭하면 요청이 이루어집니다. 이 요청은 httpd.conf
파일에서 포트 5050
가 언급되고 Appserver의 컨테이너와 Webserver의 컨테이너가 내부적으로 통신 하는 포트 이기 때문에 Appserver로 리디렉션됩니다 . appserver가 요청을 받으면 port에서 tomcat이 내부에서 실행되기 때문에 요청을 처리 할 수 8080
있습니다.