在上一篇文章介紹完 Service 後,看似解決了對外連接的問題,但大家一定會發現 port 真的太醜了,現在應該沒有任何一個網站除了網域之外後面還要加 port 吧XD
為了解決這個問題,今天的文章就要來介紹 Ingress,由於 Ingress 能介紹的東西真的太多了,只用一篇文章怕讀者會比較不好吸收(其實是可以多占幾篇鐵人賽的篇幅XD),這邊筆者預計會用三天的時間來完整的介紹整個 Ingress,廢話不多說馬上開始今天的文章吧!
Ingress 可以幫助我們統一對外的 port number,並且根據 hostname 或是 pathname 決定請求要轉發到哪個 Service 上,之後就可以利用該 Service 連接到 Pod 做事情了,而 K8s 的 Ingress 會統一開 http 的 80 port 以及 https 的 443 port。
上面的段落簡單的介紹了 Ingress 的觀念後,接下來介紹一下 Ingress 真正的功能吧!
將不同路徑的請求對應到不同的 Service 物件
若沒有設定網域,則該機器上所有網域只要透過此路徑均可以連接到指定的 Service 物件。
將不同網域的請求對應到不同的 Service 物件
若沒有設定路徑,則會以 /路徑連接到指定的 Service 物件。
支援 SSL Termination
SSL 全名為:傳輸層安全性協定,而網站通常都會利用 https 進行加密以確保資料安全,但 Service 與 Pod 之間的溝通都是以無加密方式傳輸,所以 Ingress 就支援解密,讓 Service 與 Pod 可以正常溝通傳遞資料。
最後加了 Ingress 後架構圖就會長得像下圖這樣,這裡筆者故意用網域以及路徑的方式來表示 Ingress 的連結到 Service 的方式。
由於 minikube 本身並沒有啟用 Ingress 的功能,因此需要額外下指令讓 minikube 可以順利的使用 Ingress ,啟動方法也很簡單只要在終端機下 minikube addons enable ingress
即可。
加了 Ingress 後基本上就需要網域才可以使用了,但我們都在本機端上練習而已,所以也不用刻意去網路上購買網域,只要修改本機的 host 檔案就可以了。
首先在終端機下 sudo vim /etc/hosts
並輸入電腦密碼後,在檔案內加入 minikube ip 以及想要呈現的網域名稱即可,寫法如下。
今天介紹了 Ingress 的基本觀念以及如何在 minikube 上啟用,有了這些觀念後再來介紹整體的寫法跟應用會更得心應手。
接下來的文章就要介紹 Ingress 的寫法跟建立了,如果對於文章有任何問題都歡迎留言給我,那我們就下篇文章見嘍~