Kubernetes engineers are often jokingly called “YAML Engineers”. And for good reason—almost everything you do in Kubernetes involves writing or reading YAML.
In this post, we’ll cover the “Y” of Kubernetes: YAML.
What is YAML?
YAML (YAML Ain’t Markup Language) is a human-readable data serialization standard. It’s a superset of JSON, meaning every valid JSON file is also a valid YAML file.
Common Pitfalls
1. Indentation Hell
YAML relies on indentation (spaces, never tabs) to define structure. A single wrong space can break your deployment.
# BAD
spec:
containers:
- name: nginx
image: nginx # Wrong indentation!
2. The “No” Problem
In older YAML parsers, no was interpreted as false.
# Potentially ambiguous
enableFeature: no
# Safe
enableFeature: "no"
3. Numbers vs Strings
Port numbers and versions can be tricky.
# BAD
version: 1.10 # Parsed as number 1.1 (floating point)
# GOOD
version: "1.10" # Parsed as string "1.10"
Multi-Document Files
You can put multiple Kubernetes resources in a single file by separating them with ---.
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
Tools of the Trade
Don’t write YAML raw. Use tools to help you.
1. VS Code Extensions
Install the official Kubernetes extension by Microsoft. It provides:
- IntelliSense (auto-completion)
- Validation against schemas
- Hover documentation
2. Kubeval / Kubeconform
Validate your YAML against the official Kubernetes schemas before you apply it.
kubeconform deployment.yaml
3. YQ
yq is like jq but for YAML. It’s great for scripting edits.
# Change image tag
yq e '.spec.template.spec.containers[0].image = "nginx:latest"' -i deployment.yaml
Summary
YAML is simple to learn but hard to master.
- Always quote strings that look like numbers or booleans.
- Use 2 spaces for indentation.
- Use a linter or validator.
Series Conclusion
Congratulations! You’ve made it through the alphabet (well, most of it). We’ve covered everything from Authentication to Zero-Downtime Deployments.
Kubernetes is a vast ecosystem, and we’ve only scratched the surface. But with these building blocks, you are well on your way to mastering container orchestration.