La risposta data sopra da @Manikanta P è corretta. Tuttavia, la spiegazione di "Port" potrebbe essere un po 'poco chiara a prima lettura. Spiegherò con un esempio:
Considera un'applicazione Web con il suo contenuto statico (front-page, immagini, ecc.) Ospitato da httpd e il contenuto dinamico (es. Risposta a richieste, ecc.) Ospitato da tomcat. Il Webserver (o il contenuto statico) è servito da httpd alla porta 80
mentre Appserver (o il contenuto dinamico) è servito da Tomcat alla porta 8080
.
Cosa vuole uno sviluppatore: l'utente dovrebbe essere in grado di accedere al server Web dall'esterno MA non all'Appserver dall'esterno.
Soluzione: il tipo di servizio di Webserver nel suo service.yml sarà NodePort mentre il tipo di servizio di Appserver nel suo service.yml sarà ClusterIP.
Codice per service.yml del server 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.
Codice per il service.yml di 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.
Nota anche, nel httpd.conf
file del Webserver, scriveremo l'IP che reindirizza la richiesta di un utente al server delle app. Questo IP sarà: host_IP:5050
.
Cosa sta succedendo esattamente qui? Un utente scrive hostIP:30475
e vede la pagina del server web. Questo perché è servito da httpd sulla porta 80
(targetport). Quando un utente fa clic su un pulsante, viene effettuata una richiesta. Questa richiesta viene reindirizzata ad Appserver perché nel httpd.conf
file 5050
viene menzionata la porta e questa è la porta dove comunicano internamente il contenitore di Appserver e il conatainer di Webserver. Quando il server app riceve la richiesta, è in grado di servire la richiesta perché tomcat è in esecuzione al suo interno alla porta 8080
.