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

简介: 本实验旨在通过使用分布式应用服务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

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
530 82
|
11月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
624 60
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
739 24
|
11月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
719 6
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?

推荐镜像

更多