如上圖,Ingress 會根據網址導向不同的 service,以「K8s: Service」的例子,這裡寫了如下的 yaml 檔來產生 Ingress。
- apiVersion: extensions/v1beta1
- kind: Ingress
- metadata:
- name: steven-gw
- spec:
- rules:
- - host: steven-gw.steven.idv.tw
- http:
- paths:
- - path: /host/info
- backend:
- serviceName: host-http
- servicePort: 9090
- 第 4 行定義了 Ingress 的名稱
- 第 7 行定義當 Ingress 收到這個網址的 request,會將 request 以下面的規則導向服務。
- 第 10 行定義,當網址開頭為 /host/info 導向 host-http 服務,port 為 9090,這是上一篇創建服務時,服務提供出來的 port。
應該會出現如下結果:
- kubectl get ingresses
有了 IP 後,就可以在 DNS 裡設定 steven-gw.steven.idv.tw 指向該 IP,或是在 /etc/hosts 中設定,接下來就可以用如下指令測試看看。
【番外篇】
- curl http://steven-gw.steven.idv.tw/host/info
上面是在 VMware PKS 上測試,PKS 上有預設安裝了 Ingress Controller,所以 ADDRESS 欄會有 IP,如果是自行安裝的 Kubernetes Cluster,因為 K8s 只提供 Ingress API 的定義,實作要再另外安裝,目前比較常見的有三種選擇:
- Nginx Kubernetes
- F5 BIG-IP Controller
- Ingress Kong
- $ helm repo add kong https://charts.konghq.com
- $ helm repo update
- $ helm install kong/kong --generate-name --set ingressController.installCRDs=false
沒有留言:
張貼留言