Полное игнорирование контекста Kubernetes: YAML имеет последовательности и сопоставления (точно так же, как JSON массивы и объекты). Везде, где у вас есть маркер -
, это элемент списка; везде есть пара key: value
, это отображение. Вы можете иметь одно внутри другого.
ports:
- protocol: TCP
port: 6379
# is equivalent to
ports: [{"protocol": "TCP", "port": 6379}]
metadata:
name: test-network-policy
namespace: default
# is equivalent to
metadata: {"name": "test-network-policy", "namespace": "default"}
metadata:
- name: test-network-policy
- namespace: default
# is equivalent to
metadata: [
{"name": "test-network-policy"},
{"namespace": "default"}
]
Различия между отображениями и последовательностями имеют значение, и если приложение ожидает отображение, но на самом деле получает последовательность отображений (сравните два metadata:
блоков) вы получите ошибку на уровне приложения.
Шаблон, который действительно появляется в API Kubernetes, но может немного сбить с толку, - это иметь список объектов с некоторым логическим «видом». Объем в пакете c - хороший пример. У каждого из них есть ключ, чтобы сказать, какого они типа, но вам разрешено иметь несколько томов одного типа, поэтому отображение не является правильной структурой.
volumes:
# This is a list of mappings
- name: logs
emptyDir: {}
- name: coreDumps
emptyDir: {}