iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
1
DevOps

Kubernetes and Istio 三十天系列 第 20

[Day20] Istio Example BookInfo - Gateway

  • 分享至 

  • xImage
  •  

Istio Example BookInfo Architecture

BookInfo-Architecture

Istio Gateway

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

Istio Service Mesh一定要設定一個Service Mesh入口,之前已經有討論過,詳情可以看[Day17] 如何為Cluster選擇一個好的Gateway
,Istio Istio Gateway的設定可以針對Namespace,不同的Namespace有不同的Gateway設定,具有高度的彈性,設定了Gateway要如何設定Gateway To Service。就必須添加下面的Istio VirtualService。

Istio VirtualService

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

直接將Kubernetes Service以Host的方式設定在VirtualService。上面Destination host都是Kubernetes Cluster CoreDNS可以解析的Host-Nam,而Destination port則是Kubernetes Service targetPort。

VirtualService 特定用法 Domain + NodePort

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - authority:
         exact: "bookinfo.com:31380"
    route:
    - destination:
        port:
          number: 9080
        host: productpage

可以利用http match authority

curl http://bookinfo.com:31380

可以直接訪問到productpage這個頁面,這樣子我針對不同的Namespace設定了多個Gateway,同時設定不同的Domain在設定VirtualService就可以達到不同環境不同Domain,可以明確找到該Namespace的資源。

結語

Istio提供了非常多簡單設定就可以達到的功能,但Troubleshooting跟Performance tuning會有很高的難度,下一篇會在介紹Istio如果想加入更多的Network設定還可以有什麼選項。如果只是簡單的應用這邊就可以囉。

圖片來源

Istio BookInfo


上一篇
[Day19] K3d Expose Service
下一篇
[Day21] Istio Example BookInfo - Traffic Management I
系列文
Kubernetes and Istio 三十天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言