這篇接續前面的 Istio 安裝 Istio Ingress Gateway,把 Gateway 啟用可以連線。
另外開個 Istio Ingress 的 namespace 出來安裝 Istio gateway:
kubectl create namespace istio-ingress
helm install istio-ingressgateway istio/gateway -n istio-ingress
現在拿取 Service 來看看內容:
kubectl get svc -A
對於 Service 來說,這只是在 Node 上多開一個 NodePort 給服務而已,istio-ingressgateway
所使用的 80 跟 443 分別對應到 NodePort 上的 31068 跟 32419,這些 NodePort 先記錄好,等等再設定後面的 OpenStack 的 Load Balancer 就會需要用到。
這樣就我們安裝完 Istio 了,如果你是在個人私有雲上,到時候可以直接透過 192.168.200.200
對 External IP 做存取了。
不過這裡是 OpenStack 環境,需要把 ARP Protection 關閉才能直接連線,但我這裡不是管理員,也不能去隨意關閉它,因此只能直接連線 NodePort。
現在用 NodePort 嘗試連線:
curl http://192.168.200.102:31068
這個代表是不能連線,看起來連 Port 都沒有打開,那是因為我們還沒把加入 gateway 進去。
那我們現在把 gateway 加入進去:
# 1. Save as `my-ingressgateway.yaml`
# 2. In bash, `kubectl apply -f my-ingressgateway.yaml`
# 3. If you want to remove, `kubectl delete -f my-ingressgateway.yaml`
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: my-ingressgateway
namespace: istio-ingress
spec:
selector:
istio: ingressgateway # 選擇
servers:
- port:
number: 80 # 開啟 HTTP Port
name: http2
protocol: HTTP2
hosts:
- "*.yjerry.tw" # 這些 DNS 進來的都會套用
那就可以再試 curl 看看:
curl http://192.168.200.102:31068
看起來已經有了,但沒有顯示任何東西。
那就加個 -I
顯示一下標頭:
curl http://192.168.200.102:31068 -I
現在這樣內網可以連線了,下一篇就要使用 OpenStack 提供的 Load Balancer 來讓系統可以對外連線,不過在此之前要先來設定 OpenStack Client 端。
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!