实验三:灰度发布 | 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习实验三:灰度发布

开发者学堂课程【企业级运维之云原生与 Kubernets 实战课程:实验三:灰度发布】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/913/detail/14607


实验三:灰度发布

一、实验概述

通过 ingress 实现灰度发布,实现权重灰度和根据 header 灰度。

 

二、涉及实验资源

1. ACK 托管版集群;

2. ECS 客户端:Linux 带有公网 ip 的客户端,并且为集群外场景;

3. 域名账号。

 

三、实验架构

image.png

 

四、实验准备

1. 创建阿里云托管版 ACK 集群,已经部署好 nginx-ingress-controller 组件,已经部署好 logtail 组件(默认勾选“使用日志服务”,选择创建新的 Project);

2. 使用 ack 里面的 Cloud Shell 进行连接以配置管理集群或 kubectl 客户端(备注,所有执行操作都在 kubectl 客户端执行),客户端配置方法参考官网:容器集群控制台( cs.console.aliyun.com )->集群信息-“安装和设置 kubectl”;

3. 确认集群具有公网能力,保证可以拉取实验镜像;

4. 安装日志组件并确认其正常工作;

Ÿ 可以在创建集群时选中使用日志服务,启用 Logtail 组件;

Ÿ 也可以为已有集群启用 Logtail 组件:容器集群控制台( cs.console.aliyun.com)->运维管理->组件管理->日志与监控区->安装 logtail-ds 组件;

Ÿ 最后可以通过 “kubectl -n kube-system get pod | grep log”命令查看组件 Pod 的运行状态;

建议:在实验过程中尽量收集日志,以便遇到问题可以及时排查错误。

 

五、实验步骤

1. 创建测试应用

使用 yaml 创建好两个 Development 和 Service,分别创建 web1 应用以及灰度环境的 web2 应用:

Kubectl apply -f d.yaml

image.png

2. 创建 Ingress 实现权重灰度

apiVersion: extensions/v1beta1

kind:Ingress

metadata:

annotations:

kubernetes.io/ingress.class: nginx

name: huidu

namespace: default

spec:

rules:

#服务域名,可以自定义

- host: www.web.com

http:

paths:

- backend:

serviceName: web1-svc

servicePort: 80

path:/

pathType: ImplementationSpecific

---

apiVersion: extensions/v1beta1

kind:Ingress

metadata:

annotations:

kubernetes.io/ingress.class: nginx

nginx.ingress.kubernetes.io/canary: 'true'

nginx.ingress.kubernetes.io/canary-weight: '50'

name:huidu2

namespace: default

spec:

rules:

#服务域名,可以自定义

- host: www.web.com

http:

paths:

-backend:

当设置灰度权重为50%,测试实现效果:

image.png

Ÿ ClintIP 是 Ingress Controller Pod IP,ServerIP 是对应的后端 Service Pod IP,其中 10.205.0.135 是 web1,10.205.0.6 是 web2;

Ÿ 两个 Ingress Controller Pod 相互建联成功后,与后端 Service 连接,权重设置会有所不同;

Ÿ IP 为10.205.0.132的 Pod 会稍微多于另一个 Pod,即负载均衡稍有偏差;

3. 创建 Ingress 实现 Header 灰度

要求 header 为 ack:test 的请求灰度,其他 header 为 10% 流量灰度;

annotations:

kubernetes.io/ingress.class: nginx

nginx.ingress.kubernetes.io/canary: 'true'

nginx.ingress.kubernetes.io/canary-by-header: ack

nginx.ingress.kubernetes.io/canary-by-header-value: test nginx.ingress.kubernetes.io/canary-weight: '10'

name: huidu2

namespace: default

当没有 header 设定时,20 次 service 访问,其中有 2 次转发给 web2;

image.png

当 header 指向 ack:test 时,所有请求都转发给 web2。

image.png

4. 验证日志服务

a. 查看 Ingress 日志

image.png

b. 编写查询语句过滤需要的日志信息;

例如查询:_container_ip为172.20.0.142 的日志出现次数

查询语句: *│selectcount(*)where_container_ip_='172.20.0.142'

其中 172.20.0.142 替换为对应业务 pod 的实际 ip。

以上就是本次灰度发布实验。

 

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9月前
|
Kubernetes 网络协议 前端开发
k8s更新策略-系列文章第一篇:蓝绿发布
k8s更新策略-系列文章第一篇:蓝绿发布
|
2月前
|
应用服务中间件 测试技术 nginx
金丝雀发布(灰度发布)介绍 及 声明式管理方法简介
金丝雀发布(灰度发布)介绍 及 声明式管理方法简介
|
2月前
|
运维 负载均衡 Kubernetes
一文搞懂蓝绿发布、灰度发布和滚动发布
一文搞懂蓝绿发布、灰度发布和滚动发布
|
10月前
|
域名解析 运维 测试技术
不容闪失的灰度发布简介
不容闪失的灰度发布简介
116 0
|
atlas Android开发 开发者
构建与基线发布 | 学习笔记
简介:快速学习构建与基线发布
218 0
构建与基线发布 | 学习笔记
|
Java 中间件 测试技术
全链路灰度新功能:MSE上线配置标签推送
微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用。除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求。
全链路灰度新功能:MSE上线配置标签推送
|
Cloud Native Java 中间件
全链路灰度新功能:MSE 上线配置标签推送
本文介绍了全链路灰度场景给配置管理带来的问题,介绍了 MSE 针对这一场景的解决方案,并通过实践的方式展示了配置标签推送的使用流程。后续,MSE 还会针对配置治理做更多的探索,帮助用户更好地解决微服务配置管理中的难题,提高微服务应用的稳定性。
全链路灰度新功能:MSE 上线配置标签推送
|
运维 负载均衡 网络协议
游戏灰度发布
快速可以说是互联网的最大特点了,唯快不破,快速响应,快速发布,快速部署,快速上线 但上线,毕竟还是有风险的,怎么能又快速响应,又能降低风险范围呢 前人,现人,后人们都在寻找着银弹 部署方式就进化了有很多次,蓝绿部署、滚动部署、灰度发布、金丝雀发布。。。 这些都是为了应对互联网的快速响应需求 游戏的发布现在还是比较粗暴的,对开发,运维也比较简单。 制定一个版本计划,开发,与运营沟通,确定版本内容,到了时间,所有游戏区全部关闭入口,停止服务器,发布,部署,重启,开放入口,一气呵成,快哉! 等等,理想很丰满,现实很骨感 在版本发布最后一天,开发人员在凌晨1、 2点时,还在开发,修复bug,好不容易打
211 0
游戏灰度发布
|
测试技术 应用服务中间件 数据库
灰度发布的系统架构设计
互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统。
灰度发布的系统架构设计
|
运维 Kubernetes 监控
一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点
目前,业界已经总结出了几种常见的服务发布策略来解决版本升级过程中带来的流量有损问题。本文首先会对这些普遍的发布策略进行简单的原理解析,最后结合阿里云的云原生网关对这些发布策略进行实践。
2435 0
一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点