问题标签 [canary-deployment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Openshift 零停机部署 react + rest api
我们有一个使用 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。
deployment - Canary vs. A/B 发布策略
我正在经历不同类型的发布策略,并且对 Canary 和 A/B 策略感到困惑。他们两个似乎很相似。
我在 Canary 上读到的所有内容都是“允许通过向一小部分人发布新版本来测试部署”。在 A/B 上是“针对特定客户群的 A/B 测试策略”。
那么它们之间的区别在哪里,两者的用例是什么?
参考资料:https ://azure.microsoft.com/en-in/overview/kubernetes-deployment-strategy/
kubernetes - 新应用金丝雀发布策略
我有一个应用程序,它在 React 中有一些后端服务和 SPA 前端构建。
我想用 istio 发布金丝雀版本。我关心的是如何管理发布策略,其中-
- 我把一定量的流量传到前端
- 当从这个新的前端完成后端请求时,流量应该被传递到新的后端服务。
为此,最好的方法是什么?
python - Python AWS CDK 资源已存在错误
我正在尝试使用适用于 AWS CDK 的 Python sdk 创建金丝雀部署。这是代码的相关部分:
即使我检查没有创建其他金丝雀,我也会收到此错误:
正如我所说,我已经在控制台中检查了是否存在其他金丝雀(没有),我在重试之前销毁了创建的堆栈。
有任何想法吗?
kubernetes - 在金丝雀部署策略中,将特定用户重定向到具有新版本的 pod
我是 kubernetes 的新手,只是在 k8s 上做很少的研发。正在检查不同的部署策略,例如滚动更新、重新创建、蓝绿和金丝雀。如果是正确的,金丝雀部署背后的想法是向一组用户推出新版本。在这里,我的问题让我的团队拥有开发人员和测试团队。每当测试团队尝试访问应用程序时,它应该重定向到新版本的应用程序,这可能吗?还是金丝雀仅用于通过一项服务同时运行 2 个版本的应用程序?
deployment - 使用 Rabbit 进行部署处理
我的应用程序有rabbitMq,它有多个消费者[3],我会循环使用消息。目前我在部署新版本时进行金丝雀部署,但这让我陷入了任何消费者[不仅仅是金丝雀消费者]都可以使用消息的情况,这会产生问题。
[另外我希望它只有在需要循环部署所有其他时间时才表现得像这样]
我已经知道绿蓝部署过程,但是还有其他方法可以解决这个问题吗?
api - 对于通过 kubernetes Canary 部署的应用程序,来自浏览器和 CLI 的不同 API 响应
我正在尝试使用以下网站中提到的步骤在 openshift 提供程序中使用金丝雀部署应用程序。
https://opensource.com/article/17/5/colorful-deployments
该部署包含 2 个部署配置、2 个用于旧版本和最新版本应用程序的服务以及用于在 2 个服务之间共享流量的单个路由。
旧版本的响应为“Hello from Prod”,最新版本的响应为“Hello from Canary”。
当通过 CLI 通过 CURL 命令检查时,响应与预期一致。
在检查来自浏览器的相同响应时,它与来自 CLI 的响应不匹配。
假设流量通过路由完全切换到“Prod”服务,那么 CLI 和浏览器的响应都是“Hello from Prod”。
当流量完全切换到“Canary”服务时,来自 CLI 的响应是“Hello from Canary”,但来自浏览器的响应是“Hello from Prod”。
即使在删除 cookie 后,问题仍然存在于浏览器中。这里的任何建议将不胜感激。
kubernetes - 手动替换一个 pod 上的图像,而其他 pod 使用主图像
假设我有 10 个 pod 运行稳定版本,我希望在完全推出之前替换其中一个的映像以运行更新版本。
有没有办法做到这一点?
firebase - 有人如何在 Firebase 托管上的多个发行版本之间进行流量拆分
例如,在 App Engine、Cloud Run 和 K8 中,可以在多个版本之间分配流量,特别是如果您想执行 A/B 测试或进行金丝雀发布。所以,我想知道 firebase 托管是否也有这个相同的功能或如何使用 Firebase 托管来完成。
testing - 在 RTL 中镜像金丝雀部署?
我是金丝雀部署的新手。我们将开始通过 Istio 进行金丝雀部署。
我假设这只是一种部署机制,可能会在预生产环境中进行一些 Istio 路由测试,但在早期的测试环境中,我们会像今天一样对正在测试的版本进行隔离。
有人建议将金丝雀概念应用于所有测试环境,因此我们可以在 Route To Live 中有效地运行我们希望在 prod 中进行金丝雀测试的所有版本。
想知道其他人正在采取什么方法?