在昨天的文章講完 Ingress 的基本觀念以及要如何在 minikube 上啟動的基礎建設後,今天的文章就要正式進入 Ingress 的寫法及建立了,廢話不多說馬上開始今天的文章吧!
接下來就用個簡單的範例來講一下 Ingress 的寫法吧!這邊會用兩種方式來介紹 Ingress。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloworld
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: helloworld
servicePort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloworld
spec:
rules:
- host: helloworld.com.tw
http:
paths:
- path: /
backend:
serviceName: helloworld
servicePort: 8080
這邊可以發現 Ingress 的 apiVersion
為 extensions/v1beta1
而不是 v1 是因為目前 Ingress 能支援的 API 版本只有 extensions/v1beta1
而已,這邊要稍微注意一下不要複製太快結果忘記改 API 版本了XD
基本上整體寫法跟 Service 差不多,唯一不同的地方就在 spec
的細部設定,因此底下就來講講 spec
的相關設定吧!
代表這個 Ingress 的轉發規則,所有 Ingress 的設定都要寫在 rules 內。
設定可以連接到 Service 物件的網域名稱。
設定可以連接到 Service 物件的路徑名稱。
設定欲連接到的 Service 名稱,這裡要填寫的就是 Service 中在 metadata
內寫上的 name
。
設定要經由哪個 port 連接到 Service 物件,就像 Service 的 port 要連接到 Pod 的 targetPort。
由於上面用了兩種寫法,因此這個段落也會拆成兩個部分來說明。
建立 Ingress 一樣也要用 apply
這個參數來建立。
為了要查看 Ingress 是否有正確建立起來也可以利用 get
這個參數來查看。
可以發現 hosts 的部分是 *
,這代表的是所有背後會指向 192.168.64.14
這個 IP 的網域都可以利用上面指定的路徑連接到指定的 Service 物件。
一樣利用 apply
參數建立完 Ingress 物件後,接下來利用 get
參數來查看一下 Ingress 的詳細資訊。
可以發現現在 hosts 變成 helloworld.com.tw
這個網域了,所以可想而知 helloworld-test.com.tw
就會出現 404
錯誤。
今天介紹了 Ingress ,看似美好而且也不用再輸入麻煩的 port 到網域後,這時候讀者心中應該都有一個疑惑,連 Service 都可以利用 LoadBalancer 形式來做負載平衡了(雖然要在雲端服務上才能實現XD),難道 Ingress 做不到嗎?
其實 Ingress 也做得到,但要用其他的方法來實現,所以接下來要介紹 Ingress Controller,如果對於文章有任何問題都歡迎留言給我,那我們就下篇文章見嘍~