我有两个命名空间承载不同版本的服务,命名空间 sh-blue 承载每个服务的一个版本,而 sh-green 承载每个服务的新版本。每次进行新部署时,所有服务都会更新到新版本。我想实现从当前版本到新版本的金丝雀部署。
下面的代码是我目前拥有的,并且工作正常,但不清楚使用哪种负载均衡。当我检查入口网关日志时,它类似于:蓝色,绿色,绿色,蓝色,绿色,绿色,绿色,红色,绿色,蓝色,蓝色,蓝色,绿色,绿色,... < / p>
是否可以控制负载平衡?还有设置它的更好方法吗?
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: sh-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*.something.local"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sh
spec:
hosts:
- "*"
gateways:
- sh-gateway
http:
- match:
- uri:
prefix: /index
route:
- destination:
host: index.sh-blue.svc.cluster.local
port:
number: 8080
weight: 50
- destination:
host: index.sh-green.svc.cluster.local
port:
number: 8080
weight: 50
- match:
- uri:
prefix: /config
route:
- destination:
host: config.sh-blue.svc.cluster.local
port:
number: 8080
weight: 50
- destination:
host: config.sh-green.svc.cluster.local
port:
number: 8080
weight: 50
答案 0 :(得分:0)
您可以在Istio DestinationRule
流量管理resource中指定负载平衡配置。网状服务需要包含trafficPolicy
才能控制负载平衡policy。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: bookinfo-ratings-port
spec:
host: ratings.prod.svc.cluster.local
trafficPolicy: # Apply to all ports
portLevelSettings:
- port:
number: 80
loadBalancer:
simple: LEAST_CONN
- port:
number: 9080
loadBalancer:
simple: ROUND_ROBIN
有关更多信息,我建议您访问Istio Load Balancer设置overview。