您可以使用一个服务条目来将一个条目添加到Istio内部维护的服务注册表中。在您添加服务条目之后,envoy代理可以向服务发送流量,就好像它是您网格中的服务一样。配置服务条目允许您管理网格外运行的服务的流量,包括以下任务:

  • Redirect and forward traffic for external destinations, such as APIs consumed from the web, or traffic to services in legacy infrastructure.

  • Define retry, timeout, and fault injection policies for external destinations.

  • Run a mesh service in a Virtual Machine (VM) by adding VMs to your mesh.

  • Logically add services from a different cluster to the mesh to configure a multicluster Istio mesh on Kubernetes.

您不需要为您希望mesh服务使用的每个外部服务添加一个服务条目。默认情况下,Istio将envoy代理配置为将请求传递给未知服务。然而,你不能使用Istio功能来控制没有在mesh中注册的目的地的流量。

1. 服务条目案例

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: ServiceEntry
  3. metadata:
  4. name: svc-entry
  5. spec:
  6. hosts:
  7. - ext-svc.example.com
  8. ports:
  9. - number: 443
  10. name: https
  11. protocol: HTTPS
  12. location: MESH_EXTERNAL
  13. resolution: DNS

使用hosts字段指定外部资源。您可以完全限定它或使用通配符前缀的域名。

您可以配置虚拟服务和目标规则,以更细粒度的方式控制到服务条目的流量,与为网格中的任何其他服务配置流量的方式相同。例如,下面的目的地规则配置流量路由,以使用相互TLS来保护到ext-svc.example.com外部服务的连接,我们使用服务条目配置了该连接:

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: DestinationRule
  3. metadata:
  4. name: ext-res-dr
  5. spec:
  6. host: ext-svc.example.com
  7. trafficPolicy:
  8. tls:
  9. mode: MUTUAL
  10. clientCertificate: /etc/certs/myclientcert.pem
  11. privateKey: /etc/certs/client_private_key.pem
  12. caCertificates: /etc/certs/rootcacerts.pem

更多关于服务条目参考链接