Yukarıda @Manikanta P tarafından verilen cevap doğrudur. Bununla birlikte, "Liman" açıklaması ilk okumada biraz belirsiz olabilir. Bir örnekle açıklayacağım:
Statik içeriği (ön sayfası, resimler vb.) Httpd tarafından barındırılan ve dinamik içeriği (örn. İsteklere yanıt, vb.) Tomcat tarafından barındırılan bir Web Uygulamasını düşünün. Web sunucusu (veya statik içerik) httpd tarafından bağlantı noktasında 80
, Uygulama Sunucusu (veya dinamik içerik) bağlantı noktasında tomcat tarafından sunulur 8080
.
Bir geliştiricinin istediği: Kullanıcı Web sunucusuna dışarıdan erişebilmelidir, AMA dışarıdan Uygulama Sunucusuna değil.
Çözüm: service.yml dosyasındaki Web sunucusunun hizmet türü NodePort, service.yml dosyasındaki Appserver hizmet türü ise ClusterIP olacaktır.
Web sunucusunun service.yml kodu:
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'ın service.yml kodu
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.
Ayrıca httpd.conf
, Web sunucusunun dosyasında, bir kullanıcının isteğini uygulama sunucusuna yeniden yönlendiren IP'yi yazacağımızı unutmayın. Bu IP olacaktır: host_IP:5050
.
Burada tam olarak ne oluyor? Bir kullanıcı hostIP:30475
Web sunucusunun sayfasını yazar ve görür. Bunun nedeni bağlantı noktasında 80
(hedef bağlantı noktasında ) httpd tarafından sunulmasıdır. Bir kullanıcı bir düğmeyi tıkladığında bir istek yapılır. Bu istek, Uygulama Sunucusuna yeniden yönlendirilir çünkü httpd.conf
dosyada bağlantı noktası 5050
belirtilir ve bu, Uygulama Sunucusunun kapsayıcısı ile Web sunucusunun kapsayıcısının dahili olarak iletişim kurduğu bağlantı noktasıdır. Uygulama sunucusu isteği aldığında, bağlantı noktasında çalışan tomcat nedeniyle isteği yerine getirebilir 8080
.