当我可以简单地创建ServiceEntry
时,使用Service
的主要好处是什么(如果此服务是一组外部IP,则定义Endpoints
而不是selector
)。在什么情况下我不能依靠Service
?
[我想说,documentation中提到了主要好处,您可以配置流量路由,定义重试,超时,故障注入等。
服务条目描述了服务的属性(DNS名称,VIP,端口,协议,端点)。这些服务可能在网状网络外部(例如,Web API)或不在网状网络服务注册表中的网状内部内部服务(例如,一组与Kubernetes中的服务进行通信的VM)。
[[添加服务条目后,Envoy代理可以将流量发送到该服务,就好像它是一个服务。您的网格。配置服务条目可让您管理在网格外运行的服务的流量,包括以下任务:您使用service entry将一个条目添加到Istio内部维护的服务注册表中。
- 用于外部目标的重定向和转发流量,例如API从网络消耗的流量,或旧版服务的流量基础架构。
您不需要为希望使用网格服务的每个外部服务添加服务条目。默认情况下,Istio将Envoy代理配置为将请求传递给未知服务。但是,您不能使用Istio功能来控制到未在网格中注册的目标的访问量。以下示例网格外部服务条目将ext-svc.example.com外部依赖项添加到Istio的服务注册表中:
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
您使用主机字段指定外部资源。您可以完全限定它,也可以使用带通配符前缀的域名。
您可以配置虚拟服务和目标规则,以更精细的方式控制到服务条目的流量,就像您为网格中的任何其他服务配置流量一样。
例如,以下目标规则用于配置使用双向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
请参阅Service Entry reference以获取更多可能的配置选项。