Разрешить трафик, в котором метка от-pod равна метке--pod

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

Скажи, что есть:

Pod A:
 labels:
  meshId="d5ea1b48"

а также

Pod B:
 labels:
  meshId="d5ea1b48"

и больше стручков с одинаковой этикеткой meshId=d5ea1b48, Сетка представляет собой ячеистую сеть, в которой просто всем включенным модулям разрешено иметь трафик на одном порту.

Моя цель интерпретируется в yaml:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: example
spec:
  podSelector:
    matchLabels:
      meshId: %meshId of from-pod%
  ingress:
  - ports:
    - port 1234
    - protocol: TCP
  - from:
      - podSelector:
          matchLabels:
            meshId: %meshId of to-pod%

Так что, если я не ошибаюсь, этот конфиг говорит: я хочу запретить входящий трафик через порт 1234 для тех, у кого нет того же meshId,

Есть ли способ создать kubernetes NetworkPolicy раз и навсегда meshIds? Как бы такое решение выглядело в yaml?

Я не хочу создавать новую NetworkPolicy для каждого нового meshId потому что их будет масса, и я также думаю, что это повредит производительности кластерной сети, если существует более 50000 сетевых политик.

1 ответ

Невозможно обобщить селекторы меток так, как вы это выдвинули. Обратите внимание, что сетевые политики предназначены для усиления базы, так что только истинный трафик может входить и выходить.

Я также хотел бы указать вам на тот факт, что вам вообще понадобится дополнительная политика 50000. Это означает, что у вас плохая стратегия выбора для стручков. Думайте об изменении этого, а не наоборот. Вы почти там, чтобы начать это!

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1    
metadata:
 name: example
spec:
 podSelector:
  matchLabels:
   meshId: value1
 ingress:
 - ports:
  - port 1234
  - protocol: TCP
 - from:
  - podSelector:
      matchLabels:
        meshId: value1
Другие вопросы по тегам