通过EDAS实现K8s微服务应用的金丝雀发布

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,体验微服务应用的部署、访问和高级发布能力。

通过EDAS实现K8s微服务应用的金丝雀发布


1. 金丝雀发布流程示意图


2. 实验资源方式简介及开始实验

云起实验室实验资源方式介绍

云起实验室支持公开通免费试用、个人账户资源两种实验资源方式。

  • 开通免费试用
  • 使用个人账号开通试用,平台仅提供手册参考。
  • 所有实验操作将保留至您的账号,请谨慎操作。
  • 在实验页面下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心
  • 说明:试用云产品开通在您的个人账号下,并占用您的试用权益。如试用超出免费试用额度,可能会产生一定费用。

  • 个人账户资源
  • 使用您个人的云资源进行操作,资源归属于个人。
  • 所有实验操作将保留至您的账号,请谨慎操作。
  • 平台仅提供手册参考,不会对资源做任何操作。
  • 说明:使用个人账户资源,在创建资源时,可能会产生一定的费用,请您及时关注相关云产品资源的计费概述。

准备开始实验

在实验开始前,请您选择其中一种实验资源,单击确认开启实验


3. 领取免费试用资源

实验前必看!

  • 如果您的阿里云主账号符合开通企业级分布式应用服务EDAS免费试用的资格,建议您进行开通免费试用。企业级分布式应用服务EDAS免费额度,是指可抵扣5个后付费托管实例,超出部分按EDAS按量付费计算,详情请参见计费概述
  • 如果您的阿里云主账号符合开通容器服务Serverless版ACK Serverless免费试用的资格,建议您进行开通免费试用。容器服务Serverless版ACK Serverless免费试用时长为7天,ACK Serverless试用集群减免的费用和不会减免的费用详情,请参见试用前说明。ACK Serverless试用集群减免额度以节省计划形式发放到账户,实际消耗会因应用部署、网络环境等变化。不使用时,请及时释放资源。在试用期即将到期后,ACK Serverless试用集群减免的费用。如果您需要继续使用集群,请至少在试用期到期1小时前为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ACK Serverless Pro版集群过程中用到的其他阿里云云产品资源,相关计费说明,请参见云产品资源计费
  • 如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。
  • 为了避免资源浪费并造成账号扣费的情况,请严格按照本文提供的参数进行配置。在实验完成之后,请您及时删除或禁用压测任务。
  1. 在实验开始前,请您选择开通免费试用

  1. 开通企业级分布式应用服务EDAS免费试用。

2.1 在实验室页面下方,选择企业级分布式应用服务EDAS,单击立即试用

2.2 在企业级分布式应用服务EDAS面板,选中服务协议,单击立即试用

  1. 开通容器服务Serverless版ACK Serverless免费试用。

3.1 在实验室页面下方,选择容器服务Serverless版ACK Serverless,单击立即试用

3.2 在Serverless容器服务ACK Serverless面板,在服务协议右侧,单击已完成服务角色的授权链接,然后单击同意授权,完成ACK Serverless试用集群的授权操作。

3.3 返回Serverless容器服务ACK Serverless面板,选择任一地域,本教程以华东1(杭州)地域为例,其他配置项保持默认。仔细阅读各服务协议,并选中服务协议选框,然后单击立即试用

3.4 试用申请成功通过后,系统将会为您自动创建ACK Serverless标准版集群。前往容器服务ACK Serverless控制台,集群创建大约需要10分钟,当集群状态为运行中时,即可正常使用。

  1. 领取完免费试用后,返回资源领取界面,单击我已开通,进入实验

说明:如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。


4. 创建资源

  1. 开通企业级分布式应用服务EDAS。

说明:

  • 如果您选择的免费试用,并且在上一步骤中领取了企业级分布式应用服务EDAS免费试用,请您跳过本步骤,直接进行下一小节操作。
  • 如果您选择的免费试用,但是您的阿里云主账号没有资格领取企业级分布式应用服务EDAS的免费试用,请您根据如下操作,开通企业级分布式应用服务EDAS,会产生一定的费用,具体计费详情,请参见计费概述
  • 如果您选择的个人资源,请您根据如下操作,开通企业级分布式应用服务EDAS,会产生一定的费用,具体计费详情,请参见计费概述。如果您已开通企业级分布式应用服务EDAS,请您跳过本步骤,直接进行下一小节操作。

1.1 前往EDAS控制台,提示您尚未开通企业级分布式应用服务EDAS,请前往开通页面开通单击免费开通进入服务开通流程。

1.2 在开通服务页签,单击免费开通

1.3 在服务开通页面,选择计费模式,您可以选择按量付费包年包月包年包月模式支持标准版专业版铂金版系列,然后单击立即购买

1.4 在确认订单页面,选中服务协议,单击立即开通

说明:本实验以按量付费模式为例进行说明。

1.5 完成开通后,返回开通服务页签,单击刷新,然后单击下一步

1.6 在角色授权页签,单击立即授权

1.7 在云资源访问授权页面,单击同意授权

1.8 返回角色授权页签,单击刷新,然后单击下一步

返回如下页面,表示您已成功开通企业级分布式应用服务EDAS。

  1. 创建容器服务Serverless版ACK Serverless。

说明:

  • 如果您选择的免费试用,并且在上一步骤中领取了容器服务Serverless版ACK Serverless的免费试用,后台会自动为您创建容器服务Serverless版ACK Serverless集群,请您跳过本步骤,直接进行下一小节操作。
  • 如果您选择的免费试用,但是您的阿里云主账号没有资格领取容器服务Serverless版ACK Serverless的免费试用,请您根据如下操作,创建容器服务Serverless版ACK Serverless集群,并且会产生一定的费用,详情请参考云产品资源计费
  • 如果您选择的个人资源,请您根据如下操作,创建容器服务Serverless版ACK Serverless集群,并且会产生一定的费用,详情请参考云产品资源计费

2.1 前往容器服务ACK Serverless控制台,在集群列表页面,单击创建集群

2.2 在集群配置页面,集群类型ACK Serverless集群集群规格标准版,自定义集群名称,地域选择华东1(杭州),本教程以华东1(杭州)为例,Kubernetes版本选择<=1.24,其他配置保持默认即可,然后单击下一步:组件配置

说明:本试用教程以下列的配置信息为例,实际操作时,建议根据您的实际业务体量和需求选择。

参数说明:

2.3 在组件配置页面,关闭日志服务,单击下一步:确认配置

2.4 在确认配置页面,选中服务协议,单击创建集群

2.4 在日志页面,单击集群列表

2.5 在集群列表页面,等待大约3~5分钟。状态变为运行中后,表示ACK Serverless集群创建完成,即可使用该ACK Serverless集群。


5. 在EDAS控制台导入ACK Serverless集群

  1. 前往EDAS控制台,在左侧导航栏,选择资源管理>Serverless K8s集群

  1. Serverless K8s集群页面,您可以看到已创建好的ACK Serverless集群,单击其集群右侧操作列下的导入

  1. 警告对话框中, 单击确定

  1. 导入预检对话框中,单击继续导入

  1. 导入Kubernetes集群对话框中,单击导入

  1. Serverless K8s集群页面,等待导入状态变为导入成功,表示已成功导入。

  1. Serverless K8s集群页面,单击右侧操作列下的日志

返回如下结果,您可以查看集群导入时的EDAS管控组件安装进度。


6. 部署Demo应用

  1. 在左侧导航栏,选中应用管理 > 应用列表

  1. 应用列表页面,单击创建应用

  1. 应用基本信息页签,选择集群类型Kubernetes集群托管应用类型Java,其他配置保持默认即可,单击下一步

  1. 部署Consumer Demo应用。
  2. 应用配置页签,选择应用需部署到的目标微服务空间、集群和K8s Namespqce,设置应用名称为canary-demo-a,上传Demo应用的JAR包,版本使用用时间戳作为版本号,设置Pod总数为1,单击下一步

说明:Consumer Demo应用请单击此链接下载canary-demo-a.jar

  1. 应用高级设置页签,单击下一步

  1. 分组设置(选填)页签,选择资源组,然后单击创建应用

  1. 应用创建完成页签,确认应用配置信息后,单击确定创建应用

  1. 应用变更预检确认对话框,单击开始预检

  1. 应用变更预检确认对话框,预检通过后,单击继续

  1. 应用列表页面,稍等片刻,应用状态运行中,表示应用部署成功。

  1. 根据上述操作步骤,部署Provider Demo应用。设置应用名称为canary-demo-b,Provider Demo应用请单击此链接下载canary-demo-b.jar。由于演示实验为金丝雀发布应用,所以在应用配置页签,需设置Provider应用的Pod总数为2。

  1. 创建完成后,您可以在应用列表中查看已部署的Demo应用。


7. 为Consumer应用绑定SLB

  1. 应用列表页面,单击部署的Consumer应用的应用名称canary-demo-a ,进入应用总览页面。

  1. 访问方式配置区域,单击负载均衡(公网)右侧的图标,为应用绑定公网负载均衡。

  1. 负载均衡(公网)对话框,单击TCP | HTTP 协议右侧的+添加新的监听,参考如下说明配置端口信息,然后单击确认

参数说明:

  • SLB端口(应用名):负载均衡前端端口,设置为80
  • 容器端口(Target port):后端端口,设置为20001

等待应用变更流程结束,刷新页面,您即可在访问方式配置区域看到已绑定的负载均衡IP地址。


8. 测试Demo应用

在浏览器中打开新页签,在地址栏中输入Consumer应用绑定的负载均衡公网IP地址访问接口/content,可以看到请求会轮询访问两个Provider Pod的IP地址。


9. 按内容金丝雀发布Provider

  1. 应用列表页面,单击部署的Provider应用的应用名称canary-demo-b,进入应用总览页面。

  1. 在页面右上角,选择部署 > 部署,进入选择部署模式页面。

  1. 选择金丝雀发布(灰度)发布模式,单击开始部署

  1. 金丝雀发布(灰度)页面,配置应用部署信息。配置完成后,单击确定
  2. 单击用时间戳作为版本号修改版本。

  1. 发布策略区域,使用默认配置。 首批灰度数量:1 剩余批次:1 批次内部署间隔:10秒

  1. 按内容灰度区域,单击添加策略,配置按请求参数Parameter进行流控的灰度策略,如下图所示。请求参数taggray的流量,将转发至灰度版本的实例中。
  2. 添加内容灰度策略面板,配置策略名称canary-rule-param
  1. 单击创建流量规则,然后单击+添加规则条件,配置以下规则,然后单击确定参数类型Parameter 参数tag 条件= 值gray

  1. 选择策略列表,选择已创建好的灰度策略,单击确定。

  1. 应用变更预检确认对话框,单击开始预检

  1. 应用变更预检确认对话框,,预检通过后,单击继续开始金丝雀灰度部署。

  1. 变更记录页面,查看当前应用金丝雀发布的部署详情,以及当前生效的灰度发布策略。

  1. 打开浏览器,验证金丝雀按内容灰度流控规则生效。 当灰度版本实例发布完成后,需等待客户端缓存刷新Pod实例的实例列表(刷新周期默认为30s),流量才会按规则访问到目标实例。
  • 带请求参数tag=gray访问,流量始终发送到新版本Pod实例上。

  • 不带参数访问或带tag!=gray参数访问,流量始终发送到原Pod实例上。

  1. 变更记录面板,单击灰度发布区域的执行下一批,清理金丝雀流控规则,完成应用金丝雀发布流程。

  1. 打开浏览器,验证金丝雀流控规则已清理,且不再生效。此时,请求会轮询访问两个Provider Pod实例。


10. 按比例金丝雀发布Provider

  1. 应用列表页面,单击部署的Provider应用的应用名称canary-demo-b,进入应用总览页面。

  1. 在页面右上角,选择部署 > 部署,进入选择部署模式页面。

  1. 选择金丝雀发布(灰度)发布模式,单击开始部署

  1. 单击用时间戳作为版本号修改版本。

  1. 按比例金丝雀发布Provider应用,在金丝雀发布(灰度)页面的发布策略区域,选择按比例灰度发布模式,并设置流量比例10%,如下图所示,然后单击确定

  1. 应用变更预检确认对话框,单击开始预检

  1. 应用变更预检确认对话框,,预检通过后,单击继续开始金丝雀灰度部署。

  1. 您可在变更记录页面查看发布详情及灰度流量策略。

  1. 验证金丝雀按比例灰度流控规则生效,您可多次调用接口查看访问Provider Pod实例的情况,访问到新版本Pod的概率大致为1/10。

  1. 变更记录页面,单击灰度发布区域的执行下一批,清理金丝雀流控规则,完成应用金丝雀发布流程。

  1. 验证灰度流控规则已清理,请求会轮询访问两个Provider Pod实例。


11. Demo代码

Consumer应用

该应用提供接口/content/path(接口/path可用于验证按内容灰度时设置按请求路径灰度),并在请求处理中输出本机IP地址。通过restTemplate调用sc-B服务接口,且请求sc-B服务时,/content接口透传了env标签和tag参数。

Provider应用

该应用提供接口/b/bb,输出本机IP地址。

demo包下载


12. 清理及后续

完成教程后,请及时清理测试数据和试用资源,避免产生额外资损。

清理

  • EDAS应用
  • 如果无需继续使用EDAS应用,请登录EDAS控制台,在左侧导航栏选择应用管理 > 应用列表,在应用列表的应用名称列单击目标应用名称,在实例部署信息页签的右上角单击停止,然后在对话框中单击确定。应用停止后,在页面右上角单击删除应用,在对话框中单击删除,完成应用的释放。

  • 如果仍需要继续使用EDAS应用,您可以继续创建应用实例。当实例数量超过5个时,EDAS开始计费。更多信息,请参见计费概述
  • ACK Serverless集群
  • 如果无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多>删除。在删除集群页面,选中同时删除集群下的ALB资源、同时删除集群下的PrivateZone资源我已知晓以上信息并确认删除集群,然后单击确定。关于删除ACK Serverless集群的更多信息,请参见删除集群

  • 如果需要继续使用集群,请至少在试用期到期1小时前为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ACK Serverless Pro版集群过程中用到的其他阿里云云产品资源,相关计费说明,请参见云产品资源计费

后续

您可以基于EDAS应用,完成EDAS应用的其他试用教程。您可以基于ACK Serverless集群,对ACK Serverless集群和应用进行增删改查操作,更多信息,请参见删除集群查看集群信息


实验地址:https://developer.aliyun.com/adc/scenario/9968657f36ec4d209daf059157e324dd

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
157 3
|
21天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
21天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
29天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
57 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
2月前
|
应用服务中间件 调度 nginx
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
|
2月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
32 1
|
2月前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
124 0
|
2月前
|
运维 Kubernetes 负载均衡
深入探索Kubernetes在微服务架构中的应用
【10月更文挑战第18天】深入探索Kubernetes在微服务架构中的应用
82 0
|
2月前
|
存储 Kubernetes 调度
k8s学习--k8s群集部署zookeeper应用及详细解释
k8s学习--k8s群集部署zookeeper应用及详细解释

热门文章

最新文章