A resposta dada acima por @Manikanta P está correta. No entanto, a explicação de "Port" pode ser um pouco incerta na primeira leitura. Vou explicar com um exemplo:
Considere um aplicativo da Web com seu conteúdo estático (primeira página, imagens etc.) hospedado pelo httpd e o conteúdo dinâmico (por exemplo, resposta a solicitações etc.) hospedado pelo tomcat. O servidor da Web (ou o conteúdo estático) é servido pelo httpd na porta 80
enquanto o Appserver (ou o conteúdo dinâmico) é servido pelo tomcat na porta 8080
.
O que um desenvolvedor deseja: O usuário deve poder acessar o servidor da Web de fora, mas não o Appserver de fora.
Solução: o tipo de serviço do servidor da Web em seu service.yml será NodePort, enquanto o tipo de serviço do Appserver em seu service.yml será o ClusterIP.
Código para service.yml do servidor da web:
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.
Código para service.yml do Appserver
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.
Observe também que, no httpd.conf
arquivo do servidor da Web, escreveremos o IP que redireciona a solicitação de um usuário para o servidor de aplicativos. Este IP será: host_IP:5050
.
O que exatamente está acontecendo aqui? Um usuário escreve hostIP:30475
e vê a página do servidor da Web. Isso ocorre porque ele está sendo atendido pelo httpd na porta 80
(targetport). Quando um usuário clica em um botão, é feita uma solicitação. Essa solicitação é redirecionada para o Appserver porque, no httpd.conf
arquivo, a porta 5050
é mencionada e é a porta na qual o contêiner do Appserver e o servidor de conteúdo da Web se comunicam internamente. Quando o appserver recebe a solicitação, ele pode atendê-la devido ao tomcat sendo executado dentro dele na porta 8080
.