Разрешить трафик, в котором метка от-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 раз и навсегда meshId
s? Как бы такое решение выглядело в 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