如何为Istio DestinationRule配置多个Host?
解决Istio DestinationRule多Host流量接收问题
问题背景
现有DestinationRule配置如下:
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: bookinfo-ratings spec: host: ratings.prod.svc.cluster.local trafficPolicy: loadBalancer: simple: LEAST_REQUEST
需要让服务同时接收ratings.prod.svc.cluster.local和rating.custom.domain的流量,但spec.host仅支持单个字符串,无法直接配置多个Host。
解决方案
通过VirtualService实现多域名到目标服务的路由,同时保留原DestinationRule的流量策略配置:
保留原有的DestinationRule,它会对目标服务的所有流量生效,包括通过VirtualService路由过来的自定义域名流量。
创建对应的VirtualService,将自定义域名
rating.custom.domain的流量路由到ratings.prod.svc.cluster.local服务:
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo-ratings-custom-domain spec: hosts: - rating.custom.domain http: - route: - destination: host: ratings.prod.svc.cluster.local
原理说明
- VirtualService负责对外暴露自定义域名,并将该域名的流量转发到集群内的目标服务Host。
- DestinationRule针对集群内服务Host配置的流量策略(如这里的
LEAST_REQUEST负载均衡)会自动应用到所有流向该服务的流量,不管流量是来自集群内域名还是通过VirtualService路由的自定义域名。
内容的提问来源于stack exchange,提问作者River
相关产品推荐
相关产品推荐

