我们希望将我们的POD
公开给外部IP。如果我们使用AWS LB
,那么它将对公众可用。是否有其他解决方案?
以下是我迄今为止所做的:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "testing"
},
"spec": {
"ports": [{
"port": 80,
"targetPort": 8080
}],
"selector": {
"app": "testing"
},
"type": "LoadBalancer"
}
}
我们喜欢只将其暴露于单个IP或一系列外部IP。
您可以使用.spec.loadBalancerSourceRanges
密钥,如文档中所述:
此字段采用IP CIDR范围的列表,Kubernetes将使用这些范围来配置防火墙例外。此功能目前在Google计算引擎、Google Kubernetes引擎、AWS Elastic Kubernete服务、Azure Kubernets服务和IBM Cloud Kubernette服务上受支持
您可以使用kubernetes的ingress抽象,并使用nginx ingress控制器作为其实现。Nginx提供源IP范围的白名单。
AWS ALB入口控制器有一个注释alb.ingress.kubernetes.io/inbound-cidrs
,它确实提供了相同的功能。