我们有一个使用 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。