Kubernetes Ingress 控制器 Traefik2 中间件配置(二)

2.5 添加 IP 白名单

为提高安全性,一般情况下一些后台地址会设置 IP 访问白名单,只希望个别用户可以访问,例如 traefik 的 dashboard url,这个时候就可以使用 traefik 中的 IPWhiteList 中间件来完成。

  • 创建 Traefik Middleware 资源
# 定义 IP 访问白名单的中间件 IPWhiteList,指定可以访问的 IP 列表
shell> cat ip-while-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: ip-while-list-middleware
  namespace: kube-system
spec:
  ipWhiteList:
    sourceRange:
      - 127.0.0.1/32
      - 10.200.11.95
    ipStrategy:
      depth: 1
  • 修改 dashboard 的 IngressRoute,添加 IP 白名单中间件
shell> cat traefik-ui-ingress.yaml 
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard-route
  namespace: kube-system
spec:
  entryPoints:
  - web
  routes:
  - kind: Rule
    match: Host(`traefik.k8s.91donkey.com`) && PathPrefix(`/api`, `/dashboard`,`/`)
    services:
    - kind: TraefikService
      name: api@internal
    middlewares:
      - name: ip-while-list-middleware
  • 访问 URL 测试
shell> curl -XGET -I http://traefik.k8s.91donkey.com/dashboard/

2.6 熔断

Kubernetes Ingress 控制器 Traefik2 中间件配置(二)

服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止该服务的调用。

  • 熔断器有三种状态
    • Closed:关闭状态,所有请求都正常访问。
    • Open:打开状态,所有请求都会被降级。traefik 会对请求情况计数,当必定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。
    • Recovering:半开恢复状态,open状态不是永久的,打开后会进入休眠时间。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全关闭断路器,否则继续保持打开,再次进行休眠计时。

  • 支持的触发器规则
    • NetworkErrorRatio:网络错误率
    • ResponseCodeRatio:状态代码比率
    • LatencyAtQuantileMS:分位数的延迟(以毫秒为单位)

2.7 限流

随着服务请求量的不断提升,其平均响应时间也会迅速提升,为了保护后端服务、提高服务质量、避免过载,保证服务的SLA,需要控制单位时间的请求量。这就是限流为什么愈发重大的缘由。

  • 保护后端服务:限流可以协助保护后端服务免受过多的请求或恶意请求的影响。如果应用程序或服务突然接收到大量请求,超出了其处理能力,可能会导致服务不稳定甚至崩溃。通过限流,可以控制每个客户端或 IP 地址可以发送的请求数量,确保服务不会被不良流量淹没。
  • 提高服务质量:通过限制每个客户端的请求速率,可以确保每个客户端都能够获得合理的响应时间,而不会由于其他客户端的请求而受到影响。这有助于提高整体的服务质量,确保用户体验良好。
  • 防止滥用:有些恶意用户可能会尝试通过发送大量请求来滥用服务,例如尝试进行暴力破解、爬虫或其他不正当行为。通过限流,可以防止这种滥用行为,降低安全风险。
  • 节省资源:限流可以更有效地分配服务器资源。如果某个客户端不断发送大量请求,可以限制其请求速率,以确保其他客户端也能够获得适当的服务。这有助于节省服务器资源,降低成本。
  • 避免过载:限流还可以避免过载情况。当某个服务或资源处于高负载状态时,限流可以阻止更多的请求进入,以防止服务崩溃或性能下降。
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
竹竹本人OvO的头像 - 宋马
评论 共1条

请登录后发表评论