尝试使用Istio找到阻止从互联网连接到k8s服务的最佳方式。
Istio政策的最佳选择是什么?
混音器 - 拒绝或列表 试点 - 路由规则 - 例如注入中止故障(400)或目的地策略 - 例如电路中断(最大连接0 ???)
尝试了上述所有内容,但没有任何工作,其中很少一些配置不是很直观(并没有详细记录)。
欣赏是否附上工作示例
以下是Injecting HTTP fault policy的示例。
destination: "ratings.default.svc.cluster.local"
route:
- tags:
version:
httpFault:
abort:
percent: 100
httpStatus: 400
httpStatus: 400
首先,Istio要求"类型":
错误:Istio没有配置类型,类型是目标策略,入口规则,路由规则
手动添加类型后:
type: route-rule
destination: "ratings.default.svc.cluster.local"
route:
- tags:
version:
httpFault:
abort:
percent: 100
httpStatus: 400
对这种方法大喊大叫:
I0914 17:44:32.417839 1003 request.go:991]回复正文:405: 方法不允许错误:服务器不允许此方法 请求的资源
由于
答案 0 :(得分:2)
如果您只是想阻止服务的外部流量,那么路由规则(故障注入)不是正确的方法。你应该通过不将它暴露在你的入口中来阻止它。 https://istio.io/v-0.1/docs/tasks/ingress.html
也就是说,在尝试设置路由规则时遇到错误的原因是因为您的yaml格式错误。像这样的东西是istioctl coammand所期望的:
type: route-rule
name: ratings-block
spec:
destination: "ratings.default.svc.cluster.local"
route:
- tags:
version: v1
httpFault:
abort:
percent: 100
httpStatus: 400
请参阅此处的示例:https://istio.io/v-0.1/docs/tasks/request-routing.html
答案 1 :(得分:0)
最简单的方法应该是启用istio auth并且不要在配置中进入。
这样你获得了2层保护:
和
答案 2 :(得分:0)
发现Istio的路由规则仅在两个连接的端点(客户端pod和服务器pod)配备了Envoys时才适用。
这本身就应该进一步研究,因为它没有任何意义。
来自集群外部的流量确实需要由入口控制。
答案 3 :(得分:0)
Istio具有网格内/外的概念。网状网内的每个服务都有一个边车代理,它们的流量受路由规则的约束。来自网格外部的所有东西都需要通过Ingress。 Ingress本身就是一个网状服务(代理)。