kubernetes - 如何使用 istio 入口网关进行地理 ip 黑名单?
问题描述
我在阿里云使用 Kubernetes 服务,kubernetes 服务器版本是v1.14.8-aliyun.1而 istio 版本是1.2.7。
从这个 istio 官方教程(https://istio.io/docs/tasks/policy-enforcement/denial-and-list/)中,我学会了如何阻止来自 istio 入口网关的单个 ip。我在 istio-system 命名空间中应用了这些规则、实例和处理程序,并且我的公共 ip 被成功阻止。
然后我尝试使用类似的概念来进行地理 ip 阻塞。首先,我从MaxMind提供的 GeoLite2 数据库中获取国家 IP 列表,然后将这些 IP 解析为多个处理程序文件(每个文件 3000 个 ip 列表,因为 kubernetes 中存在资源大小限制)。最终假设我想阻止来自美国的 IP,我将从 25MB US-IP.txt 生成大约 500 个处理程序文件。现在当我将这些资源应用到 kubernetes 中时,当我观察Istio Mixer日志时,我可以看到以下错误:
Error receiving MCP response: rpc error: code = ResourceExhausted desc = grpc: received message larger than max (4623689 vs. 4194304)
我尝试将Istio Mixer MaxMessageSize设置为 30MB,但仍然出现此错误。看起来这 4MB 是 golang grpc 库的限制。
谁能给我一个想法,如何使用 istio 入口网关进行地理 IP 阻塞?重现此问题的步骤包含在https://github.com/heylong6551/istio-issue中。
提前致谢。
解决方案
推荐阅读
- azure - 如何获取应用服务环境 ID 以在 terraform 的应用服务计划中使用
- opencv - 使用 Python 3.8 的 OpenCv
- https - 在 RequestScoped bean 中禁用缓存并保留敏感的表单数据
- reactjs - 如何在画布上为 Path2D 对象设置动画
- flutter - setState 不适用于 Navigator.of(context)
- objective-c - 如何在 Objective-C 项目中领导安全区域?
- css - 使用css网格在移动视图中拉伸的图像
- javascript - express 中路由控制器模型的问题
- c# - 使用 WHERE NOT EXISTS (SELECT TOP 1 (id) FROM table WHERE aaa LIKE @aaa AND 不会返回没有 AND 的结果
- ios - 通过 UIStoryBoardSegue 发送位置名称变量未显示