问题标签 [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.

0 投票
2 回答
365 浏览

docker - Openshift 零停机部署 react + rest api

我们有一个使用 React(和 nginx)构建的 Web 界面和一个 Rest API(带有 json 模式验证)。它们位于不同的存储库中。我们的集群是私有的 openshift (3.11)

我们希望实现零停机部署。让我们假设:

  1. 我们有 10 个用于 Web 的 pod 和 20 个用于 Rest API 的 pod。
  2. 我们想将 WEB 和 API 从 1.0.0 升级到 2.0.0
  3. 新版WEB只支持新版API
  4. 每个 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。

0 投票
1 回答
5404 浏览

deployment - Canary vs. A/B 发布策略

我正在经历不同类型的发布策略,并且对 Canary 和 A/B 策略感到困惑。他们两个似乎很相似。

我在 Canary 上读到的所有内容都是“允许通过向一小部分人发布新版本来测试部署”。在 A/B 上是“针对特定客户群的 A/B 测试策略”。

那么它们之间的区别在哪里,两者的用例是什么?

参考资料:https ://azure.microsoft.com/en-in/overview/kubernetes-deployment-strategy/

0 投票
1 回答
297 浏览

kubernetes - 新应用金丝雀发布策略

我有一个应用程序,它在 React 中有一些后端服务和 SPA 前端构建。

我想用 istio 发布金丝雀版本。我关心的是如何管理发布策略,其中-

  1. 我把一定量的流量传到前端
  2. 当从这个新的前端完成后端请求时,流量应该被传递到新的后端服务。

为此,最好的方法是什么?

0 投票
1 回答
1180 浏览

python - Python AWS CDK 资源已存在错误

我正在尝试使用适用于 AWS CDK 的 Python sdk 创建金丝雀部署。这是代码的相关部分:

即使我检查没有创建其他金丝雀,我也会收到此错误:

正如我所说,我已经在控制台中检查了是否存在其他金丝雀(没有),我在重试之前销毁了创建的堆栈。

有任何想法吗?

0 投票
2 回答
197 浏览

kubernetes - 在金丝雀部署策略中,将特定用户重定向到具有新版本的 pod

我是 kubernetes 的新手,只是在 k8s 上做很少的研发。正在检查不同的部署策略,例如滚动更新、重新创建、蓝绿和金丝雀。如果是正确的,金丝雀部署背后的想法是向一组用户推出新版本。在这里,我的问题让我的团队拥有开发人员和测试团队。每当测试团队尝试访问应用程序时,它应该重定向到新版本的应用程序,这可能吗?还是金丝雀仅用于通过一项服务同时运行 2 个版本的应用程序?

0 投票
0 回答
70 浏览

deployment - 使用 Rabbit 进行部署处理

我的应用程序有rabbitMq,它有多个消费者[3],我会循环使用消息。目前我在部署新版本时进行金丝雀部署,但这让我陷入了任何消费者[不仅仅是金丝雀消费者]都可以使用消息的情况,这会产生问题。
[另外我希望它只有在需要循环部署所有其他时间时才表现得像这样]

我已经知道绿蓝部署过程,但是还有其他方法可以解决这个问题吗?

0 投票
0 回答
28 浏览

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 后,问题仍然存在于浏览器中。这里的任何建议将不胜感激。

0 投票
2 回答
78 浏览

kubernetes - 手动替换一个 pod 上的图像,而其他 pod 使用主图像

假设我有 10 个 pod 运行稳定版本,我希望在完全推出之前替换其中一个的映像以运行更新版本。

有没有办法做到这一点?

0 投票
1 回答
162 浏览

firebase - 有人如何在 Firebase 托管上的多个发行版本之间进行流量拆分

例如,在 App Engine、Cloud Run 和 K8 中,可以在多个版本之间分配流量,特别是如果您想执行 A/B 测试或进行金丝雀发布。所以,我想知道 firebase 托管是否也有这个相同的功能或如何使用 Firebase 托管来完成。

0 投票
1 回答
164 浏览

testing - 在 RTL 中镜像金丝雀部署?

我是金丝雀部署的新手。我们将开始通过 Istio 进行金丝雀部署。

我假设这只是一种部署机制,可能会在预生产环境中进行一些 Istio 路由测试,但在早期的测试环境中,我们会像今天一样对正在测试的版本进行隔离。

有人建议将金丝雀概念应用于所有测试环境,因此我们可以在 Route To Live 中有效地运行我们希望在 prod 中进行金丝雀测试的所有版本。

想知道其他人正在采取什么方法?