Jawaban yang diberikan @Manikanta P diatas benar. Namun, penjelasan tentang "Port" mungkin sedikit tidak jelas pada bacaan pertama. Saya akan menjelaskan dengan contoh:
Pertimbangkan Aplikasi Web dengan konten statisnya (halaman depan, gambar, dll) yang dihosting oleh httpd dan konten dinamis (mis. Respons terhadap permintaan, dll.) Yang dihosting oleh tomcat. Webserver (atau konten statis) dilayani oleh httpd di port 80
sedangkan Appserver (atau konten dinamis) dilayani oleh tomcat di port8080
.
Apa yang diinginkan pengembang: Pengguna harus dapat mengakses Server Web dari luar TETAPI bukan Server Aplikasi dari luar.
Solusi: Jenis layanan Webserver di service.yml-nya adalah NodePort sedangkan jenis layanan Appserver di service.yml-nya adalah ClusterIP.
Kode untuk service.yml 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.
Kode untuk service.yml 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.
Perhatikan juga, dalam httpd.conf
file Webserver, kami akan menulis IP yang mengalihkan permintaan pengguna ke appserver. IP ini akan menjadi: host_IP:5050
.
Sebenarnya apa yang terjadi disini? Seorang pengguna menulis hostIP:30475
dan melihat halaman Webserver. Ini karena dilayani oleh httpd di port 80
(targetport). Saat pengguna mengklik tombol, permintaan dibuat. Permintaan ini dialihkan ke Appserver karena dalam httpd.conf
file, port 5050
disebutkan dan ini adalah port tempat container Appserver dan conatainer Webserver berkomunikasi secara internal. Saat appserver menerima permintaan tersebut, appserver dapat melayani permintaan tersebut karena tomcat berjalan di dalamnya di porta 8080
.