将K8s POD暴露给单个/范围的外部IP

时间:2020-02-24 17:05:48

标签: amazon-web-services docker networking kubernetes

我们想将POD暴露给外部IP。如果我们使用AWS LB,它将对公众开放。有其他解决方案吗?

这是我到目前为止所做的:

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "testing"
  },
  "spec": {
    "ports": [{
      "port": 80,
      "targetPort": 8080
    }],
    "selector": {
      "app": "testing"
    },
    "type": "LoadBalancer"
  }
}

我们希望仅将其公开给单个IP或一系列外部IP。

2 个答案:

答案 0 :(得分:2)

您可以使用docs中记录的.spec.loadBalancerSourceRanges键:

此字段获取IP CIDR范围的列表,Kubernetes将使用该范围配置防火墙例外。 Google Compute Engine,Google Kubernetes Engine,AWS Elastic Kubernetes服务,Azure Kubernetes服务和IBM Cloud Kubernetes服务当前支持此功能

答案 1 :(得分:0)

您可以使用ingress的kubernetes抽象,并使用nginx入口控制器作为该实现的实现。Nginx提供whitelisting的源IP范围。

AWS ALB ingress controller的注释alb.ingress.kubernetes.io/inbound-cidrs确实提供了相同的功能。