使用ASM管理Knative服务(5):在Knative on ASM中基于流量灰度发布服务

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Knative on ASM提供了基于流量的灰度发布能力。当创建Knative服务时,Knative会自动为服务创建第一个修订版本Revision。此后当Knative服务的配置发生变化时,Knative都会创建一个新的修订版本。通过修改流量发往不同修订版本的分配比例,即可实现灰度发布功能。本文介绍如何在Knative on ASM中基于流量灰度发布服务。

Knative on ASM提供了基于流量的灰度发布能力。当创建Knative服务时,Knative会自动为服务创建第一个修订版本Revision。此后当Knative服务的配置发生变化时,Knative都会创建一个新的修订版本。通过修改流量发往不同修订版本的分配比例,即可实现灰度发布功能。本文介绍如何在Knative on ASM中基于流量灰度发布服务。

本系列文章包括以下部分:

使用ASM管理Knative服务(1):Knative on ASM概述

使用ASM管理Knative服务(2):使用Knative on ASM部署Serverless应用

使用ASM管理Knative服务(3):在Knative on ASM中使用自定义域名

使用ASM管理Knative服务(4):使用ASM网关实现HTTPS访问Knative服务

使用ASM管理Knative服务(5):在Knative on ASM中基于流量灰度发布服务

使用ASM管理Knative服务(6):基于流量请求数实现服务自动扩缩容

前提条件

通过控制台创建修订版本

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择应用 > Knative
  5. 创建修订版本。选择服务管理页签,然后单击目标服务名称或右侧操作列下的详情
  6. 进入服务详情页面后,单击右上角的创建修订版本按钮。
  7. 基本信息配置向导步骤,单击高级设置,设置最新修订版本的环境变量, 名称为TARGET, 变量值为Knative on ASM

    image.png

  8. 单击下一步。在流量设置配置向导步骤,设置最新修订版本的流量比例为0,单击创建
注意 所有修订版本的流量比例之和需要等于100。

image.png

  1. 创建完成后,选择服务管理页签,可以看到新创建服务版本的详细信息。
  2. 执行以下命令,访问服务。
curl http://helloworld-go.default.example.com

预期输出:

Hello World!

可以看到,由于新版本服务的流量比例为0,访问helloworld-go服务,还是请求到旧版本的服务。

修改流量比例灰度发布服务

  1. 服务管理页面,单击目标服务右侧操作列下的详情
  2. 单击设置流量比例
  3. 设置流量比例对话框中,将新版本和旧版本的流量比例都设置为50%,然后单击确定

image.png

  1. 服务流量比例设置成功后,选择服务管理页签,可以看到新版本和旧版本服务的详细信息。
  2. 执行以下命令,访问服务。
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;

预期输出:

Hello Knative on ASM!
Hello Knative on ASM!
Hello World!
Hello Knative on ASM!
Hello World!
Hello World!
Hello World!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello World!
Hello Knative on ASM!
Hello World!
Hello Knative on ASM!
Hello Knative on ASM!
Hello World!
Hello World!

由于新、旧版本的流量比例各为50%,所以当前访问helloworld服务的话,基本是按接近50%进行流量分配。

  1. 可以通过调整流量比例继续灰度发布服务,直到新版本服务的流量比例为100%,完成灰度发布服务。在这个过程中,如果发现新版本有问题,您可以随时通过调整流量比例的方式进行回滚操作。
  2. 再次访问服务, 可以得到如下类似结果:
for i in `seq 20`; do curl http://helloworld-go.default.example.com; done;

预期输出:

Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
Hello Knative on ASM!
相关文章
|
4月前
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
152 2
|
4月前
|
Prometheus Kubernetes 监控
打造无缝灾备新境界:运用服务网格ASM,将集群外服务无缝融入集群内服务,铸就高可用性坚盾!
【8月更文挑战第2天】随着微服务架构的应用,服务的高可用性变得至关重要。服务网格如阿里巴巴的ASM提供流量管理、服务发现等功能,支撑高可靠服务系统。本文介绍如何利用ASM实现集群外服务作为集群内服务的灾备方案,确保服务连续性。先决条件包括已部署ASM的Kubernetes集群环境及内外部的关键服务副本。通过定义服务条目、配置虚拟服务和目的地规则,可实现自动或手动故障转移。借助ASM的流量管理能力,确保服务高可用性和业务连续性。
60 10
|
4月前
|
Kubernetes 安全 数据安全/隐私保护
利用服务网格实现全链路mTLS(二):通过出口网关访问外部mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,简化服务治理,包括流量管理、服务间通信安全及网格可观测性。ASM出口网关统一管理网格内的出口流量,实现全链路加密通信与精细访问控制。本文介绍如何配置ASM出口网关以管理出口流量并发起mTLS通信,涉及配置ServiceEntry、创建出口网关、设置虚拟服务及目标规则等步骤,最终实现安全可控的mTLS服务访问。
175 3
|
4月前
|
Perl
如何利用服务网格ASM使用集群外服务做集群内服务的灾备
本文档指导您如何配置阿里云服务网格(ASM)以实现在多集群环境下,服务间的优先访问及故障转移策略。
127 2
|
6月前
|
Cloud Native 容器 Kubernetes
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
本文简要讨论了使用流量泳道来实现全链路流量灰度管理的场景与方案,并回顾了阿里云服务网格 ASM 提供的严格与宽松两种模式的流量泳道、以及这两种模式各自的优势与挑战。接下来介绍了一种基于 OpenTelemetry 社区提出的 baggage 透传能力实现的无侵入式的宽松模式泳道,这种类型的流量泳道同时具有对业务代码侵入性低、同时保持宽松模式的灵活特性的特点。同时,我们还介绍了新的基于权重的流量引流策略,这种策略可以基于统一的流量匹配规则,将匹配到的流量以设定好的比例分发到不同的流量泳道。
73539 16
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
|
5月前
|
人工智能 自然语言处理 安全
使用阿里云服务网格高效管理LLM流量:(一)流量路由
ASM支持通过LLMProvider和LLMRoute资源管理大型语言模型流量。LLMProvider负责注册LLM服务,LLMRoute负责设定流量规则,应用可灵活切换模型,满足不同场景需求。
|
7月前
|
存储 机器学习/深度学习 负载均衡
模型服务网格:云原生下的模型服务管理
模型服务网格:云原生下的模型服务管理
78565 16
模型服务网格:云原生下的模型服务管理
|
Kubernetes API 容器
基于阿里云服务网格流量泳道的全链路流量管理(二):宽松模式流量泳道
基于阿里云服务网格流量泳道的全链路流量管理(二):宽松模式流量泳道
10994 18
|
7月前
|
Kubernetes Cloud Native 测试技术
使用ASM流量泳道的全链路灰度发布实践
服务网格ASM实现全链路灰度发布:通过流量泳道隔离不同版本环境,配置虚拟服务实现灰度比例控制。从创建泳道、打标签、部署新版本到灰度切流、最终上线及下线旧版。
|
监控 Cloud Native 微服务
基于 ASM 简化可观测管理、提升业务洞察力(4)
基于 ASM 简化可观测管理、提升业务洞察力
104 0
基于 ASM 简化可观测管理、提升业务洞察力(4)