簡體   English   中英

如何限制 IP 可以訪問 kubernetes 服務的地址?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM