在阿里雲容器服務上基於Istio實現出口Egress流量管理
概述
在前面的文章中,介紹了在阿里雲容器服務上基於Istio如何實現東西向流量管理。
回顧下引用的示例:
該樣例應用由四個單獨的微服務構成,用來演示多種 Istio 特性。該應用模仿某銀行金融產品的一個分類,顯示某一金融產品的資訊。頁面上會顯示該產品的描述、明細,以及針對特定使用者的增值服務。
四個單獨的微服務:
- productpage :productpage 微服務會呼叫 details 和 addedvalues兩個微服務,用來生成頁面。
- details :該微服務包含了金融產品的資訊。
- addedvalues:該微服務包含了針對特定使用者的增值服務。它還會呼叫 styletransfer微服務。
- styletransfer:該微服務提供了轉移照片藝術風格的API功能。
addedvalues微服務有 3 個版本:
- v1 版本不會呼叫 styletransfer 服務,也不會提供風險和投資分析結果。
- v2 版本不會呼叫 styletransfer 服務,但會提供風險和投資分析結果。
- v3 版本會呼叫 styletransfer 服務,提供針對特定使用者的增值服務,即允許使用者上傳圖片進行風格轉換,並返回一張轉換後的圖片。
這是4個服務的呼叫關係,其中3個在Kubernetes叢集內,另外一個在叢集之外。
在前面文章中已經提到,第3 個版本的addedvalues微服務提供的頁面中,按鈕是disabled狀態,無法點選。這是因為預設情況下,Istio 服務網格內的 Pod,由於其 iptables 將所有外發流量都透明的轉發給了 Sidecar,所以這些叢集內的服務無法訪問叢集之外的 URL,而只能處理叢集內部的目標。
出口流量管理
本任務描述瞭如何將外部服務暴露給 Istio 叢集中的客戶端。你將會學到如何通過定義 ServiceEntry 來呼叫外部服務;
kubectl apply -f serviceentry.yaml
登出之後,當使用以yunqi開頭的使用者名稱再次登入時,就會看到如下頁面內容, 按鈕是enabled狀態,可以點選。

點選按鈕,在新彈出的視窗中,上次圖片進行風格轉換:

總結
本文通過示例演示了Istio如何實現從叢集內訪問外部服務的出口的流量管理。
歡迎大家使用阿里雲上的容器服務,快速搭建微服務的開放治理平臺Istio,比較簡單地整合到自己專案的微服務開發中。