您可以使用一个服务条目来将一个条目添加到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. 服务条目案例
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: svc-entry
spec:
hosts:
- ext-svc.example.com
ports:
- number: 443
name: https
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNS
使用hosts字段指定外部资源。您可以完全限定它或使用通配符前缀的域名。
您可以配置虚拟服务和目标规则,以更细粒度的方式控制到服务条目的流量,与为网格中的任何其他服务配置流量的方式相同。例如,下面的目的地规则配置流量路由,以使用相互TLS来保护到ext-svc.example.com外部服务的连接,我们使用服务条目配置了该连接:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ext-res-dr
spec:
host: ext-svc.example.com
trafficPolicy:
tls:
mode: MUTUAL
clientCertificate: /etc/certs/myclientcert.pem
privateKey: /etc/certs/client_private_key.pem
caCertificates: /etc/certs/rootcacerts.pem
更多关于服务条目参考链接