KubeSphere实现金丝雀发布(Canary Release)

这篇具有很好参考价值的文章主要介绍了KubeSphere实现金丝雀发布(Canary Release)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0 前言

KubeSphere 基于 [Istio] 向用户提供金丝雀发布功能,即:

  • 引入服务的新版本,并向其发送一小部分流量来进行测试
  • 同时,旧版本负责处理其余的流量
  • 如果一切顺利,就可逐渐增加向新版本发送的流量,同时逐步停用旧版本
  • 如出现任何问题,可用 KubeSphere 更改流量比例来回滚至先前版本

该方法能高效测试服务性能和可靠性,有助在实际环境发现潜在问题,又不影响系统整体稳定性。canary-release-0

KubeSphere实现金丝雀发布(Canary Release)

环境前提

  • 启用 KubeSphere 服务网格
  • 启用 KubeSphere 日志系统以使用 Tracing 功能
  • 创建一个企业空间、一个项目和一个用户 (project-regular)。请务必邀请该用户至项目中并赋予 operator 角色。参见创建企业空间、项目、用户和角色
  • 开启应用治理并有一个可用应用,以便实现该应用的金丝雀发布。本教程使用示例应用 Bookinfo。参见部署 Bookinfo 和管理流量。

1 创建金丝雀发布任务

登录 KubeSphere 控制台:

KubeSphere实现金丝雀发布(Canary Release)

转到灰度发布页面,点击创建灰度发布任务:

KubeSphere实现金丝雀发布(Canary Release)

发布模式选项卡,点击金丝雀发布右侧的创建

KubeSphere实现金丝雀发布(Canary Release)

设置任务名称,点击下一步

服务设置选项卡,从下拉列表中选择你的应用和要实现金丝雀发布的服务。如Bookinfo系统的 reviews服务 并点击下一步

KubeSphere实现金丝雀发布(Canary Release)

新版本设置选项卡,添加另一个版本(例如 kubesphere/examples-bookinfo-reviews-v2:1.16.2;将 v1 改为 v2)并点击下一步

KubeSphere实现金丝雀发布(Canary Release)

可用具体比例或使用请求内容(如Http HeaderCookieURI)分别向这两个版本(v1v2)发送流量。选择指定流量分配,并拖动中间滑块来更改向这两个版本分别发送的流量比例(如设置为各 50%)。操作完成后,点击创建

KubeSphere实现金丝雀发布(Canary Release)

结果:

KubeSphere实现金丝雀发布(Canary Release)

点击进去查看,v2的资源已被创建:

KubeSphere实现金丝雀发布(Canary Release)

到工作负载下观察:

KubeSphere实现金丝雀发布(Canary Release)

2 验证金丝雀发布

现在有两个可用的应用版本了,访问该应用以验证金丝雀发布。

访问 Bookinfo 网站,持续刷新浏览器。会看到 Book Reviews 板块以 50% 比例在 v1 版本和 v2 版本之间切换:

KubeSphere实现金丝雀发布(Canary Release)

相信大家一眼就看出区别了:

KubeSphere实现金丝雀发布(Canary Release)

金丝雀发布任务创建后会显示在任务状态选项卡下:

KubeSphere实现金丝雀发布(Canary Release)

点击该任务查看详情可看到每个版本分别收到一半流量,新的部署也已创建:

KubeSphere实现金丝雀发布(Canary Release)

可执行以下命令直接获取虚拟服务来识别权重:

kubectl -n demo-project get virtualservice -o yaml
  • 当您执行上述命令时,请将 demo-project 替换为您自己项目(即命名空间)的名称。
  • 如想在 KubeSphere 控制台使用 Web kubectl 执行命令,则需要使用 admin 帐户登录。

预期输出:

...
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        port:
          number: 9080
        subset: v1
      weight: 50
    - destination:
        host: reviews
        port:
          number: 9080
        subset: v2
      weight: 50
      ...

3 查看网络拓扑

在运行 KubeSphere 的机器执行以下命令引入真实流量,每 0.5 秒模拟访问一次 Bookinfo。

watch -n 0.5 "curl http://productpage.demo-project.192.168.0.2.nip.io:32277/productpage?u=normal"

将命令中的主机名和端口号替换成自己环境的。

  1. 流量监控中,可看到不同服务之间的通信、依赖关系、运行状态及性能

    KubeSphere实现金丝雀发布(Canary Release)

  2. 点击组件(例如 reviews),在右侧可以看到流量监控信息,显示流量成功率持续时间的实时数据:

    KubeSphere实现金丝雀发布(Canary Release)

4 查看链路追踪详情

KubeSphere 提供基于 Jaeger 的分布式追踪功能,用来对基于微服务的分布式应用程序进行监控及故障排查。

  1. 链路追踪选项卡中,可以清楚地看到请求的所有阶段及内部调用,以及每个阶段的调用耗时。
  2. 点击任意条目,可以深入查看请求的详细信息及该请求被处理的位置(在哪个机器或者容器)。

5 接管所有流量

若一切运行顺利,则可以将所有流量引入新版本:

  1. 任务状态中,点击金丝雀发布任务

  2. 在弹出的对话框中,点击 reviews v2 右侧的 KubeSphere实现金丝雀发布(Canary Release),选择接管。这代表 100% 的流量将会被发送到新版本 (v2)

    如果新版本出现任何问题,可以随时回滚到之前的 v1 版本

  3. 再次访问 Bookinfo,多刷新几次浏览器,您会发现页面只会显示 reviews v2 的结果(即带有黑色星标的评级)

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。

参考:

  • 编程严选网

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-780874.html

到了这里,关于KubeSphere实现金丝雀发布(Canary Release)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操

    蓝绿发布、金丝雀发布、滚动发布、A/B测试 ,是大家日常常见的发布工作。所以 发布的原理和实操 是一个 非常、非常核心的面试知识点 。 在40岁老架构师 尼恩的 读者交流群 (50+)中,其相关面试题是一个非常、非常高频的交流话题。 只要一面试,基本就会问: 对灰度发布

    2024年02月04日
    浏览(50)
  • 【K8s】¹版本回退升级&金丝雀发布

    为了更好的解决服务编排的问题, 我们可以使用Deployment控制器。这种控制器不直接管理pod,他通过ReplicaSet来管理pod。 目录 1.使用yaml文件形式,创建deployment 2.扩缩容 3.镜像更新 4.版本回退 5.金丝雀发布 金丝雀发布的优点 金丝雀发布的缺点 Deployment主要功能: 支持ReplicaSet的

    2024年02月03日
    浏览(39)
  • 蓝/绿部署 VS 金丝雀部署

    在生产环境中更新和配置应用程序通常是件令人望而生畏的事。面对如此多的可用选项,应如何选择最适合你的用例的部署策略? 部署策略用于升级或配置正在运行的应用程序。在下文中,我们将讨论三种部署策略: 重建部署 :在部署新版本之前,终止当前版本。 蓝/绿部

    2024年02月06日
    浏览(36)
  • 自动化金丝雀部署:Flagger全面解读webhook(含源码)

    内容导读: 上文通过下面的配置就实现了 验收测试 和 压力测试 ,对此有以下疑问: metadata定义脚本和类型,说明接口能执行shell,那它是怎么实现的? type未设置是怎样的执行逻辑?type有哪些值,各有什么作用? 本文将通过源码来解答以上问题 本文采用 粗读 源码方式,

    2024年04月11日
    浏览(55)
  • 使用 KubeSphere 实现微服务的灰度发布

    今天来说一说,在 KubeSphere 中两个 \\\" 小姐姐 \\\" 如何来回切换,这是什么意思哩?其实就是互联网产品中常用的灰度发布方式。 互联网产品需要快速迭代上线,既要保证新功能运行正常,又要保证质量,一旦出现问题可以很快控制局面,就需要设计一套灰度发布系统。用大白话

    2024年02月20日
    浏览(47)
  • KubeSphere 3.3.2 版本正式发布!

    距离上一个版本 v3.3.1 发布,已经过了 3 个多月,今天我们很高兴宣布 KubeSphere v3.3.2 正式发布! 此版本由 68 位贡献者参与代码提交,感谢各位贡献者对 KubeSphere 项目的支持与贡献! 本次发布的 KubeSphere v3.3.2 带来了更多的优化增强,主要集中在对 DevOps 和应用商店易用性的提

    2024年02月15日
    浏览(41)
  • [Github] Github 如何发布(release)

            GitHub 上的 \\\" 发布 \\\" 通常是指创建一个新的 release ,其中可以包含你的项目的特定版本、变更日志和其他相关信息。          先说发布的前提条件:          1. 首先在你的本地仓库创建一个新的分支,假如就叫 release-v1.0.0         git checkout -b release-v1.0.0 

    2024年02月04日
    浏览(53)
  • Go文档:Release History(发布历史)

    本文更新于2024-03-22。 官方文档:https://go.dev/doc/devel/release 目录 泛型 go1.22.0 (2024-02-06) go1.21.0 (2023-08-08) go1.20 (2023-02-01) go1.19 (2022-08-02) go1.18 (2022-03-15) 模块 go1.17 (2021-08-16) go1.16 (2021-02-16) go1.15 (2020-08-11) go1.14 (2020-02-25) go1.13 (2019-09-03) go1.12 (2019-02-25) go1.11 (2018-08-24) go1.10 (2018-02-16

    2024年04月13日
    浏览(38)
  • 宣布发布 .NET 7 Release Candidate 1

    今天,我们宣布推出 .NET 7 Release Candidate 1。这是在生产中支持的 .NET 7 的两个候选版本 (RC) 中的第一个。 您可以下载适用于 Windows、macOS 和 Linux 的 .NET 7 Release Candidate 1。 安装程序和二进制文件 容器图像 Linux 软件包 发行说明 已知的问题 GitHub 问题跟踪器 .NET 7 Release Candidate

    2024年02月06日
    浏览(41)
  • 未来已来,OpenHarmony 3.2 Release发布,迈入发展新阶段

    目录 OpenHarmony 3.2 Release为开发者带来了什么 ArkUI 组件能力增强 UI界面开发支持一次开发适配多屏幕规格 应用框架 应用包管理 分布式技术 分布式软总线 分布式硬件 分布式数据管理 媒体 音频 播放 相机 图片 程序访问控制 ArkCompiler 语言特性增强 编译器运行时功能 语言基础库

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包