《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 19 Istio - 啟用 Ingress Gateway

本篇大綱

這篇接續前面的 Istio 安裝 Istio Ingress Gateway,把 Gateway 啟用可以連線。

內文

Istio Ingress 安裝

另外開個 Istio Ingress 的 namespace 出來安裝 Istio gateway:

1
2
kubectl create namespace istio-ingress
helm install istio-ingressgateway istio/gateway -n istio-ingress

day19-01.png

現在拿取 Service 來看看內容:

1
kubectl get svc -A

day19-02.png

對於 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 嘗試連線:

1
curl http://192.168.200.102:31068

day19-03.png

這個代表是不能連線,看起來連 Port 都沒有打開,那是因為我們還沒把加入 gateway 進去。

那我們現在把 gateway 加入進去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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 看看:

1
curl http://192.168.200.102:31068

day19-04.png

看起來已經有了,但沒有顯示任何東西。

那就加個 -I 顯示一下標頭:

1
curl http://192.168.200.102:31068 -I

day19-05.png

現在這樣內網可以連線了,下一篇就要使用 OpenStack 提供的 Load Balancer 來讓系統可以對外連線,不過在此之前要先來設定 OpenStack Client 端。

本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!

Source


《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 19 Istio - 啟用 Ingress Gateway
https://blog.yangjerry.tw/2022/10/04/it2022-day19/
作者
Jerry Yang
發布於
2022年10月4日
許可協議