istio api
Istio 1.0版附带一个网络API,该API包含许多功能并涵盖了各种场景。 联网API在最近几个月中得到了发展,并且可能不会立即说明。 该API的概念和构建块是什么,以及如何使用各个Istio资源类型来通过我们的服务网格路由流量?
尽管文档提供了大量有用的信息,但我还是想用自己的语言来描述和解释流量路由。 我必须付出很多努力才能理解概念和动机是什么,尤其是如何应用各个组成部分。
以下视频旨在说明Istio的网络( v3alpha )API的概念是什么,以及通常如何应用构建基块。 它显示了服务网格中各个组件的可视模型,希望可以帮助您理解和使用Istio。
什么时候使用
虚拟服务 :将属于网格的服务的流量路由到特定目标或其子集,和/或以超时等行为标记HTTP(默认)路由。
目标规则 :设置路由流量的策略,例如TLS设置,异常检测或负载平衡器设置,和/或定义属于网状网络的服务子集。
服务条目 :将其他服务添加到Istio的内部服务注册表中,这是将流量路由到外部服务所必需的。 可以通过虚拟服务和目标规则来增强所添加的服务。
网关(入口) :将入口流量路由到服务网格。 网关需要绑定到虚拟服务,该服务定义将入口流量路由到的位置。
网关(出口) :定义一个出口点,所有离开网格的出口流量都可以通过该出口进行路由。 对于仅特定节点可以或应该访问外部网络的方案可能是必需的。
见解和“陷阱”
开始使用Istio的网络功能后,您可能需要考虑一些我自己的见解。 其中一些听起来很明显,但可能包含“陷阱”效果。
- 虚拟服务以及目标规则不必与平台(Kubernetes)服务1:1匹配。
- HTTPS通信需要通过TLS规则(使用端口和SNI)而不是HTTP规则进行路由。
- Istio的可选mTLS仍可确保对网格内部流量进行加密,而无需应用程序级HTTPS / TLS。
- 默认情况下,不允许外部流量到(外部)网格外的服务。 必须输入服务。
- 入口或出口网关可以负责多个平台(Kubernetes)服务,但需要绑定到单个虚拟服务定义。
- 通过为外部主机名定义的虚拟服务或目标规则,可以控制或“增强”出口流量。
- 服务条目中指定的主机流量可以重新路由到内部服务。
- 只要外部服务条目未重定向到另一个内部服务,就将其作为单独的服务进行监视。
- Istio代理将主机名和SNI名称都考虑在内,并且可以将流量重新路由到内部或外部服务。
我希望这可以澄清Istio的网络功能。 我们很高兴收到您的反馈!
更多信息
- 交通管理(Istio文档)
- API参考
- 引入Istio v1alpha3路由API(Istio博客文章)
- 咖啡示例项目
翻译自: https://www.javacodegeeks.com/2018/08/istios-networking-api-explained.html
istio api