Kas*_*lek 7 amazon-web-services kubernetes traefik amazon-eks
我正在尝试在公共 AWS NLB 上设置一个仅对特定范围的 IP 可见的 pod。为此,我想我可以使用 EKS 的安全组策略。
如果我来自 IP,123.45.67.81我希望在 Traefik 日志中看到它作为我的 clientHost,然后在我的最终应用程序中看到相同的内容。相反,我看到 Traefik 的 IP 是我们的内部网络10.X.Y.Z。我设法通过添加以下内容来设置 NLB 以将客户端 IP 传递给 traefik:
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*",
Run Code Online (Sandbox Code Playgroud)
和
spec: {
externalTrafficPolicy: Local
}
Run Code Online (Sandbox Code Playgroud)
但我仍然看不到最终 pod 上的 IP。我在 traefik 的配置中添加了以下内容:
- "--entryPoints.web.forwardedHeaders.trustedIPs=10.X.0.0/16"
- "--entryPoints.web.forwardedHeaders.insecure"
- "--entryPoints.web.proxyProtocol.trustedIPs=10.X.0.0/16"
- "--entryPoints.web.proxyProtocol.insecure"
- "--entryPoints.websecure.forwardedHeaders.trustedIPs=10.X.0.0/16"
- "--entryPoints.websecure.forwardedHeaders.insecure"
- "--entryPoints.websecure.proxyProtocol.trustedIPs=10.X.0.0/16"
- "--entryPoints.websecure.proxyProtocol.insecure"
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何区别。我知道要使其正常工作,我需要使代理协议正常工作,但我不确定为什么不能!
您可能希望使用 traefik 和 eks 版本更新您的问题,因为有很多方式可能会与版本有关。
既然你这么说nlb,我就假设你已经设置了这么远.spec.metadata.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-type=nlb,这意味着你正在使用树内提供程序。
您是否已验证负载均衡器确实收到了配置service.beta.kubernetes.io/aws-load-balancer-proxy-protocol?转到ec2 > load balancers控制台区域并验证该字段是否按照您的预期设置。我敢打赌不是。
在我的 eks 1.19.x 集群中,此行为并不像宣传的那样工作。这似乎是一个活跃的问题,在负载均衡器提供商的主动重组中,这使得跟踪变得非常困难。据我所知,修复计划将在 k8s 1.20 中进行,不知道向后移植是否/何时可用。
在那之前,我至少可以确认注释似乎可以使用新创建的aws-load-balancer-controller 项目正常工作,但它们只支持nlb-ip,这也有其自身的问题(比如我的注册/注销时间超过 5 分钟)案例!引用It can take a few minutes for the registration process to complete and health checks to start.:)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |