Рейтинг:0

kyverno предварительное условие для возможных пустых значений

флаг vn

Я изучаю, как использовать kyverno для создания некоторых политик, но столкнулся с несколькими проблемами, чтобы понять некоторое поведение:

Мой первый сценарий: я хочу заблокировать некоторый ресурс, который может иметь или не иметь набор spec.tier. Если он установлен и отличается от «Приложения», я хочу, чтобы он был заблокирован. Если он не установлен, он должен быть разрешен. Итак, я попробовал это:

версия API: kyverno.io/v1
вид: КластерПолици
метаданные:
  имя: уровень тестового блока
спецификация:
  validationFailureAction: применить
  фон: ложь
  правила:
  - имя: уровень тестового блока
    соответствовать:
      Любые:
      - Ресурсы:
          виды:
          - crd.antrea.io/v1alpha1/NetworkPolicy
    предпосылки:
      Любые:
      - ключ: "{{request.object.spec.tier || 'Приложение'}}"
        оператор: неравно
        значение: Приложение
    подтвердить:
      сообщение: «ANP с пространством имен Antrea можно использовать только на уровне: Приложение»
      Отрицать: {}

Политика работает должным образом, если в yaml установлен уровень.

Принимается, если есть уровень: Приложение

apiVersion: crd.antrea.io/v1alpha1
вид: NetworkPolicy
метаданные:
  имя: тест-НП     
спецификация:
    уровень: приложение

Отказывается, если есть уровень: что-нибудь еще

apiVersion: crd.antrea.io/v1alpha1
вид: NetworkPolicy
метаданные:
  имя: тест-НП     
спецификация:
    уровень: Чрезвычайная ситуация

Но также отказывается, если нет набора spec.tier, которого я не ожидал, поскольку по умолчанию, если он не существует, используется «Приложение» для каждого ключа: «{{request.object.spec.tier || 'Приложение'}}».

Что я должен изменить, чтобы заставить его работать, как ожидалось?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.