Istio 与 Kubernetes Operator 的速率限制方案
核心观点与背景
- 介绍了 Istio 在 Kubernetes 环境下的全局速率限制需求,强调通过速率限制保护后端服务(如 App Server、Redis DB)免受过载攻击。
- 引用 Lyft 的全局速率限制方案作为参考,说明通过配置 Envoy Filter 和 ConfigMap 实现全局速率控制。
速率限制方案部署步骤
- 部署全局速率限制服务:参考 Lyft 方案,部署全局速率限制服务。
- 配置全局速率限制服务:
- 通过 ConfigMap 设置限制配置。
- 配置 Envoy Filter 使用全局速率限制服务。
- 使用 Istio RateLimit Operator:
关键数据与示例
运行效果
- 通过 Envoy Filter 和 RateLimit Operator 的协同,实现按
client-ip 和 destination-cluster 维度的速率限制。
- 示例流量:
- IP "192.0.2.0" 访问 "serviceA" 时,每秒最多 50 个请求。
- IP "192.0.2.20" 访问 "serviceB" 时,独立速率控制。
未来改进计划
- 支持
destination_cluster 以外的其他维度。
- 支持超过 2 个子动作的配置。
Demo 示例
- 使用
httpbin 应用进行测试。
- 通过 Helm 安装 Operator 和全局速率限制服务。
- 部署 Custom Resource 实现对 Host header "localhost" 的 1 请求/秒速率限制。
总结
该方案通过 Istio Operator 和 Envoy Filter 实现灵活的全局速率限制,支持按维度(如 IP、服务)动态配置,未来将扩展更多维度和动作支持。