阿里云服务网格ASM的流量标签及路由功能之(2): 基于流量标签的路由规则

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 通过流量标签CRD(TrafficLabel) 定义了用户自定义的流量标签, 例如asm-labels-test,其取值范围为test1、test2、test3等。为支持基于标签的路由能力, 还需要创建相应的目标规则DestinationRule和虚拟服务VirtualService,才能将流量根据标签路由到对应的工作负载。

通过流量标签CRD(TrafficLabel) 定义了用户自定义的流量标签, 例如asm-labels-test,其取值范围为test1、test2、test3等。为支持基于标签的路由能力, 还需要创建相应的目标规则DestinationRule和虚拟服务VirtualService,才能将流量根据标签路由到对应的工作负载。

定义目标规则和虚拟服务

  1. 保存以下内容为文件dr-productpage.yaml。使用以下内容将productpage分为test1 、test2 、test3等子集。

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
    name: dr-productpage
    spec:
    host: productpage
    subsets:
    - name: test1
     labels:
       version: test1
    - name: test2
     labels:
       version: test2
    - name: test3
     labels:
       version: test3
    ...
    - name: testn
     labels:
       version: testn
    - name: base
     labels:
       version: base
    
  2. 执行以下命令,创建目标规则DestinationRule。

kubectl apply -f dr-productpage.yaml
  1. 保存以下内容为文件vs-productpage.yaml。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-productpage
spec:
  hosts:
    - productpage
  http:
  - match:
    - headers:
        asm-labels-test:
         exact: test1
    route:
    - destination:
        host: productpage
        subset: test1
  - match:
    - headers:
        asm-labels-test:
         exact: test2
    route:
    - destination:
        host: productpage
        subset: test2
  - match:
    - headers:
        asm-labels-test:
         exact: test3
    route:
    - destination:
        host: productpage
        subset: test3
  - route:
    - destination:
        host: productpage
        subset: base

其中, match.headers和route.destination.subset决定了将流量根据标签值路由到对应的工作负载,例如将带有名称为asm-labels-test且值为test1的标签的请求路由到test1子集下的工作负载。

具体参数解释如下:

参数 描述
match.headers.asm-labels-test 流量标签名称。
match.headers.exact 流量标签值。
route.destination.subset 路由目标对应的目标工作负载所在的子集(Subset)。
  1. 执行以下命令,创建虚拟服务VirtualService。
kubectl apply -f vs-productpage.yaml

简化虚拟服务的定义

若工作负载的版本有很多个的时候,虚拟服务VirtualService的配置将会变得比较复杂,您可以使用以下内容简化它的定义,并且对流量降级。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-productpage
spec:
  hosts:
    - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: $asm-labels-test

扩展虚拟服务定义支持流量降级

此外, ASM企业版支持了对目标服务不可用时提供了流量降级的功能。其中fallback参数定义在route参数下, 用于定义当上述标签路由的目标服务不可用(包括目标服务未定义、或对应的Pod不存在等情况)时回退到的备用服务。
具体字段定义说明如下:

参数 描述
target.host 路由的目标服务名称
target.subset 路由的目标服务的子集。

示例定义如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-productpage
spec:
  hosts:
    - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: $asm-labels-test
      fallback:
        target:
          host: productpage
          subset: base
相关文章
|
28天前
|
Kubernetes 测试技术 微服务
结合阿里云ASM泳道与Kruise Rollout进行全链路灰度发布
本文将介绍如何结合阿里云ASM泳道与Kruise Rollout进行低成本,自动化的全链路灰度发布。
|
2月前
|
Kubernetes 大数据 调度
使用Kmesh作为阿里云服务网格ASM Sidecarless模式数据面
阿里云服务网格ASM支持Sidecar和Sidecarless两种模式,本文介绍了如何在阿里云ACK集群中部署Kmesh作为Sidecarless数据面并连接ASM控制面。
|
2月前
|
Kubernetes 调度 容器
使用Kmesh作为阿里云服务网格ASM Sidecarless模式数据面
阿里云服务网格ASM支持Sidecar和Sidecarless两种模式,其中Sidecarless模式如Istio Ambient、ACMG和Kmesh等,可减少延迟和资源消耗。Kmesh基于eBPF技术,通过内核空间拦截流量,结合Waypoint Proxy处理L7流量,实现高效的服务治理。本文介绍了如何在阿里云ACK集群中部署Kmesh并连接ASM控制面,包括安装步骤、检查服务状态和流量调度示例。
|
6月前
|
人工智能 自然语言处理 安全
使用阿里云服务网格高效管理LLM流量:(一)流量路由
ASM支持通过LLMProvider和LLMRoute资源管理大型语言模型流量。LLMProvider负责注册LLM服务,LLMRoute负责设定流量规则,应用可灵活切换模型,满足不同场景需求。
|
8月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
364 2
|
3月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
8月前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
SQL Oracle 关系型数据库
Oracle ASM磁盘和磁盘组的常用SQL语句
Oracle ASM磁盘和磁盘组的常用SQL语句
290 0
|
文字识别 Oracle NoSQL
oracle 11g 单机asm配置
oracle 11g 单机asm配置
677 0
|
Oracle 关系型数据库
❤️Oracle ASM加磁盘及剔盘操作❤️
❤️Oracle ASM加磁盘及剔盘操作❤️
347 0