[root@master01 ~]# kgp -n weather
NAME READY STATUS RESTARTS AGE
advertisement-v1-6b65cd7c78-ddrnk 2/2 Running 0 45h
forecast-v1-58ffc96649-wnq2k 2/2 Running 0 45h
frontend-v1-58896bbfdd-khzxt 2/2 Running 0 45h
进入我们之前git clone的目录,对所有服务创建各自的VirtualService和DestinationRule资源
[root@master01 ~]# cd cloud-native-istio/10_canary-release/10.1
[root@master01 10.1]# kubectl apply -f virtual-service-v1.yaml -n weather
[root@master01 10.1]# kubectl apply -f destination-rule-v1.yaml -n weather
说明:由于virtual-service-v1.yaml中有引用一个gateway资源,但我们还没有创建,所以这里会有一个错误(Kiali中可以看到)



所以,还需要给它创建一下该gateway
cat > /tmp/weather-gateway.yaml <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: weather-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
EOF
kubectl apply -f /tmp/weather-gateway.yaml -n istio-system
创建完成后,页面恢复正常

查看虚拟服务和路由规则
[root@master01 ~]# kubectl get vs -n weather
NAME GATEWAYS HOSTS AGE
advertisement-route ["advertisement"] 24m
forecast-route ["forecast"] 24m
frontend-route ["istio-system/weather-gateway"] ["*"] 24m
[root@master01 ~]# kubectl get dr -n weather
NAME HOST AGE
advertisement-dr advertisement 24m
forecast-dr forecast 24m
frontend-dr frontend 24m
调用链关系:

2、部署v2版本
[root@master01 ~]# cd cloud-native-istio/10_canary-release/10.2/
[root@master01 10.2]# kubectl apply -f recommendation-all.yaml -f forecast-v2-deployment.yaml -n weather
查看
[root@master01 10.2]# kubectl get po -n weather | grep -P "forecast-v2|recommendation-v1"
forecast-v2-895b74c49-qdt9n 2/2 Running 0 135m
recommendation-v1-69dc596b6d-zkldp 2/2 Running 0 135m