侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Traefik最佳实践(一)应用部署

背锅小王子
2022-08-04 / 0 评论 / 0 点赞 / 227 阅读 / 701 字
温馨提示:
本文最后更新于 2022-11-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、应用简介

Traefik是一种现代 HTTP 反向代理和负载均衡器,可以轻松部署微服务。Traefik 与您现有的基础设施组件(Docker、Swarm mode、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS等)集成,并自动动态配置自身。将 Traefik 指向您的编排器应该是您需要的唯一配置步骤。

特征:

动态更新配置
支持多种负载均衡算法
通过利用Let’s Encrypt (通配符证书支持)为您的微服务提供 HTTPS
支持断路器,重试
一个 Web UI
支持Websocket、HTTP/2、GRPC 就绪
提供指标(Rest、Prometheus、Datadog、Statsd、InfluxDB)
保留访问日志(JSON、CLF)
快速
公开一个 Rest API
打包为单个二进制文件并作为官方docker 镜像提供

2、架构

图片-1659594110128

3、Traefik的核心概念及能力

traefik处理请求的架构图

图片-1659710462188

这其中涉及到几个重要的核心组件。

  • Providers
  • Entrypoints
  • Routers
  • Services
  • Middlewares
  • Providers

Providers是基础组件,Traefik的配置发现是通过它来实现的,它可以是协调器,容器引擎,云提供商或者键值存储。Traefik通过查询Providers的API来查询路由的相关信息,一旦检测到变化,就会动态的更新路由。

Entrypoints是Traefik的网络入口,它定义接收请求的接口,以及是否监听TCP或者UDP。

Routers主要用于分析请求,并负责将这些请求连接到对应的服务上去,在这个过程中,Routers还可以使用Middlewares来更新请求,比如在把请求发到服务之前添加一些Headers。

Services负责配置如何到达最终将处理传入请求的实际服务。

Middlewares用来修改请求或者根据请求来做出一些判断(authentication, rate limiting, headers, …),中间件被附件到路由上,是一种在请求发送到你的服务之前(或者在服务的响应发送到客户端之前)调整请求的一种方法。

4、部署

本文通过helm方式来部署

helm repo add traefik https://helm.traefik.io/traefik

helm pull traefik/traefik

tar xf traefik-10.24.0.tgz

cd traefik

修改value.yml

service:
  type: ClusterIP 

ports:
  traefik:
    port: 9000
    expose: true
  web:
    port: 8000
    hostPort: 80
    expose: true
  websecure:
    port: 8443
    hostPort: 443
    expose: true
    
persistence:
  enabled: true
  name: data
  accessMode: ReadWriteOnce
  size: 10Gi 
  storageClass: ""
  path: /data

部署traefik

kubectl create ns ingress
helm install traefik . -n ingress

5、访问dashboard

部署traefik的dashboard

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard
  namespace: kube-system
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`traefik.bgxwz.com`)
      services:
        - kind: TraefikService
          name: api@internal

dashboard的界面如下图:
图片-1659598242613

0

评论区