之前有说过,我用traefik做网关,无论是内外网请求都会经过网关。
但是我们有一部分API是只有内网会用,为了安全,我们要保证这些内网的API只有内网可以访问到。
但是由于之前的设置,这些API是匿名访问的,如果修改为需要权限,那么需要其他依赖于我们服务的team来做对应的修改,是由于一些原因,这条路走不通。
摆在我面前的就只有一条路,那就是安装两个traefik,一个对内,一个对外。安装两个traefik很容易,由于traefik安装采用的是DaemonSet的方式,所以两个traefik的访问端口必须不同
--entryPoints.traefik.address=:8080
比如internet(外网)的traefik的端口是8080,那么internal的traefik就可以是9090。
traefik安装请看我之前的文章–在 kubernetes 中安装 traefik2。
然后就可以啦? 当然没有那么容易,为了实现下面的效果,
对应的IngressRoute也同样需要修改
以前的IngressRoute如下
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: my-service-traefik-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`think123.com`) && PathPrefix(`/api/anon/health`, `/api/anon/article`)
kind: Rule
services:
-