【发布时间】:2021-01-15 19:27:53
【问题描述】:
目前,我正在使用网络负载平衡器公开 k8s 服务。它创建了一个网络负载均衡器并将目标组设置为基于实例,一切正常。据我们所知 节点中的端口始终在 30000 - 32767 范围内。
不同的目标群体存在差异。基于实例的目标组用于保留客户端IP,其中基于IP不保留客户端IP。
现在安全组有问题,我想限制节点端口只能被负载均衡器的 CIDR 访问。由于它是基于实例的目标组,因此入站 IP 始终是客户端 IP。所以很难限制某些IP的访问。
所以我的计划是将目标组切换为基于“IP”,这样我就可以将访问限制为仅针对负载均衡器的 CIDR。
还有其他方法可以创建具有基于 IP 的目标类型的 NLB 负载均衡器吗?你能帮我提些建议吗?
apiVersion: v1
kind: Service
metadata:
name: nginx-router
annotations:
service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: "/healthz"
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.beta.kubernetes.io/aws-target-type: ip
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: [tes]
# service.beta.kubernetes.io/healthcheck-path: /healthz
spec:
selector:
app: nginx-router
externalTrafficPolicy: Local
ports:
- port: 80
targetPort: 80
protocol : TCP
name : http
- port : 443
targetPort: 443
protocol : TCP
name : https
type: LoadBalancer
【问题讨论】:
-
所以你希望你的服务只能通过 nginx-router 访问(我猜可能是一个入口控制器)?所以你不希望你的其他服务暴露一个节点端口?
-
是的,没错。目前,只有当我在节点的安全组中授予对 0.0.0.0/0 的端口访问权限时,它才有效。我想限制对端口的访问,因此只能从负载均衡器访问。
标签: amazon-web-services kubernetes kubernetes-helm kubectl kubernetes-ingress