istio envoy 理解

istio 流量主要分为三种:入向流量(ingress)、mesh 流量(envoy)和出向流量(egress)
和网关相关的是:入向流量(IngressGateway)和出向流量(EgreeGateway)
一般研究 IngressGateway,EgreeGateway 使用的较少

IngressGateway

以下 gw 的 yaml 表示:通过标签选中 ingressgateway,并监听 80 端口,请求域名为 bookinfo.bianmc.com 的 http 请求

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway // 这筛选的就是IngressGateway pod
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "bookinfo.bianmc.com"

IngressGateway这其实对应的就是Envoy Listener

VirtualService

以下 vs 的 yaml 表示:与 bookinfo-gateway 绑定,并监听来自该网关的请求域名为 bookinfo.bianmc.com 的 http 请求,如果端口号为80同时请求路径为 productpage,则将请求转发到名为 productpage 的 service 的9080端口上

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "bookinfo.bianmc.com"
  gateways:
  - bookinfo-gateway  // 指定gateways 转发规则,要与这个listener关联
  http:
  - match:
    - port: 80        // 默认,可以不写
      uri:
        exact: /productpage
    route:
    - destination:
        host: productpage
        port:
          number: 9080

VirtualService 对应的是Envoy中的路由 route 转发规则

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