我的设置是一个运行 Kubernetes 1.17 的裸机集群。我使用 Traefik 2(.3.2) 作为反向代理,并为我使用kube-keepalive-vip
[1] 的机器进行故障转移。
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-keepalived-vip-config
namespace: kube-system
data:
172.111.222.33: kube-system/traefik2-ingress-controller
因此,我的 traefik 服务是默认类型的集群 IP,并引用了该服务提供的外部 IP kube-keepalive-vip
:
---
apiVersion: v1
kind: Service
metadata:
name: traefik2-ingress-controller
namespace: kube-system
spec:
selector:
app: traefik2-ingress-controller
ports:
- protocol: TCP
name: web
port: 80
- protocol: TCP
name: webs
port: 443
externalIPs:
- 172.111.222.33
这按原样工作。现在我想限制我的一些应用程序只能从我的网络中的特定子网访问。由于我的请求由kube-keepalive-vip
and处理,因此我的请求中kube-proxy
的客户端 IP 不再是实际客户端之一。但据我所知,文档是在标题kube-proxy
中设置真实的 ip 。X-Forwarded-For
所以我的中间件看起来像这样:
internal-ip-whitelist:
ipWhiteList:
sourceRange:
- 10.0.0.0/8 # my subnet
- 60.120.180.240 # my public ip
ipStrategy:
depth: 2 # take second entry from X-Forwarded-For header
现在,对该中间件附加到的入口的每个请求都被拒绝。我检查了 Traefik 日志,发现请求包含一些X-Forwarded-*
标头,但没有X-Forwarded-For
:(
有没有人有这方面的经验,可以指出我的错误?我的 Kubernetes 设置可能有问题吗?kube-keepalive-vip
或者我的配置中缺少什么?
提前致谢!