🧾 ¿Qué es un archivo YAML?
YAML (YAML Ain’t Markup Language) es un formato de texto plano utilizado para definir estructuras de datos de forma legible para los humanos.
En Kubernetes, los archivos YAML se usan para describir recursos del clúster como Pods, Services, Deployments, ConfigMaps, Secrets, Volumes, etc.
🧠 ¿Para qué se usan en Kubernetes?
Se usan para declarar el estado deseado del sistema. Tú defines en un archivo YAML lo que quieres (por ejemplo, 3 réplicas de una app corriendo Nginx) y Kubernetes se encarga de crear y mantener ese estado.
📁 ¿Dónde se crean?
Puedes crear archivos YAML:
- En tu computador local (por ejemplo:
deployment.yaml
,service.yaml
) - Usando un editor de texto como VS Code, Notepad++, Vim, etc.
- Directamente desde línea de comandos con
kubectl create
y exportarlos conkubectl get <recurso> -o yaml
Ejemplo:
Creamos un pod de nginx como se explica a detalle en crear primer pod.
kubectl run mi-nginx --image=nginx
Luego
kubectl get pod nginx -o yaml > pod-nginx.yaml
Esto creara un archivo pod-nginx.yaml con la estructura del yaml de kubernetes, este archivo lo explicaremos a continuación.
✅ Precondiciones para realizar el ejemplo
- Realizar la instalación correcta de un entorno de trabajo para kubernetes, tengo una Guía completa de comandos Minikube
- Asegúrate de que Minikube está corriendo Abre PowerShell o CMD y ejecuta:
minikube start
- Revisa los comandos de kubectl
- Valida si estas en el contexto correcto del clustes de minikube, en Contexto en kubectl te explico como.
🧱 Estructura de un archivo YAML de Kubernetes
Un archivo YAML típico tiene esta estructura:
apiVersion: <versión del recurso>
kind: <tipo de recurso> # Pod, Deployment, Service, ConfigMap, etc.
metadata:
name: <nombre-del-recurso>
labels:
<clave>: <valor>
spec:
<especificación-del-recurso>
🔍 ¿Qué significa cada parte?
Campo | Explicación |
---|---|
apiVersion |
Versión de la API de Kubernetes. v1 para objetos básicos. |
kind |
Tipo de objeto. En este caso: Pod . |
metadata.name |
Nombre único del pod. |
labels |
Etiquetas para identificar y seleccionar este pod. |
spec |
Especificaciones del pod. |
containers |
Lista de contenedores dentro del pod (puede haber más de uno). |
image |
Imagen del contenedor (se descargará desde Docker Hub). |
containerPort |
Puerto que el contenedor expondrá internamente. |
🧩 Buenas prácticas con YAML
- Indentación: Muy importante. Usa siempre 2 espacios por nivel (nunca tabs).
- Divide por responsabilidades: Puedes tener un YAML por recurso (ej.
deployment.yaml
,service.yaml
) o todo junto con---
como separador. - Versiona tus YAMLs: Usa Git para llevar control de tus manifiestos.
- Usa comentarios: Puedes escribir comentarios con
#
.
💡 Tip: Comando para aplicar YAML
kubectl apply -f archivo.yaml
Puedes aplicar un solo archivo o un directorio con varios:
kubectl apply -f ./manifests/