You need to enable JavaScript to run this app.
导航
创建虚拟服务
最近更新时间:2024.12.09 10:00:01首次发布时间:2024.12.09 10:00:01
复制全文
我的收藏
有用
有用
无用
无用

虚拟服务用于制定服务的流量路由规则。每条路由规则都可以针对一定的请求匹配要求,将符合的请求转发到服务网格中的目标服务或目标服务的子版本。同时,虚拟服务提供给服务超时、服务重试、请求重写、请求重定向、流量镜像和故障注入等功能设置,提高服务的可用性。本文介绍创建虚拟服务的方法。

请求匹配说明

支持根据如下维度进行请求匹配,将流量转发到分流规则中指定的服务版本。

alt

  • 请求方法:允许符合指定方法(Method)的请求进行访问。
  • 协议: 允许符合指定协议(Protocol)类型的请求进行访问。对应 Istio 中的 Scheme。
  • 服务器地址:允许符合指定目标服务器地址(Domain)的请求进行访问。对应 Istio 中的 Authority。
  • 路径:允许符合指定路径(Path)来源的请求进行访问。对应 Istio 中的 URI。
  • 访问参数:允许包含了指定访问参数(QueryParams)的请求进行访问。
  • 首部字段:
    • Headers:允许包含了指定首部字段(Headers)的请求进行访问。
    • WithoutHeaders:不允许任何包含了指定禁用首部字段(WithoutHeaders)的请求进行访问。

前置条件

已创建目标规则,操作方法参见 创建目标规则

操作步骤

  1. 登录规则配置页面。

    1. 登录 服务网格控制台
    2. 在左侧导航栏,选择 服务治理 > 服务总览
    3. 在服务管理列表中单击目标服务的名称。
    4. 单击 规则配置
  2. 自定义配置 > Virtual Service 页面,单击 开始创建

  3. 配置虚拟服务参数。

    • 基本信息
      alt

      参数说明
      Virtual Service虚拟服务的名称,可编辑,相同命名空间下虚拟服务需保持唯一。
      Host虚拟服务流量的目标地址。在服务下创建的虚拟服务默认为服务的 Host。
      Gateway虚拟服务是否仅对指定 Gateway 资源生效。在服务下创建的虚拟服务默认选择为 mesh,即整个服务网格下均生效。
    • 规则配置
      alt

      说明

      支持在 简单模式高级模式 切换过程中,同步已配置的 请求匹配 参数信息。

      参数说明

      请求匹配

      设定请求的匹配规则,允许符合规则的请求访问服务,支持通过 And 和 Or 的方式连接多个匹配规则。

      • 简单模式
        • 请求方法 Method:允许访问的方法(Method)。
          • 全部 :支持所有的请求方法
          • GET :获取资源
          • POST:传输实体主体
          • PUT:传输文件
          • DELETE:删除文件
          • HEAD:获得首部字段
          • OPTIONS:询问支持的方法
          • CONNECT:要求用隧道协议连接代理
          • TRACE:追踪路径
          • LINK:建立和资源之间的联系
          • UNLINK:断开连接关系
        • 路径 Path:允许访问的路径。
          • 精准匹配:仅支持填写的路径访问服务。例如填写/feature, 仅支持 /feature 访问服务。
          • 前缀匹配:支持包含指定前缀的路径访问服务。例如填写的前缀为 /feature,那么 /feature/version1/feature/version2 都支持访问本服务。
          • 正则匹配:支持通过正则表达式筛选允许访问服务的路径。
        • 请求参数 QueryParams:允许包含了指定访问参数(QueryParams)的请求进行访问,访问参数不能为空,且不超过256个字符。
        • 首部 Headers:只允许包含了指定首部字段(Headers)的请求进行访问。
      • 高级模式
        • Path:允许访问的路径。
          • 精准匹配:仅支持填写的路径访问服务。例如填写/feature, 仅支持 /feature 访问服务。
          • 前缀匹配:支持包含指定前缀的路径访问服务。例如填写的前缀为 /feature,那么 /feature/version1/feature/version2 都支持访问本服务。
          • 正则匹配:支持通过正则表达式筛选允许访问服务的路径。
        • Scheme:允许访问的协议类型,支持 HTTP 和 HTTPS。
        • Method:允许访问的方法(Method)。
          • GET :获取资源
          • POST:传输实体主体
          • PUT:传输文件
          • DELETE:删除文件
          • HEAD:获得首部字段
          • OPTIONS:询问支持的方法
          • CONNECT:要求用隧道协议连接代理
          • TRACE:追踪路径
          • LINK:建立和资源之间的联系
          • UNLINE:断开连接关系
        • Domain:允许访问的目标服务器地址,地址不能为空,且不超过 256 个字符。
        • QueryParams:允许包含了指定访问参数(QueryParams)的请求进行访问,访问参数不能为空,且不超过 256 个字符。
        • Headers:只允许包含了指定首部字段(Headers)的请求进行访问。
        • WithoutHeaders:不允许任何包含了指定禁用首部字段(WithoutHeaders)的请求进行访问。

      分流规则

      选择目标规则中定义的服务版本(subset)以及每个版本对应的流量权重,通过调整流量权重可以实现灰度发布。

      • 服务:支持选择内部服务和外部服务,外部负载需要选择 HOST。
      • 端口:1 ~ 65535 的正整数。
      • 服务版本:服务实例的子集,在目标规则中定义。
      • 权重: 当前版本的流量权重,所有版本的权重之和需要为 100。
      超时设置超时时间,支持设置的时长单位包括毫秒(ms)、秒(s)、分钟(m)和小时(h)。

      故障注入

      在系统中人为的设置故障,以测试系统的稳定性和系统恢复的能力。可以配置延时或错误码的方式进行故障注入。

      • 延时:设定注入固定的延时时间和延时注入百分比。
      • 错误码:设置返回特定的 HTTP 错误码和错误注入百分比。

      重试

      重试用来解决网络抖动时通信失败的问题,提高系统的可用性。

      • 重试次数:每次请求的最大重试次数。
      • 重试超时时间:每次重试尝试超时时间。

      重定向

      重定向是当一个页面或一个 Web 应用被迁移到新的域名或 Path 后,保持原有链接可用的方式。

      • 重定向 Path:替换 URL 中的 Path 部分,重定向 Path 的配置会替换原请求中的完整 Path,而不是匹配条件上的 Path 部分。
      • 重定向 Domain:替换 URL 中的 Domain 部分,例如域名或 Host。
      • 重定向 Code:设置请求返回 Code,默认值 301。

      重写

      通过 HTTP 重写可以将请求转发给目标服务前修改 HTTP 请求中指定部分的内容,不同于重定向的是,HTTP 重写对用户不可见。

      • 重写 Path:重写 URL 中的 Path 部分,如果原来匹配条件是前缀匹配,则重写后只修改匹配到的前缀。
      • 重写 Domain::重写 URL 中的 Domain 部分,例如域名或 Host。

      流量镜像

      流量镜像又叫影子流量,通过复制一份请求并把它发送到镜像服务,从而实现流量的复制。

      • 服务版本:指定流量复制的目标版本,目前支持复制到当前服务的特定版本。
      • 百分比:流量复制的百分比。

      跨域

      当一个资源向该资源所在服务器的不同的域发起请求时,产生一个跨域的 HTTP 请求。出于安全考虑,浏览器会限制从脚本发起的跨域 HTTP 请求。

      • 来源(AllowedOrigin):指定允许的跨域请求的来源。支持添加多行。匹配方式:精准匹配(exact)、前缀匹配(prefix)、正则匹配(regex)。
      • 允许 Methods:指定允许的跨域请求方法。 选择框内容:GET、POST、PUT、DELETE、HEAD。
      • 允许 Headers:指定允许跨域请求的响应头。支持输入多行、以回车换行。
      • 暴露 Headers:指定允许用户从应用程序中访问的响应头。支持输入多行、以回车换行。
      • 缓存时间:指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间。
  4. 支持在页面顶部单击 添加规则,继续添加虚拟服务规则。

  5. 完成所有配置后,单击页面底部的 确定

操作结果

完成操作后可以在规则列表查看已创建的虚拟服务。

alt