Да, это возможно, но не сразу интуитивно. Если вы посмотрите на раздел ниже связанного вами чанка, это даст довольно хорошее объяснение (кажется, оно было добавлено после того, как вы задали свой вопрос). Документация по NetworkPolicy API здесь , как правило, также полезна.
По сути, если вы помещаете каждый селектор как два отдельных элемента в списке, как в примере, он использует логическое ИЛИ. Если вы поместите их как два элемента в один и тот же элемент массива в списке (без черты перед вторым элементом), как в примере ниже для AND, podSelector и namespaceSelector, это будет работать. Это может помочь увидеть их в конвертере yaml в json.
Вот входной блок из их политики, измененный на И условия
ingress:
- from:
- namespaceSelector:
matchLabels:
project: myproject
podSelector:
matchLabels:
role: frontend
Такая же логика применима к использованию правила ports
, если вы используете его вместе с операторами to
или from
. В примере вы заметите, что у них нет тире перед ports
по правилу входа. Если бы они поставили перед собой тире, то это ИЛИ условия входа и портов.
Вот некоторые ссылки на GitHub, когда они обсуждали, как реализовать комбинирование селекторов:
- Этот комментарий может дать немного больше информации. API уже поддерживает OR, поэтому в противном случае это нарушило бы некоторые функциональные возможности для людей с этим: https://github.com/kubernetes/kubernetes/issues/50451#issuecomment-336305625
- https://github.com/kubernetes/kubernetes/pull/60452