云原生之初探 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;
    
        }
    }
    

    评论栏