Как я могу применить селектор подов и селектор пространства имен в одном и том же правиле входа?

Документация Kubernetes здесь показывает, как Сетевая политика может применяться к источнику, указанному либо селектором модулей, либо селектором пространства имен. Могу ли я указать источник, который одновременно выполняет оба ограничения.

например Может ли источник быть модулем с меткой «tier = web», который развернут в пространстве имен «ingress».

P.S. На данный момент я работаю, добавляя имя пространства имен в качестве меток пода.


person user6317694    schedule 05.09.2018    source источник


Ответы (1)


Да, это возможно, но не сразу интуитивно. Если вы посмотрите на ниже фрагмента, который вы связали, он дает довольно хорошее объяснение (похоже, оно было добавлено после того, как вы задали свой вопрос). Документация по API NetworkPolicy здесь тоже обычно бывает полезен.

По сути, если вы поместите каждый селектор как два отдельных элемента в список, как в примере, он будет использовать логическое ИЛИ. Если вы поместите их как два элемента в один и тот же элемент массива в списке (без тире перед вторым элементом), как в приведенном ниже примере, для И podSelector и namespaceSelector, он будет работать. Это может помочь увидеть их в конвертере yaml в json.

Вот фрагмент их политики, измененный на условия И

      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              project: myproject
          podSelector:
            matchLabels:
              role: frontend

Такая же логика применима к использованию правила ports, если вы используете его вместе с операторами to или from. В этом примере вы заметите, что у них нет тире перед ports в соответствии с правилом входа. Если бы они поставили черту впереди, это ИЛИ бы условия входа и портов.

Вот несколько ссылок на GitHub, когда они обсуждали, как реализовать комбинирующие селекторы:

  1. Этот комментарий может дать немного больше информации. API уже поддерживает операционную систему, поэтому в противном случае некоторые функции были бы нарушены для людей, у которых это реализовано: https://github.com/kubernetes/kubernetes/issues/50451#issuecomment-336305625
  2. https://github.com/kubernetes/kubernetes/pull/60452
person arg0nik_    schedule 27.10.2018