istio 虚拟服务 yaml 解释

虚拟服务 virtualservice 可以类比 k8s service 管理 pod, vs 是管理 svc 的
vs 对 svc 定义了流量规则,将满足条件的流量转发到对应的服务后端

配置定义

hosts:流量发送的目标

在 k8s 中,hosts 一般是 servic 的短域名(建议填写完整的域名

reviews 这种短域名在 k8s 中完整的域名是 reviews.weather.svc.cluster.local
其中 weather 是 reviews 应用所在的命名空间

如果 vs 绑定网关后,hosts 需要添加匹配 gateway 的外部访问地址(IP 或域名)

gateways

配置格式为 /,如果省略 gateway_namespace 则默认匹配 vs 所在命名空间对应名字的 gateway

http:处理 http 流量

数组类型,但是顺序很重要。因为流量匹配是自上而下依次匹配,直到匹配成功根据 route 规则完成转发

match:匹配规则
headers:匹配请求中的头域

匹配模式分为以下三种:exact(准确值)、prefix(前缀)、regex(正则表达式)

支持通过 withoutHeaders 负向匹配请求头域,即当请求头域满足 withoutHeaders 中的条件是,认为没有匹配到(灰度发布惯用做法)

route

根据是否有 match 字段可以将 httproute 分为两种,其中没有 match 字段的 route 通常写在最后面,充当兜底路由

headers

可以修改一次 http 请求中 request 或 response 的值

  • request:在发送请求给目标地址时修改 request 的 header
  • response:在返回应答时修改 response 的 header
    使用 set(覆盖)、add(添加) 和 remove(删除) 来对 header 操作
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  gateways:
  - bookinfo.com
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v1
  - route:
    - destination:
        host: reviews
        subset: v2
      headers:
        response:
          add:
            Set-Cookie: version=v2

你可能感兴趣的:(Istio,istio,云原生)