glunty

Kubernetes Manifest Validator (Basic)

Catch common k8s manifest mistakes. Local pre-check; not a full schema validator.

This is a basic structural pre-check, not a full Kubernetes schema validator. It catches common mistakes (missing apiVersion, missing kind, missing metadata.name, obvious shape errors) but does not verify against the live cluster's CRDs or the canonical OpenAPI schema. For full validation, use kubectl apply --dry-run=server or kubeval.

What this tool does

Scans a Kubernetes YAML manifest for the structural fields almost every kind requires: apiVersion, kind, and metadata.name. For specific common kinds (Pod, Deployment, Service, ConfigMap, Secret, Ingress, Job, CronJob, Namespace), it also checks for the kind-specific fields most manifests need. Findings are flagged as errors (manifest will not apply), warnings (likely-but-not-certain mistakes), or info (style notes). Validation is local; your manifest is not uploaded.

How to use it

Paste a single-document YAML manifest into the input. Press Check. The output lists each finding with a severity icon. This tool does not run a full schema check; it is a lint pass. For full validation against your cluster, run kubectl apply --dry-run=server -f manifest.yaml after this preflight. Press Try an example to see a Deployment manifest in the input.

Common use cases

  • Catching a missing apiVersion before the apply fails.
  • Spotting a Service with no selector or no ports.
  • Finding a Deployment whose selector.matchLabels does not match its template.metadata.labels.
  • Verifying a ConfigMap has at least one of data or binaryData.
  • Confirming an Ingress has at least one rule before deploying.

Common pitfalls

  • Multi-document YAML. This tool checks a single document. If your file has multiple manifests separated by ---, paste them one at a time.
  • Custom resources. CRDs (Argo, Cert-Manager, Istio, custom operators) are not checked beyond the apiVersion, kind, and metadata fields. Use the provider's own validator for those.
  • Indentation. YAML is whitespace-sensitive. The tool catches obvious mistakes but does not fully parse YAML; deeply mis-indented manifests may pass this check yet fail on apply. Always run a server-side dry-run before production.

Frequently asked questions

How does this differ from kubeval or kubectl --dry-run?
This tool runs in your browser without needing a cluster. It catches missing required fields, obvious shape errors, and a few common pitfalls. It does not validate against the live cluster CRDs or the canonical Kubernetes OpenAPI schema. kubectl apply --dry-run=server validates against the cluster you are targeting. kubeval and kubeconform validate against published Kubernetes JSON schemas. Use this tool as a quick sanity check; use --dry-run=server before applying for real.
What about CRDs like Argo Workflows, Cert-Manager, or Istio resources?
CRDs use schemas defined by their authors. This tool checks the universal fields (apiVersion, kind, metadata.name) but cannot validate operator-specific fields. For CRD validation, install the CRD into a cluster and use kubectl apply --dry-run=server, or use the operator-provided validator.
Why does my Service flag a "no selector" warning?
A Service without a selector is valid in two cases: type ExternalName (which uses spec.externalName instead) and headless services manually backed by Endpoints objects. The tool flags this as a warning so you can confirm the configuration is intentional rather than a missing selector you forgot to add.
Does this handle multi-document YAML separated by ---?
It detects the separator and warns, but only checks the first document. Paste manifests one at a time for full coverage. Most Kubernetes tooling treats a multi-document file as multiple independent applies, so checking each in isolation matches how the cluster will process them.
Can I use this on Helm chart templates?
No, not on the raw templates. Helm templates contain {{ }} expressions that are not valid YAML. Run helm template chart/ first to render the chart to plain YAML, then paste the rendered manifests one at a time. Same applies to Kustomize: run kustomize build first.
Why does it complain about tab characters?
YAML does not allow tabs for indentation; the spec requires spaces. Editors that auto-convert can introduce tabs silently. The error is structural and will fail any YAML parser, not just this tool. Convert tabs to spaces (typically 2 per level for Kubernetes manifests) and re-check.

Embed this tool

Free for any use; attribution appreciated. Paste this on your site:

The embed runs the same tool that lives at this URL. No tracking; no ads inside the embed. Resize height as needed for your layout.

Cite this tool

For academic, journalistic, or technical references. Pick a format:

Citations use 2026 as the publication year. Access date is left as a fillable placeholder where the citation style expects one.

Embedded tool from glunty.com