企业级运维之云原生与Kubernetes实战课程 - 第三章第6讲 实验三:灰度发布

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通过ingress实现灰度发布,实现权重灰度和根据header灰度。

企业级运维之云原生与Kubernetes实战课程

第三章第6讲 实验三:灰度发布

 

视频地址: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创建好两个DevelopmentService,分别创建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

 

  • ClintIPIngress Controller Pod IPServerIP是对应的后端Service Pod IP,其中10.205.0.135web110.205.0.6web2
  • 两个Ingress Controller Pod相互建联成功后,与后端Service连接,权重设置会有所不同;
  • IP10.205.0.132Pod会稍微多于另一个Pod,即负载均衡稍有偏差;

 

3. 创建Ingress实现Header灰度

 

要求headerack:test的请求灰度,其他header10%流量灰度;

 

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设定时,20service访问,其中有2次转发给web2

 image.png

 

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

 image.png

 

4. 验证日志服务

 

a.  查看Ingress日志

 image.png

 

 

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

 

例如查询:_container_ip172.20.0.142的日志出现次数

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

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

 

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

 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
12371
分享
相关文章
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
38 17
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
458 2
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
自动化运维:使用Python脚本实现系统监控云原生技术实践:Kubernetes在现代应用部署中的角色
【8月更文挑战第31天】在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。 【8月更文挑战第31天】本文旨在探索云原生技术的核心—Kubernetes,如何革新现代应用的开发与部署。通过浅显易懂的语言和实例,我们将一窥Kubernetes的强大功能及其对DevOps文化的影响。你将学会如何利用Kubernetes进行容器编排,以及它如何帮助你的
云原生入门:Docker容器化部署实战
【8月更文挑战第31天】在数字化浪潮中,云原生技术成为企业转型的助推器。本文通过Docker容器化部署的实践案例,引导读者从零基础到掌握基础的云原生应用部署技能。我们将一起探索Docker的魅力,学习如何将一个应用容器化,并在云平台上运行起来,为深入云原生世界打下坚实基础。
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19461 30
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
87 12
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等