0

我正在尝试设置网络策略以仅允许从 aws 经典负载均衡器到 Pod 的入站流量。没有其他东西可以与包含任何 pod 副本的 pod 通信。我已经配置了以下但它不起作用。有什么我想念的想法吗?一旦我应用它,负载均衡器上的健康检查就会失败。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: a-b-c1
  labels:
    app: a-b-c1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: a-b-c1
  template:
    metadata:
      labels:
        app: a-b-c1
    spec:
      containers:
      - name: a-b-c1
        image: image:latest
        ports:
        - name: http-server1
          containerPort: 80
        resources:
          requests:
            cpu: 0.5
---
kind: Service
apiVersion: v1
metadata:
  name: a-b-c-elb1
  labels:
    app: a-b-c1
    name: a-b-c1-elb
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "environment=eks"
spec:
  ports: 
    - port: 80
      targetPort: http-server1
  selector:
    app: a-b-c1
  type: LoadBalancer
  loadBalancerSourceRanges:
  - 10.0.0.0/8
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-from-elb
spec:
  podSelector:
    matchLabels:
      app: a-b-c1
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          name: a-b-c1-elb
4

1 回答 1

0

我认为这在 AWS 中是不可能的。

在此网络策略中,您将入口限制为标有a-b-c1-elb的 pod,但这并不代表服务,这仅代表带有标签的假设 pod name: a-b-c1-elb(它是 podSelector 而不是 serviceSelector,遗憾的是不存在)。

网络策略允许将流量与 pod 选择器、命名空间选择器或/和 IP 块进行匹配。在您的情况下,唯一可以完成这项工作的是 IP 块。您可以将流量限制在负载均衡器的 IP 上,这样就可以了。

但是,在 AWS 中,负载均衡器具有临时 IP,可以随时更改,因此无法限制负载均衡器的流量。您最多可以将流量限制到子网的 CIDR。

于 2018-10-10T15:41:36.700 回答