快轉到主要內容

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

·184 字·1 分鐘·
ChengHao Yang
作者
ChengHao Yang
SRE / CNCF Ambassador
目錄
iThome 鐵人賽 2022 ——《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 - 本文屬於一個選集。
§ 19: 本文

本篇大綱
#

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

內文
#

Istio Ingress 安裝
#

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

kubectl create namespace istio-ingress
helm install istio-ingressgateway istio/gateway -n istio-ingress
day19-01.png

現在拿取 Service 來看看內容:

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

curl http://192.168.200.102:31068
day19-03.png

這個代表是不能連線,看起來連 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
day19-04.png

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

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

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
#

iThome 鐵人賽 2022 ——《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 - 本文屬於一個選集。
§ 19: 本文

相關文章