traefik 是一个前端负载均衡器,对于微服务架构尤为是 kubernetes 等编排工具具备良好的支持;同 nginx 等相比,traefik 可以自动感知后端容器变化,从而实现自动服务发现。前端
traefix的架构以下:node
Traefix的部署使用nginx
部署环境:web
k8s-node1(master):192.168.232.130后端
k8s-node2(node): 192.168.232.131api
k8s-node2(node): 192.168.232.129tomcat
部署步骤:bash
一:建立ClusterRole以及ClusterRoleBinding。(在kubernets1.6以后启用了RBAC鉴权机制,所以需配置ClusterRole以及ClusterRoleBinding来对api-server的进行相应权限的鉴权)网络
二:部署traefix,这里使用Deployment方式,定义2个副本,使每一个node都运行traefix服务。架构
这里建立了一个traefix的Deployment,设置了2个副本,使用hostport的方式在运行traefix的node上监听了80(traefix服务端口)和8050(traefix-ui界面)端口,而且两个node上都存在一个traefix的pod。
三:traefix ui界面。
部署完traefix以后,就可使用node上的8050端口来访问traefix的ui界面了,从两个node均可以访问,以下:
这里咱们能够发布一个traefix-web-ui的ingress,使咱们能够经过域名的方式来访问traefix ui界面:
咱们发布了一个host,名为traefix-ui.k8s,后端traefix-web-ui的service,能够看到关联到了pod地址192.168.232.129:8580和192.168.232.131:8580。
修改host,使咱们能够经过traefix-ui.k8s域名来访问traefix-ui:
四:发布其余web服务。
部署完traefix以后,就能够经过它来发布咱们本身的web应用了。这里我有两个简单的tomcat服务镜像test1和test2。访问他们,分别返回字符串tomcat_test1和tomcat_test2。首先,我先建立tomcat-test1和tomcat-test2的pod和service,其中8080为tomcat的http端口,8443为tomcat的https端口,本例中仅使用http端口测试。
建立test1的ingress,来发布tomcat-test1服务:
从traefix-ui界面上,能够看到已经有了一个tomcat.test1.k8s的域名规则。
修改hosts,使用tomcat.test1.k8s来访问tomcat-test1应用:
五:ingress配置之,同域名分路径代理不一样web应用。
不少使用咱们不想配置太多的域名来区别应用,使用同域名分路径的方式来区别应用就简洁方便不少。ingress也提供了相关的配置。
从上文能够知道,咱们有两个应用tomcat-test1和tomcat-test2。这里可配置域名tomcat.test.k8s,经过路径test一、test2来分别代理两个tomcat应用。其中,分路径配置需添加配置:traefik.frontend.rule.type: PathPrefixStrip
从describe信息和ui界面上能够看到,tomcat.test.k8s分别有了/test1/和/test2/的域名代理以及相对应的后端,能够修改hosts测试一下分路径是否生效:
后记
本章只是初步实现了traefix的http访问代理,若是开启traefix的https代理以及怎么对traefix进行更多的配置,将在后续的博文中来讨论。