La respuesta dada anteriormente por @Manikanta P es correcta. Sin embargo, la explicación de "Puerto" podría ser un poco confusa en la primera lectura. Explicaré con un ejemplo:
Considere una aplicación web con su contenido estático (portada, imágenes, etc.) alojado por httpd y el contenido dinámico (por ejemplo, respuesta a solicitudes, etc.) alojado por tomcat. El 80
servidor web (o el contenido estático) es atendido por httpd en el puerto mientras que el servidor de aplicaciones (o el contenido dinámico) es servido por tomcat en el puerto 8080
.
Lo que quiere un desarrollador: el usuario debe poder acceder al servidor web desde afuera PERO no al servidor de aplicaciones desde afuera
Solución: El tipo de servicio del servidor web en su service.yml será NodePort, mientras que el tipo de servicio del servidor de aplicaciones en su service.yml será ClusterIP.
Código para el servidor web 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.
Código para el service.yml de 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.
También httpd.conf
tenga en cuenta que, en el archivo del servidor web, escribiremos la IP que redirige la solicitud de un usuario al servidor de aplicaciones. Esta IP será: host_IP:5050
.
¿Qué está pasando exactamente aquí? Un usuario escribe hostIP:30475
y ve la página del servidor web. Esto se debe a que httpd lo sirve en el puerto 80
(targetport). Cuando un usuario hace clic en un botón, se realiza una solicitud. Esta solicitud se redirige al servidor de aplicaciones porque en el httpd.conf
archivo, 5050
se menciona el puerto y este es el puerto donde el contenedor del servidor de aplicaciones y el contenedor del servidor web se comunican internamente. Cuando el servidor de aplicaciones recibe la solicitud, puede atender la solicitud debido a que Tomcat se ejecuta dentro de él en el puerto 8080
.