默认istio使用k8s作为注册中心,k8s的service、endpoint对应于服务、实例。
针对一些还未接入到服务网格的Spring Cloud服务,其使用的注册中心可能是consul,如何让服务网格上的consumer服务能访问到非服务网格的Provider,是应用在服务网格迁移过程中所面临的问题。istio本身提供了一些机制,来引入外部注册中心的服务。
注意,这里强调是 未接入服务网格 ,而不是 未接入k8s 。原因是,应用可以接入k8s,但未关闭Spring Cloud的治理能力,仍然是向consul发起注册。针对这种服务,实际上仍然不能进行在服务网格上进行管理。
istio在发展过程中,对于外部注册中心的支持经历了多个阶段:intree支持、MCP、MCP over XDS,最终的计划是通过UDPA接入。目前的istio代码(1.10)是MCP over XDS的方式接入,不过官方没有提供相关的实现参考。
除了将consul作为与kubernetes同级别的注册中心接入,社区还有一种思路,借助service entry,将consul上的服务映射为istio的 service entry,将consul服务的instance作为workload entry,从而帮助服务网格上的服务,去访问不在服务网格的服务。
注册中心接入(intree)
istio最后一个intree支持consul作为注册中心的版本是 1.7.8 。<