我在阿里云中使用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解析为多个 handler 文件(每个文件3000 ip列表)因为kubernetes中存在资源大小限制)。最终,假设我要阻止来自美国的IP,我将有大约500个由25MB US-IP.txt生成的 handler 文件。现在,当我将这些资源应用于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 Ingress网关进行地理IP阻止吗? https://github.com/heylong6551/istio-issue中包含重现此问题的步骤。
谢谢。