GKE опровергнуть заявление с политикой сети + миткаль - PullRequest
0 голосов
/ 08 ноября 2019

Я использую управляемый кластер с Google Cloud, поэтому у него есть возможность включить NetworkPolicy, а в бэкэнде используется ситцевое зеркало. У меня проблема, похоже, что я могу использовать только версию API networking.k8s.io/v1.

Я пытаюсь создать политику, которая отключит любой внутренний выходной трафик из модуля и разрешит любой вход + выход в / из внешнегоnetwork.

С API Calico это будет выглядеть примерно так:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: policy-name
  namespace: namespace-name
spec:
  selector: label == value
  types:
  - Ingress
  - Egress
ingress:
  - action: Allow
    notProtocol: UDP
    destination:
      ports:
      - 53
  - action: Allow
    notProtocol: TCP
    destination:
      ports:
      - 53
  egress:
  - action: Deny
    protocol: UDP
    destination:
      ports:
      - 53
  - action: Deny
    protocol: TCP
    destination:
      ports:
      - 53

Или отрицательная версия следующей политики:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: policy-name
  namespace: namespace-name
spec:
  podSelector:
    matchLabels:
      label: value
  policyTypes:
  - Egress
  egress:
  - ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP
  - to:
    - namespaceSelector: {}

Итак, у меня есть 2 вопроса:1. возможно ли воспроизвести указанное выше правило с помощью networking.k8s.io/v1 API? 2. Можно ли как-то включить projectcalico.org/v3 API в управляемом кластере GKE?

1 Ответ

1 голос
/ 09 ноября 2019

Наконец-то через 2 дня проведу. Похоже, что для применения конфигов из API 'projectcalico.org/v3' вы должны сначала установить или развернуть в своем инструменте CLI кластера calicoctl. Затем вы можете применить свою политику с помощью calicoctl apply -f ./policy.yml или, если она развернута в кластере, с псевдонимом alias calicoctl="kubectl exec -i -n kube-system calicoctl /calicoctl -- " + cat ./policy.yml | calicoctl apply -f -.

. Ниже приведена рабочая политика, которая отключит выход в частную сеть и разрешит только общедоступные:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: policy-name
  namespace: namespace-name
spec:
  selector: label == value
  types:
  - Egress
  egress:
  - action: Allow
    protocol: UDP
    destination:
      ports: [53]
  - action: Allow
    protocol: TCP
    destination:
      ports: [53]
  - action: Deny
    destination:
      nets:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 192.168.0.0/16
  - action: Allow
...