Eks Calico позволяет входить из AWS классического Эльба в стручок - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь настроить сетевые политики, чтобы разрешить только входящий трафик от классического балансировщика нагрузки aws к модулям.Ничто иное не должно быть в состоянии общаться со стручками, включая любые реплики стручков.Я настроил следующее, но это не работает.Есть идеи, что мне не хватает?Как только я это применю, проверки работоспособности на балансировщике нагрузки завершатся неудачно.

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

1 Ответ

0 голосов
/ 10 октября 2018

Я не думаю, что это возможно в AWS.

В этой сетевой политике вы ограничиваете входные данные модулями, помеченными a-b-c1-elb, но это не означает службу, это только гипотетический модуль с меткой name: a-b-c1-elb (это podSelector, а не serviceSelector)., что, к сожалению, не существует).

Сетевая политика позволяет сопоставлять трафик с селектором pod, селектором пространства имен или / и блоком IP-адресов.В вашем случае, единственный, кто может выполнить эту работу, это блок IP-адресов.Вы можете ограничить трафик IP-адресом балансировщика нагрузки, и это сделает свое дело.

Но в AWS у балансировщиков нагрузки есть эфемерные IP-адреса, которые меняются всякий раз, когда они хотят, поэтому невозможно ограничитьтрафик на балансировщик нагрузки.Максимум, что вы можете получить - ограничить трафик до CIDR подсети.

...