Traefik
Kong
Istio
HAProxy
關(guān)于上述的組件目前并沒有詳細(xì)的對比,后續(xù)我們在對每個組件都有一定的了解和使用的基礎(chǔ)之上,可以給出一些詳細(xì)的對比信息。本篇內(nèi)容將主要介紹traefik組件的安裝部署以及會通過一個具體的應(yīng)用作演示。
2. traefik組件的安裝部署
2.1 通過helm chart部署traefik
helm traefik chart包中包含了部署traefik組件的所需的資源,我們可以通過借助該組件進(jìn)行快速部署traefik組件,以下是部署命令行信息:
cmd line
> helm install --name inner-traefik --namespace kube-system \\\\
--set image=registry.docker.hankercloud.com/ingress-controller/traefik \\\\
--set serviceType=NodePort \\\\
stable/traefik
部署完成后,執(zhí)行kubectl get pods -n kube-system命令,可以看到在kube-system的命名空間中已經(jīng)存在名為 inner-traefik 的Pod。
2.2 RBAC配置
在kubernetes 1.6版本中引入了RBAC(Role Based Access Control)機(jī)制來更好的管理資源和API的訪問。如果在集群中配置了RBAC,則需要授權(quán)Treafik使用Kubernetes的API,有兩種方式來進(jìn)行設(shè)置合適的策略:通過特定的命名空間進(jìn)行角色綁定(RoleBinding)以及全局角色綁定(ClusterRoleBinding)。現(xiàn)在簡單起見,我們直接使用ClusterRoleBinding,資源定義如下:
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: traefik-ingress-controller
rules:
- apiGroups:
-
resources:
- services
- endpoints
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: traefik-ingress-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: traefik-ingress-controller
subjects:
- kind: ServiceAccount
name: traefik-ingress-controller
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
接下來我們執(zhí)行如下命令創(chuàng)建資源并修改deployment的資源定義文件。
kubectl apply -f traefik-rbac.yml
kubectl edit deploy inner-traefik -n kube-system
執(zhí)行完上述的操作之后,我們可以進(jìn)行校驗(yàn)相關(guān)的資源已經(jīng)正常啟動。
kubectl logs $(kubectl get pods -n kube-system |grep traefik | awk \\\'{print $1}\\\') -n kube-system
2.3 負(fù)載均衡配置
由于我們使用的是Deployment部署的traefik組件,其Service Type為NodePort,通過 kubectl get svc -n kube-system|grep traefik,可以看到端口映射關(guān)系,接下來我們在阿里云申請一個負(fù)載均衡的設(shè)備,然后進(jìn)行相應(yīng)的配置之后就完成了這一步操作。
另外一種替代方式是使用DaemonSet的方式部署traefik組件,設(shè)置主機(jī)端口和Pod實(shí)例端口的映射關(guān)系,也可以完成這一任務(wù)。
3. 創(chuàng)建ingress資源并進(jìn)行調(diào)試
接下來我們在kubernetes集群中創(chuàng)建一個ingress資源,由于我們之前已經(jīng)在集群中部署了一個wordpress應(yīng)用,資源定義文件如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wordpress-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: blog.hankercloud.com
http:
paths:
- path: /
backend:
serviceName: wordpress-test-wordpress
servicePort: 80
完成上述的操作之后,我們在本地修改/etc/hosts文件,手動配置blog.hankercloud.com的域名解析記錄,在瀏覽器地址欄輸入 http://blog.hankercloud.com 就可以看到頁面了,到此我們完成了traefik組件的安裝部署及調(diào)試工作。
4. 參考文檔:
https://docs.traefik.io/v1.5/user-guide/kubernetes/
https://kubernetes.io/docs/concepts/services-networking/ingress/
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機(jī)的問題,請?jiān)L問西部數(shù)碼官網(wǎng):www.ps-sw.cn