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進行更多的配置,將在後續的博文中來討論。