DevOps - 从渐进式交付说起(含实践 Demo) (2)

DevOps - 从渐进式交付说起(含实践 Demo)


DevOps - 从渐进式交付说起(含实践 Demo)

2. 执行 K8S Job 对预发布环境数据库自动 Migrate,并发布到预发布环境。

DevOps - 从渐进式交付说起(含实践 Demo)

3. 此时通过访问 可以访问到新发布的服务。

DevOps - 从渐进式交付说起(含实践 Demo)

4. 人工确认:发布生产环境前是否进行 A/B 测试。

DevOps - 从渐进式交付说起(含实践 Demo)

5. 在本例,发布后以 Header 包含 location=shenzhen 作为区分 A/B 测试流量。

在浏览器内直接请求 ,流量仍然分流到生产环境。在 Postman 携带 location=shenzhen 的 Header 请求,可以发现流量被分流到“A/B 测试环境”。

DevOps - 从渐进式交付说起(含实践 Demo)

6. 人工确认:设置期望的灰度发布比例,自动灰度发布,如选择灰度发布比例为 50%。

DevOps - 从渐进式交付说起(含实践 Demo)

7. 请求 ,灰度发布环境和生产环境将以 1:1 的流量比例对外提供服务。

DevOps - 从渐进式交付说起(含实践 Demo)

8. 人工确认:全量发布生产环境。

DevOps - 从渐进式交付说起(含实践 Demo)

9. 此时请求 访问的是生产环境新版本。

DevOps - 从渐进式交付说起(含实践 Demo)

10. 自动配置限流和熔断策略,保证生产稳定性。通过压力测试可看到并发请求有一部分被限流。

HttpCode=429,代表 Too Many Requests ,拒绝服务。

DevOps - 从渐进式交付说起(含实践 Demo)

对于开发人员,这种渐进式交付经过多轮的灰度、A/B 测试,最大程度减少代码 BUG 发布到生产环境

对于运维人员,这种几乎全自动的交付方式改变了手动修改 yaml 文件,手动 apply 的麻烦,最大程度减少发布产生的人为错误。通过自动触发的方式,减小了与开发的沟通成本

对于产品经理和运营人员,产品迭代不再是靠内部团队“YY”,而是基于实际用户体验数据,了解新功能对于用户和市场的反馈,最大程度减小新功能的用户和市场风险

4. 动手实践 4.1 概览

准备一个 K8S 集群,推荐使用腾讯云容器服务;

K8S 集群部署 Traefik 替换 nginx-Ingress 作为 Ingress Gateway,提供更好的流量治理能力;

开通 CODING DevOps,提供镜像构建和流水线的部署能力;

克隆示例代码并推送到自己的 CODING 代码仓库;

复制模板创建部署流水线;

尽情测试。

4.2 实践步骤 4.2.1 克隆源代码并创建构建计划

克隆源代码并推送到自己的 CODING 仓库

git clone https://e.coding.net/wangweicoding/cd-production.git git remote remove origin git remote add origin 你的 CODING 仓库地址 git push origin master

创建构建计划

使用 cd-production 代码仓库内的 Jenkinsfile 创建构建计划

DevOps - 从渐进式交付说起(含实践 Demo)

4.2.2 开通腾讯云容器服务

开通集群,并在 CODING DevOps 新建 K8S 集群凭证(如有必要,请允许集群外网访问)

DevOps - 从渐进式交付说起(含实践 Demo)

4.2.3 通过 CODING DevOps 初始化 Traefik

复制代码仓库 cd-production 的 coding-templates/traefik.json 内容,并在 部署控制台 创建 pipeline,点击“编辑 JSON 配置”,将内容复制到输入框。

DevOps - 从渐进式交付说起(含实践 Demo)


DevOps - 从渐进式交付说起(含实践 Demo)

点击“Update Pipeline”后,自动创建了对应的 Pipeline。

DevOps - 从渐进式交付说起(含实践 Demo)

注意请将每一个阶段的云账号修改为自己的云账号。
再点击“保存”即完成 Traefik 初始化的 Pipeline 创建,返回后,点击“立即启动”完成集群 Traefik 的初始化。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjwgw.html