第一次接触是在给k8s实验集群架设ELK时才知道这个东西的,第一印象就是它的哲学非常符合k8s的调调,之所以考虑将nginx迁移过来,主要的考虑还是服务发现。
下面是使用的感受和坑以及建议
- 它不够轻量,虽然是go编写的,实际使用内存在40MB左右,所以很抠的个人服务器要注意下;
- 它不是传统意义上的webserver,所以它不能像nginx一样代理fastcgi,通常还是要交给nginx来做,“纯”这个东西对有的人来说是好东西;
- 它的配置分为静态配置和动态配置,动态配置就是支持服务发现的部分,这里有意思的是比如有一个file,初始时是静态配置,中间你更改了,更改的部分就是动态的了,当然最好别这么干;
- 静态配置是互斥的,狗日的没人说,找了很久在v2 的一个issue中看到的,静态分为docker file cli ,不知道是哪个版本开始的,至少2.8中互斥;
- 配置最佳实践是,不变的,精简的,初始化导向的放在cli中,其他都用docker的label做动态配置;
- 别跟nginx比性能,虽然差的不多,但是不应该作为对比的存在;
- traefik的service中除了初始化的静态配置外应该包含:entrypoint,middleware,default route
- 可以设置
providers.docker.constraints
,这样只会监控需要路由的服务; - dashboard是个好东西,但是最好不要暴露,哪怕是用密码登录,最好的方式是是用openvpn访问,我怀疑traefik之所以吃内存也是这个dashboard的关系
- acme支持泛域名,我喜欢tls challenge,比较简洁吧,这里需要注意的是,因为免费服务,到期前如果脸黑反复失败,会造成let's encrypted 限流,导致无法更新证书