服务条目(ServiceEntry)是用于把一个服务添加到Istio抽象模型或服务注册表中,这些注册的服务是由Istio内部维护的。添加服务条目后,Envoy代理可以将流量发送到服务,如同这个添加的服务条目是网格中的其他服务一样。使用服务条目有很多方便之处,可以管理在网格外部运行的服务的流量:
·重定向和转发外部目标的流量,例如从其他外部系统使用的API,或者遗留系统基础架构中的服务流量。
·为外部目标服务定义流量策略,例如重试、超时和故障注入策略。
·将虚拟机(VM)中运行的服务添加到一个服务网格中,以实现混合场景下的服务管理。
·从不同的集群中逻辑添加服务到同一个服务网格中,以在Kubernetes上配置多集群模式的Istio服务网格。
值得注意的是,在使用每个外部服务时,如果不需要支持上述流量管理功能,那么完全可以不用通过这种方式将其添加到服务网格中。默认情况下,虽然不能使用Istio功能来控制未在网格中注册的目标服务的流量,但Istio会将Envoy代理配置为直接透传对未注册服务的请求。
此外,可以使用服务条目执行以下配置:
·通过纯文本端口访问安全的外部服务,配置Envoy执行TLS发起。当Istio代理(无论是Sidecar或出口网关)配置为接受未加密的内部HTTP连接,加密请求,然后将它们转发到使用简单或双向TLS保护的HTTPS服务时,就会发生TLS发起。这与TLS终止恰恰相反,当TLS终止时,入口代理接受传入的TLS连接,然后解密TLS请求,并将解密后的请求传递给内部服务。
·与出口网关一起,确保通过单个出口点访问所有外部服务。网关配置适用于在网格边缘运行的Envoy代理,这意味着Envoy代理不作为服务Sidecar运行,而是配置Envoy代理以允许或阻止某些流量是否可以离开网格。