###定义一个虚拟服务,类似nginx的server标签###
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata: 
  ###虚拟服务的名称###
  name: demo
spec:
  hosts: ###需要解析的域名,也可以用*解析所有域名###
  #- "*"
  - "demo.jiagou.com"
  gateways: 
  ###如果需要外网访问,需要指定自己的gateway,如果是只是k8s内网访问,不需要指定###
  - jiagou-istio-gateway
  ###如果需要内网外网同时访问,需要指定一下mesh###
  - mesh
  
  http:
  - match:
    ###URI匹配规则###
    - uri:  
        prefix: /springrain-system-web  

    ###设置header,固定x-forwarded-proto为https,根据运维情况修改###
    headers:
      request:
        set:
          x-forwarded-proto: https 
        
    route:
    - destination:   
        ###k8s的服务名FQDN全路径,也用于匹配destinationroute.不建议使用简写,简写默认的是istio的namespace###
        host: springrain-system-web.default.svc.cluster.local
        ###对应DestinationRoute的subsets.name分流配置###
        subset: v1
        #port:
          ###在k8s的service中声明的端口,如果service只有一个端口,建议不写端口,默认就是这个端口###
          #number: 8080
          
      ###单独设置header###    
      #headers:
      #  request:
      #    set:
      #      x-forwarded-proto: https
                     
      ###权重100,如果只有一个destination,可以不设置###
      weight: 100
      
          
---
###落地规则###
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: springrain-system-web
spec:
  ###通过host关联VirtualService###
  host: springrain-system-web.default.svc.cluster.local
  ###默认的流量策略###
  #trafficPolicy:
  #  loadBalancer:
  #    simple: LEAST_CONN
  ###分流策略###
  subsets:
  - name: v1
    labels:
      version: v1
    ### v1 的流量策略###
    #trafficPolicy:
    #  loadBalancer:
    #    simple: ROUND_ROBIN

