Traefik是一種功能強(qiáng)大的Ingress Controller,它是基于Go語(yǔ)言開發(fā)的,并且支持自動(dòng)發(fā)現(xiàn)和自我配置。Traefik支持多種路由和負(fù)載均衡算法,并且具有內(nèi)置的TLS終止和Websocket支持等功能。在本文中,我們將介紹如何使用Traefik安裝和配置Ingress資源。
(資料圖片僅供參考)
安裝Traefik需要執(zhí)行以下步驟:
添加Traefik Chart存儲(chǔ)庫(kù)
helm repo add traefik https://helm.traefik.io/traefik更新存儲(chǔ)庫(kù)
helm repo update創(chuàng)建Traefik命名空間
kubectl create namespace traefik安裝Traefik
helm install traefik traefik/traefik --namespace=traefik這將安裝Traefik,并創(chuàng)建一個(gè)名為traefik的命名空間。
完成安裝Traefik之后,您需要?jiǎng)?chuàng)建Ingress資源以路由流量到相應(yīng)的Service對(duì)象。要?jiǎng)?chuàng)建Ingress資源,請(qǐng)編寫Ingress YAML文件,并使用kubectl命令創(chuàng)建它。
以下是一個(gè)示例Ingress YAML文件,它將HTTP和HTTPS流量路由到一個(gè)名為example-service的Service對(duì)象:
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: example-ingress annotations: traefik.ingress.kubernetes.io/routing-certificate: example-tls traefik.ingress.kubernetes.io/router.entrypoints: web, websecurespec: rules: - host: example.com http: paths: - path: /test pathType: Prefix backend: service: name: example-service port: name: http tls: - hosts: - example.com secretName: example-tls在上述示例中,metadata部分指定Ingress的名稱和注釋。spec部分指定路由規(guī)則,包括TLS設(shè)置、主機(jī)和路徑規(guī)則。在該示例中,我們將HTTP和HTTPS流量路由到example-serviceService對(duì)象,該Service對(duì)象綁定到80端口上。
在該示例中,我們還使用了兩個(gè)名為traefik.ingress.kubernetes.io/routing-certificate和traefik.ingress.kubernetes.io/router.entrypoints的注釋。前者指定了要使用的TLS證書,后者指定了要使用的入口點(diǎn)(即要使用的協(xié)議和端口)。
創(chuàng)建Ingress資源的命令如下所示:
kubectl apply -f example-ingress.yaml創(chuàng)建Ingress資源后,您可以測(cè)試Ingress是否正確地路由流量到Service對(duì)象。
首先,使用kubectl get ingress命令獲取Ingress的IP地址和路由路徑:
kubectl get ingress輸出應(yīng)該類似于以下內(nèi)容:
NAME CLASS HOSTS ADDRESS PORTS AGEexample-ingress example.com 10.0.0.100 80 5m 在上述輸出中,ADDRESS列中的IP地址是Traefik Ingress的IP地址。您可以使用該IP地址在瀏覽器中測(cè)試路由是否正常。如果您使用TLS終止功能,則需要使用https://協(xié)議訪問(wèn)Ingress的IP地址。
例如,在本示例中,使用http://10.0.0.100/test訪問(wèn)Ingress IP地址將路由流量到example-serviceService對(duì)象的80端口。