【问题标题】:How to customize the Security Group Ingress Rules created by a Kubernetes LoadBalancer type service that uses AWS NLB for TCP services如何自定义由将 AWS NLB 用于 TCP 服务的 Kubernetes LoadBalancer 类型服务创建的安全组入口规则
【发布时间】:2019-11-22 21:55:10
【问题描述】:

我有一个 TCP 服务,它通过 AWS EKS 集群上的 Kubernetes 部署运行,并通过使用以下定义的 LoadBalancer 类型的服务向 Internet 公开

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
  name: tcpservice
spec:
  selector:
    app: tcpapp
  type: LoadBalancer
  ports:
  - port: 4453
    targetPort: 4453
    name: tcpport

由于负载均衡器类型为 NLB,因此必须在应用于节点本身的安全组上明确允许入口流量。安全组是这样创建的:

✔ ~$ aws ec2 describe-security-groups --group-ids sg-2645567125762c6e2 | jq '.SecurityGroups[0].IpPermissions[0]'
{
  "FromPort": 32163,
  "IpProtocol": "tcp",
  "IpRanges": [
    {
      "CidrIp": "10.20.0.0/20",
      "Description": "kubernetes.io/rule/nlb/health=afd5427b6058811ea989512627425a2e"
    },
    {
      "CidrIp": "0.0.0.0/0",
      "Description": "kubernetes.io/rule/nlb/client=afd5427b6058811ea989512627425a2e"
    }
  ],
  "Ipv6Ranges": [],
  "PrefixListIds": [],
  "ToPort": 32163,
  "UserIdGroupPairs": []
}

所以现在我需要将“0.0.0.0/0”中的 CidrIp 更改为不同的块。如何使用 kubernetes 清单来做到这一点?我查看了 NetworkPolicy 和 Calico 文档,但这控制的是 pod 而不是服务的流量。我可以使用 AWS API 或手动更改它,但这些更改会在重新部署服务时丢失。

【问题讨论】:

  • 确认一下,您正在尝试为不在 Kubernetes 中的东西制作任何内部负载均衡器?因为对于 k8s 中的其他东西,您根本不会使用负载均衡器类型。
  • 是的,客户端在 Kubernetes 和 AWS 之外。

标签: amazon-web-services kubernetes amazon-eks


【解决方案1】:

您需要在服务清单中添加 loadBalancerSourceRanges 参数。

来自文档:

为了限制哪些客户端 IP 可以访问网络负载均衡器,请指定 loadBalancerSourceRanges。

spec:
  loadBalancerSourceRanges:
  - "143.231.0.0/16"

https://v1-13.docs.kubernetes.io/docs/concepts/services-networking/service/

如何实现代码可以在这里找到:

https://github.com/kubernetes/kubernetes/blob/9d6ebf6c78f406d8639aae189901e47562418071/pkg/api/service/util.go

【讨论】:

  • 谢谢,这可以正常工作,但有一点需要注意:对现有服务的loadBalancerSourceRanges 的更改未应用,您需要删除并重新创建服务才能更改此属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2019-06-26
  • 2021-06-12
  • 1970-01-01
  • 2020-08-28
  • 2020-08-28
相关资源
最近更新 更多