traefik作为istio网关

背景

虽然现在的趋势是将网关和istio融合,但是我个人觉得第一这件事不一定哪年可以落地,第二我一直遵循各司其职的想法,网关就是网关、网格就是网格、可以相互解耦,有一天没有网格了照样可以有网关。

istio+traefik

这里说一下,我的traefik采用的是Kubernetes Gateway API,我之前的文章有写可以参考。

然后我在istio官网的blog中发现了一篇醍醐灌顶的文章,建议你也可以先看一下,不看也行,他的结论我觉得和我上面想的差不多,分开部署,区别就是istio自己实现gateway api所以他的gatewayclass是istio,但是我是用的traefik所以我的gayewayclass 就是traefik。他的网关也并没有做到通过istio的控制平面来管理,说白了和istio还是分开了,所以更加坚定了我前面的结论,解耦。
Getting started with the Kubernetes Gateway API

bookinfo案例

这里我就用bookinfo来说吧,首先你肯定要先部署他的bookinfo案例,这个网上太多了我就不说了,然后你需要在相同的命名空间部署一个gateway

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: Gateway
metadata:
  name: traefik-gateway
  namespace: istio-test
spec:
  gatewayClassName: traefik
  listeners:
    - name: web
      port: 8000
      protocol: HTTP

然后我们参考bookinfo的virtual service 写了一个httpRoute,你可以看一下原来的virtual service

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
  name: http-bookinfo
  namespace: istio-test

spec:
  parentRefs:
    - name: traefik-gateway

  hostnames:
    - test.bookinfo.cn

  rules:
    - matches:
        - path:
            type: Exact
            value: /productpage
        - path:
            type: PathPrefix
            value: /static
        - path:
            type: Exact
            value: /login
        - path:
            type: Exact
            value: /logout
        - path:
            type: PathPrefix
            value: /app/v1/products
      backendRefs:
        - name: productpage
          port: 9080
          weight: 1

成功部署后就可以从dashboard看到

在这里插入图片描述
那现在我访问一下顺便看看kiali
traefik作为istio网关_第1张图片
traefik作为istio网关_第2张图片
很nice

总结

其实我在参考官方blog前也在网上看了几个文章,说实话我没太懂,可能是比较菜,但是我从那几个文章里稍微等看到他们还是在网关那里加了一个sidecar,我觉得可能没什么必要,有可能我说的不对,未来Api gateway和istio融合了我也还是喜欢现在的模式,解耦。

你可能感兴趣的:(k8s,istio,kubernetes)