安装配置Traefik Ingress Controller的核心是打通RBAC、CRD、网络暴露和Ingress资源联动四环节:先部署CRD与RBAC权限,再通过DaemonSet或Deployment运行控制器,接着配置Ingress或IngressRoute路由规则,最后启用HTTPS与仪表盘等可观测性功能。
安装配置 Traefik Ingress Controller 的核心在于:先让控制器运行起来,再让它能自动发现服务并按规则路由流量。它不是简单部署一个 Pod 就完事,而是要打通 RBAC、CRD、网络暴露和 Ingress 资源联动四个关键环节。
Traefik 2.x+ 依赖自定义资源(如 IngressRoute、TLSStore),必须先部署 CRD;同时它需要权限读取集群内 Service、Endpoints、Ingress 等对象,RBAC 不可省略。
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/static-configuration/kubernetes-crd.yaml(注意版本匹配)导入 CRDServiceAccount(如 traefik-ingress-controller)并绑定 ClusterRole(含 get/list/watch 对 services、ingresses、endpoints 等资源的权限)ConfigMap 或 Helm values.yaml 定义静态配置:启用 providers.kubernetesIngress 和 providers.kubernetesCRD,指定 entryPoints.web.address(如 :80)生产环境推荐 DaemonSet,确保每个节点都运行一个 Traefik 实例,避免单点故障;测试或资源受限场景可用 Deployment + LoadBalancer Service。
hostPort: 80 并打标签(如 node-role.kubernetes.io/ingress=)限定调度范围Service.type=LoadBalancer
Traefik 同时支持 Kubernetes 原生 Ingress 资源和自研 IngressRoute。前者兼容性好,后者功能更全(如多段路径匹配、中间件链、TCP 路由)。
kubernetes.io/ingress.class: traefik,且确保 Helm 安装时启用了 kubernetes.ingressClass.enabled=true
TCPRouter/HTTPRouter,并关联 Service 和 Middleware(例如 StripPrefix 处理路径前缀)/api 报 404,往往因后端服务未处理该路径前缀——用 middlewares.strip-path 自动剥离再转发Traefik 内置 ACME 支持自动申请 Let’s Encrypt 证书,也支持手动挂载 Secret;仪表盘和指标则用于日常运维排查。
Ingress 或 IngressRoute 中声明 tls 字段,指向包含 tls.crt 和 tls.key 的 Secret;开启 ACME 需配置 certificatesResolvers.letsencrypt.acme.email 和存储位置traefik.yml 启用 api.insecure=true(仅测试)或配 api.dashboard=true + entryPoints.traefik + IngressRoute 暴露安全访问入口ServiceMonitor 抓取 metrics.prometheus.entryPoint=metrics 端口数据