traefik单独端口转发
2020-09-29 • 预计阅读时间 2 分钟
2020-09-29 • 预计阅读时间 2 分钟
traefik
支持两种的端口转发,一种是基于backend
的端口转发,如docker
或者k8s
这样的。另外一种是直接针对某个端口做转发负载均衡。这种在某些情况下也是需要的,如我遇到了个容器中安装的gitea
如何暴露ssh
端口的问题。这个其实有挺多的实现方式的,通过防火墙,nginx
这些。
之前都是通过nginx
的stream
来做的。这样的好处是配置文件都在一处了。换成traefik
之后,这个属于一个重要的指标了。还好也是支持的,只是官方的文档写的太绕了
为了实现这个需求,需要明白traefik
的配置是分为两种的,静态和动态。这类端口转发是放在静态配置中来实现的。动态配置文件需要在静态配置文件中指定一个文件夹。程序启动以后就会扫描该文件夹下面的配置,如果发生修改也能够动态的加载。
下面就是将/etc/traefik/config
下面的文件做为动态配置。
providers:
file:
directory: /etc/traefik/config
watch: true
然后在/etc/traefik/config
下创建一个tcp.yaml
的配置文件。在其中增加如下的内容
tcp:
routers:
Router-1:
entryPoints:
- "other"
rule: "HostSNI(`*`)"
service: "tcps1"
services:
tcps1:
loadBalancer:
servers:
- address: "10.0.0.2:x0xx"
- address: "10.0.0.2:x022"
这样就实现了TCP的端口转发、具体使用的端口是在entryPoints
里面定义,在动态配置里面指定使用那个就可以了。