【发布时间】:2020-09-10 23:14:31
【问题描述】:
我们有一个使用 React(和 nginx)构建的 Web 界面和一个 Rest API(带有 json 模式验证)。它们位于不同的存储库中。我们的集群是私有的 openshift (3.11)
我们希望实现零停机部署。 我们假设:
- 我们有 10 个用于 Web 的 pod 和 20 个用于 Rest API 的 pod。
- 我们希望将 WEB 和 API 从 1.0.0 升级到 2.0.0
- 新版WEB只支持新版API
- 每个 repo(WEB 和 API)都有自己的 helm chart(如果需要并且建议,我们可以创建一个额外的存储库,其中包含一个部署 web 和 api 的 helm chart)
我们应该使用哪种部署策略? (蓝/绿、金丝雀、a/b ?)
我们如何配置新的 WEB pod 以访问 API 的唯一新服务:
- WEB 1.0.0 --> API 1.0.0
- WEB 2.0.0 --> API 2.0.0
我们如何在零停机时间的情况下执行升级?
非常重要的是,在升级过程中,新版本的WEB应该只命中新版本的API,而已经部署的pods(1.0.0)应该继续命中旧版本的API .
【问题讨论】:
-
集群上是否安装了 istio?您的集群在哪里运行?集群中是否有(Nginx)等应用LB?你能分享更多关于你的集群和安装更多组件的细节吗?
-
@MickeyHovel 集群是公司集群(openshift),我无权访问它,请求/安装新组件将是一个相当长的过程。抱歉,我不知道 istio 是什么。但是,在我们的命名空间中,我们可以做任何我们想做的事情,如果我们需要在命名空间中使用 nginx 负载均衡器,我们可以部署它
标签: docker kubernetes openshift blue-green-deployment canary-deployment