ObservKit / Herramientas / Validador de YAML & Kubernetes
Utilidad DevOps

Validador de YAML / Kubernetes

Detecta errores de sintaxis YAML, inspecciona recursos comunes de Kubernetes y revisa recomendaciones conservadoras para workloads.

● Tu YAML nunca sale de tu navegador
Validación localParser compatible con YAML 1.2 · reglas comunes de Kubernetes
Ejemplos
manifest.yamlTab inserta 2 espacios

Fallas de manifiestos de Kubernetes que esto detecta

La validación de sintaxis comprueba si el YAML puede analizarse: indentación, mappings, secuencias, valores escalares y varios documentos separados por ---. Un YAML válido no es automáticamente un manifiesto de Kubernetes válido, así que ObservKit también verifica apiVersion, kind, metadata.name, spec y campos seleccionados de los workloads, e informa los consejos sobre workloads por separado como recomendaciones.

Labels y selectors

El spec.selector de un Deployment debe coincidir con spec.template.metadata.labels, o la API lo rechaza; y en apps/v1 el selector es inmutable tras la creación, de modo que corregirlo después implica recrear el Deployment. Un Service cuyo selector no coincide con ninguna label de pod se acepta pero no tiene endpoints: el tráfico falla sin ningún error al aplicar.

kind: Service
spec:
  selector:
    app: checkout        # los pods tienen la label app: checkout-api
                         # → el Service no tiene endpoints

Probes

Un probe de liveness que falla reinicia el contenedor; un probe de readiness que falla saca al pod de los endpoints del Service sin reiniciarlo; un probe de startup retiene a los otros dos mientras arranca una aplicación lenta. Dos errores frecuentes: un liveness probe que verifica una dependencia como una base de datos, lo que reinicia todas las réplicas cuando la base de datos está caída, y un liveness probe que se dispara antes de que termine un arranque lento, lo que provoca un bucle de reinicios que un startup probe habría evitado.

Requests y limits de recursos

Los requests son lo que el scheduler reserva al ubicar un pod; los limits se aplican en tiempo de ejecución. Un contenedor que excede su límite de memoria es terminado por OOM (OOM-killed); uno que llega a su límite de CPU es limitado (throttled). Un pod sin requests ni limits recibe la clase de QoS BestEffort y es de los primeros en ser desalojado cuando el nodo está bajo presión.

resources:
  requests: { cpu: 250m, memory: 256Mi }
  limits:   { memory: 512Mi }

Errores que son YAML válido

  • Un elemento de lista con una indentación un nivel menos profunda se adjunta al padre equivocado, por ejemplo una entrada de env que termina fuera de su contenedor.
  • No se permiten tabulaciones para la indentación y hacen fallar el análisis.
  • Un tag de imagen sin fijar, como :latest, vuelve irreproducibles los despliegues; ObservKit lo marca como una recomendación.
Alcance de la validación

Esta versión no incluye el esquema OpenAPI completo de Kubernetes ni los CRDs, las políticas de admisión y el API discovery específicos de un clúster. Realiza un análisis real de YAML más reglas estructurales documentadas para los tipos de recurso comunes listados. Usa kubectl apply --dry-run=server contra el clúster de destino para obtener una validación autorizada del lado del servidor.

Fuentes

Última revisión: