云原生之初探 traefik

有参考 https://mp.weixin.qq.com/s/qeWMHk43Taj6I2EAJrnGpA

简介

Traefik 是一个现代的 HTTP 反向代理和负载均衡工具。以下是一些关于 Traefik 的关键信息:

  1. 轻量级:Traefik 是用 Go 语言编写的,非常轻量级,并且可以作为单个二进制文件运行。

  2. 动态配置:与传统的负载均衡器/反向代理解决方案不同,Traefik 可以动态地从多种来源获取配置,例如 Kubernetes, Docker, Rancher, Consul, Etcd, ZooKeeper, BoltDB 等。

  3. Let's Encrypt 整合:Traefik 可以与 Let's Encrypt 无缝集成,自动为您的域名生成和续订 SSL/TLS 证书。

  4. 微服务友好:由于 Traefik 能够与许多现代的云原生工具集成,它非常适合微服务架构。

  5. Web UI:Traefik 提供了一个内置的 Web UI,使您可以轻松查看您的路由、服务和中间件配置。

  6. 多协议支持:除了 HTTP/HTTPS 外,Traefik 还支持其他协议,如 TCP 和 UDP。

  7. 中间件: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;

    }
}

评论栏