到目前为止,我和K8s-ingress
相处得很好,但我有一个问题。
ingress
是否可以基于IP路由请求?
我已经知道ingress基于a.com、b.com等主机进行路由……到每个服务,并基于路径/a-service/、/b-service/等URI进行路由到每个服务。
然而,我很好奇Ingress
可以通过IP路由?我想从我的办公室(特定ip(请求路由特定的服务进行测试。
这有道理吗?对此有什么想法吗?
如果这只是为了测试,我只会将IP列入白名单。你可以阅读关于nginx入口注释的文档
您可以通过
nginx.ingress.kubernetes.io/whitelist-source-range
注释指定允许的客户端IP源范围。该值是CIDR的逗号分隔列表,例如10.0.0.0/24,172.10.0.1
。
示例yaml可能如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: whitelist
annotations:
nginx.ingress.kubernetes.io/whitelist-source-range: "1.1.1.1/24"
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /
backend:
serviceName: echoheaders
servicePort: 80
此外,在Istio中(我没有尝试过(,在kindServiceRole
和ServiceRoleBinding
中也可以这样做,以指定详细的访问控制要求。为此,您将使用source.ip
属性。关于约束和属性
正如您所指出的,这不是主要Ingress抽象的一部分,但是许多Ingress控制器通过注释或辅助CRD提供了额外的功能。所以理论上它可以这样添加。不过,我不认为有这样的路由,所以从实际角度来看,可能还没有现成的。
正如coderanger在他的回答中所说,ingress默认情况下没有它。
我不确定基于IP的路由是否是继续进行的方式,因为在需要时,您将如何测试/命中Office IP的实际部署/服务?
我认为您可以添加一个检查来执行基于IP和标头的路由。例如:您可以传递一个标头'redirect-to-test: true'
。因此,如果您将其设置为false,您仍然可以访问生产服务。