如上圖,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
沒有留言:
張貼留言