先停消费类型的服务和定时任务(task类型)

  • [[canal-comsumer]]
  • [[mq-proxy-task]]
  • [[regular-task]]

确认mq消费已完成

让旧数据被消费完,避免新格式数据生产出来后,被旧的消费者消费,产生错误。

创建一个tmp namespace做为临时环境,将pod等资源全部创建一套

  • namespace
  • secret
  • configmap
  • service
  • app(deployment、statefulset)
    • 不处理task类型的app

删除tmp namespace

删除tmp ingress

删除tmp ingress后,ingress controller讲自动切换production ingress上面指定的svc重新接管流量

配置ingress,100%切换流量从production到tmp

这个虽然ingress里面rules的service name没有变,但是由于ingress是在不同namespace创建的,所以流量被正确导流到新的tmp namespace的同名的service中了。

将同样的资源文件,sync变更到production namespace

恢复消费类型的服务和定时任务(task类型)

此时mq 新版本一定消费新消息

等待5秒,让流量全部走到tmp production等待5秒,让流量回到production namespace