![](/img/trans.png)
[英]How to expose tcp service in Kubernetes only for certain ip addresses?
[英]How to limit IP Addresses that have access to kubernetes service?
有什么辦法可以限制從集群外部訪問 LoadBalancer 類型的 Kubernetes 服務?
我想使用 LoadBalancer 服務將我的數據庫的 pod 公開到 Internet,該服務只能用於我的外部 IP 地址。
我的 Kubernetes 集群在 GKE 上運行。
是的,您可以使用本機 Kubernetes Network Policy
在 Kubernetes 級別上實現這一點。 在那里,您可以通過為Ingress
類型指定策略來將 Ingress 流量限制到您的 Kubernetes 服務。 一個例子可能是:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
ports:
- protocol: TCP
port: 6379
更多信息可以在官方文檔中找到。
如果您已經想在負載均衡器級別阻止來自不需要的 IP 地址的流量,則必須定義防火牆規則並將它們應用於您的 GCP 負載均衡器。 有關 GCP 防火牆規則的更多信息也可以在文檔中找到。
您可以使用loadBalancerSourceRanges
來過濾負載平衡的流量,如此處所述。
下面是 Nginx Ingress 控制器前面的 Service 的簡單示例:
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: external
app.kubernetes.io/name: ingress-nginx
name: external-ingress-nginx-controller
namespace: kube-ingress
spec:
loadBalancerSourceRanges:
- <YOUR_IP_1>
- <YOUR_IP_2>
- <YOUR_IP_3>
ports:
- name: https
nodePort: 32293
port: 443
targetPort: https
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: external
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.