获取 Loadbalancer URL:
export LB_NAME=$(kubectl get svc ingress-gw -n prodcatalog-ns -o jsonpath="{.status.loadBalancer.ingress[*].hostname}")
echo $LB_NAME
现在,回到您的浏览器,您应该会看到下面的界面,显示正在使用 Catalog Detail proddetail-v1
版本。
现在点击 Canary Deployment 按钮几次,因为我们将路由权重设置为 10% 到
proddetail
V2 和 90% 到 proddetail
V1, 点击几下后,应该可以看到来自 proddetail-v2
V2 的信息, 在 proddetail
V2 的详细信息中可以看到 XYZ.com
供应商。
一旦我们对新服务版本 2 充满信心,并且没有发现错误或延迟问题,那么我们就可以决定将更多流量逐渐转移到版本 V2。 在下面的示例中,我们将 VirualRouter 中的两个 proddetail 服务版本的流量权重都设置为 50%:
---
apiVersion: appmesh.k8s.aws/v1beta2
kind: VirtualRouter
metadata:
name: proddetail-router
namespace: prodcatalog-ns
spec:
.....
routes:
- name: proddetail-route
httpRoute:
match:
prefix: /
action:
weightedTargets:
- virtualNodeRef:
name: proddetail-v1
weight: 50
- virtualNodeRef:
name: proddetail-v2
weight: 50
---
如果出现任何问题,您可以通过将 VirtualRouter 中的权重更改为 100% 来方便地回滚到已知良好的 v1 版本的服务。一旦您确认新版本一切正常,您就可以将所有流量转向新版本,并弃用 v1。
恭喜您成功发新版本!