简介
Traefik 是一个现代的 HTTP 反向代理和负载均衡工具。以下是一些关于 Traefik 的关键信息:
-
轻量级:Traefik 是用 Go 语言编写的,非常轻量级,并且可以作为单个二进制文件运行。
-
动态配置:与传统的负载均衡器/反向代理解决方案不同,Traefik 可以动态地从多种来源获取配置,例如 Kubernetes, Docker, Rancher, Consul, Etcd, ZooKeeper, BoltDB 等。
-
Let's Encrypt 整合:Traefik 可以与 Let's Encrypt 无缝集成,自动为您的域名生成和续订 SSL/TLS 证书。
-
微服务友好:由于 Traefik 能够与许多现代的云原生工具集成,它非常适合微服务架构。
-
Web UI:Traefik 提供了一个内置的 Web UI,使您可以轻松查看您的路由、服务和中间件配置。
-
多协议支持:除了 HTTP/HTTPS 外,Traefik 还支持其他协议,如 TCP 和 UDP。
-
中间件:Traefik 支持各种中间件,这些中间件允许用户自定义请求和响应的行为,例如添加基本的身份验证、重定向、限速等。
由于其易于使用和与现代云工具的集成,Traefik 已经成为许多开发者和运维人员的首选反向代理和负载均衡工具。
安装配置
添加traefik仓库
# 将 Traefik Labs 图表存储库添加到 Helm:
helm repo add traefik https://traefik.github.io/charts
# 您可以通过运行以下命令来更新图表存储库:
helm repo update
拉取 package
# 创建 namespace:
kubectl create ns traefik
# 拉取 package
helm pull traefik/traefik
手动配置
配置 jaeger
traefik-values.yaml
tracing:
jaeger:
samplingServerURL: http://jaeger-agent-agent.jaeger.svc:5778/sampling
localAgentHostPort: jaeger-agent-agent.jaeger.svc:6831
安装
# 安装
helm install traefik traefik/traefik -f ./traefik-values.yaml
检查
service/traefik 的 EXTERNAL-IP 是
192.168.36.139
root@l2:/etc/kubernetes/plugin/metallb-system# kubectl get all -n traefik
NAME READY STATUS RESTARTS AGE
pod/traefik-67b6d65d5-skwq2 1/1 Running 0 20m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/traefik LoadBalancer 10.109.207.208 192.168.36.139 80:31200/TCP,443:31023/TCP 20m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/traefik 1/1 1 1 20m
NAME DESIRED CURRENT READY AGE
replicaset.apps/traefik-67b6d65d5 1 1 1 20m
安装 dashboard
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: dashboard
namespace: traefik
spec:
entryPoints:
- web
routes:
- match: Host(`traefik.kubernetes.jansora.com`)
kind: Rule
services:
- name: api@internal
kind: TraefikService
nginx 转发到公网
server {
listen 443 ssl http2;
server_name traefik.jansora.com;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/openresty/certs/lets-encrypt-jansora.com/jansora.com.crt;
ssl_certificate_key /etc/openresty/certs/lets-encrypt-jansora.com/jansora.com.key;
location / {
proxy_pass_header Server;
proxy_set_header Host traefik.kubernetes.jansora.com;
proxy_pass_header Server;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://192.168.36.139;
}
}