Traefik是一种功能强大的Ingress Controller,它是基于Go语言开发的,并且支持自动发现和自我配置。Traefik支持多种路由和负载均衡算法,并且具有内置的TLS终止和Websocket支持等功能。在本文中,我们将介绍如何使用Traefik安装和配置Ingress资源。
安装Traefik
安装Traefik需要执行以下步骤:
添加Traefik Chart存储库
代码语言:javascript复制helm repo add traefik https://helm.traefik.io/traefik
更新存储库
代码语言:javascript复制helm repo update
创建Traefik命名空间
代码语言:javascript复制kubectl create namespace traefik
安装Traefik
代码语言:javascript复制helm install traefik traefik/traefik --namespace=traefik
这将安装Traefik,并创建一个名为traefik
的命名空间。
配置Ingress资源
完成安装Traefik之后,您需要创建Ingress资源以路由流量到相应的Service对象。要创建Ingress资源,请编写Ingress YAML文件,并使用kubectl命令创建它。
以下是一个示例Ingress YAML文件,它将HTTP和HTTPS流量路由到一个名为example-service
的Service对象:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
traefik.ingress.kubernetes.io/routing-certificate: example-tls
traefik.ingress.kubernetes.io/router.entrypoints: web, websecure
spec:
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
部分指定路由规则,包括TLS设置、主机和路径规则。在该示例中,我们将HTTP和HTTPS流量路由到example-service
Service对象,该Service对象绑定到80端口上。
在该示例中,我们还使用了两个名为traefik.ingress.kubernetes.io/routing-certificate
和traefik.ingress.kubernetes.io/router.entrypoints
的注释。前者指定了要使用的TLS证书,后者指定了要使用的入口点(即要使用的协议和端口)。
创建Ingress资源的命令如下所示:
代码语言:javascript复制kubectl apply -f example-ingress.yaml
测试Ingress资源
创建Ingress资源后,您可以测试Ingress是否正确地路由流量到Service对象。
首先,使用kubectl get ingress
命令获取Ingress的IP地址和路由路径:
kubectl get ingress
输出应该类似于以下内容:
代码语言:javascript复制NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> example.com 10.0.0.100 80 5m
在上述输出中,ADDRESS
列中的IP地址是Traefik Ingress的IP地址。您可以使用该IP地址在浏览器中测试路由是否正常。如果您使用TLS终止功能,则需要使用https://
协议访问Ingress的IP地址。
例如,在本示例中,使用http://10.0.0.100/test
访问Ingress IP地址将路由流量到example-service
Service对象的80端口。