Почему, по-видимому, неправильно сформированный ямл - тот, который подтверждает? - PullRequest
0 голосов
/ 05 апреля 2020

В первом yaml ниже второе предложение podSelector (под to) выглядит правильно отформатированным, с двумя пробелами для matchLabels, в соответствии со стандартами и остальной частью yaml.

Второй yaml идентичен, но matchLabels имеет четыре пробела. Этот формат следует документации Kubernetes. (вкладок нет.)

И все же первый yaml не проходит проверку kubectl с проверка ошибки "p. yaml ": ошибка при проверке данных: ValidationError (NetworkPolicy.spe c .egress [0] .to [0]): неизвестное поле" matchLabels "в io.k8s.api.networking.v1.NetworkPolicyPeer и второй проходит проверку .

Это не проходит проверку:

 apiVersion: networking.k8s.io/v1
 kind: NetworkPolicy
 metadata:
   name: internal-policy
 spec:
   podSelector:
     matchLabels:
       name: internal
   policyTypes:
   - Egress
   egress:
   - to:
     - podSelector:
       matchLabels:
         name: mysql

Это проходит проверку:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: internal-policy
spec:
  podSelector:
    matchLabels:
      name: internal
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          name: mysql

Ответы [ 2 ]

3 голосов
/ 05 апреля 2020

Ну, очевидно, matchLabels должно быть ключом в значении отображения podSelector, следовательно, оно должно быть более отступом. Это:

- podSelector:
  matchLabels:

Размещает matchLabels на том же уровне отступа, что и podSelector, поскольку начальное значение - рассматривается как часть отступа в соответствии с YAML spe c. По сути, здесь определены два уровня отступа:

  • Уровень последовательности, начинающийся с -. Все последующие элементы последовательности должны иметь свои - на одном уровне.
  • Уровень отображения, который является значением последовательности, начиная с p. Все последующие ключи сопоставления должны начинаться на одном уровне.

Поэтому, если вы хотите, чтобы matchLabels был вложен в podSelector, вы должны сделать отступ больше:

- podSelector:
    matchLabels:
0 голосов
/ 05 апреля 2020

Документы не правы тогда. MatchLabels действительно является дочерним ключом ha sh под podSelector. Пожалуйста, откройте проблему в документации, чтобы мы могли ее исправить:)

...