yaml has three basic rules -
1. Indentation - only 2 or 4 spaces
2. Maps - key-value pairs
3. list - a collection of things
a yaml file uses space as indentation, you can use 2 or 4 spaces but no tab
why does yaml forbid tab?
Tabs have been outlawed since they are treated differently by different editors and tools.
Maps
maps let you associate key-value pairs,
maps can be nested and in k8s you nest a lot of maps
lists
a yaml list is a sequence of objects,
you can virtually have any number of items in a list,
defined as items that start with a dash '-' indented from the parent
maps and list are the basic building blocks of any YAML file
any list or map's value can be a string, a number, a boolean, 'null', or another dictionary or list
in most cases, strings don't require quotes, But sometimes if you miss them BOOOMM...
The Norway problem
by default, the yes and no are converted into booleans
if you are setting the version of a library without quotes
YAML automatically converts it into a number
YAML automatically converts time into a seconds
ex - 4h 60m 60s + 30m x 60s = 16200s
Keys
Keys in JSON are always strings, in YAML - they can be any value, including boolean
having on as a key is a terrible idea
File
YAML file is terminated with three dots '...'
YAML definitions in the same manifest can be separated using three dashes '---'
label
in YAML you can define structures and assign them labels using the '&' operator
you can recall the structure with the '*' operator and the label name when you wish to reuse it
useful tools
Credit - Daniele Polencic