概述
在前面的
文章中,介紹了在阿裡雲容器服務上基于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,比較簡單地內建到自己項目的微服務開發中。