Traefik mesh没有通过sidecar的形式进行流量拦截或者修改,那是怎么实现的呢?
它其实是借助于CoreDNS,它通过修改CoreDNS的少量配置,让用于允许使用Mesh端点而不是标准的Kubernetes端点,Mesh端点和用于服务并行运行,用户可以选择是否使用它。
安装
- 前提:
- Kubernetes 1.11+
- CoreDNS 1.3+
- Helm v3
Traefik mesh的安装很简单,使用Helm即可实现快速的安装。
(1)添加Helm仓库
- helm repo add traefik-mesh https://helm.traefik.io/mesh
- helm repo update
(2)下载Chart包
- helm pull traefik-mesh/traefik-mesh
(3)解压Chart包
- tar xf traefik-mesh-3.0.6.tgz
Traefik mesh会部署4个服务,它们分别是:
- controller:Mesh的控制器,负责代理节点的所有配置分析和配置
- proxy:Mesh的代理,负责处理每个节点的流量代理
- tracing:跟踪配置
- metrics:监控配置
(4)安装traefik mesh
- helm install traefik-mesh .
traefik mesh需要coredns的配合,主要改动部分如下:
- #### Begin Maesh Block
- maesh:53 {
- errors
- rewrite continue {
- name regex ([a-zA-Z0-9-_]*).([a-zv0-9-_]*).maesh default-{1}-6d61657368-{2}.default.svc.cluster.local
- answer name default-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*).default.svc.cluster.local {1}.{2}.maesh
- }
- kubernetes cluster.local in-addr.arpa ip6.arpa {
- pods insecure
- upstream
- fallthrough in-addr.arpa ip6.arpa
- }
- forward . /etc/resolv.conf
- cache 30
- loop
- reload
- loadbalance
- }
- #### End Maesh Block
- #### Begin Traefik Mesh Block
- traefik.mesh:53 {
- errors
- rewrite continue {
- name regex ([a-zA-Z0-9-_]*).([a-zv0-9-_]*).traefik.mesh default-{1}-6d61657368-{2}.default.svc.cluster.local
- answer name default-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*).default.svc.cluster.local {1}.{2}.traefik.mesh
- }
- kubernetes cluster.local in-addr.arpa ip6.arpa {
- pods insecure
- upstream
- fallthrough in-addr.arpa ip6.arpa
- }
- forward . /etc/resolv.conf
- cache 30
- loop
- reload
- loadbalance
- }
- #### End Traefik Mesh Block
如果在部署过程中,coredns报以下错误:
- plugin/forward: this plugin can only be used once per Server Block
请检查coredns的configMap配置,看DNS下是否有两个forward。
配置
Traefik mesh的配置分为静态配置和动态配置。