在阿里云容器服务上基于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状态,可以点击。
图片.png

点击按钮,在新弹出的窗口中,上次图片进行风格转换:
图片.png

总结

本文通过示例演示了Istio如何实现从集群内访问外部服务的出口的流量管理。

欢迎大家使用阿里云上的容器服务,快速搭建微服务的开放治理平台Istio,比较简单地集成到自己项目的微服务开发中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章