
Kubernetes : valider Deployment, Service et Ingress YAML en ligne
Deployment, Service, Ingress : validez la structure YAML avant `kubectl apply` — contrôle local dans le navigateur, sans cluster ni kubectl.
Valider du YAML Kubernetes avant `kubectl apply`
Une faute de frappe dans apiVersion, un Deployment sans spec.selector.matchLabels ou un Ingress sans pathType n'apparaît souvent qu'après le push, quand la CI, un collègue ou l'API server rejette le manifeste. FastMinify n'exécute pas kubectl, ne contacte pas de cluster et n'est pas kubeconform. Le validateur YAML Kubernetes applique des contrôles structurels dans le navigateur : la couche A (apiVersion, kind, metadata) plus des règles propres à chaque kind pour Deployment, Service, Ingress et d'autres. Associez-le au formateur de manifests Kubernetes pour un YAML de plusieurs documents lisible. Toute la famille d'outils se trouve sur le hub Kubernetes, voisin du hub DevOps pour Compose, Terraform et Dockerfile.
Erreurs fréquentes et enchaînement avant apply
Quelques erreurs reviennent sans cesse dans les manifests collés, la sortie de Helm et les extraits de tutoriels.
Un déploiement Kubernetes voyage rarement seul. Commencez par valider les manifests, puis passez le lint sur le build de l'image et sur l'IaC qui provisionne le cluster.
Les différences entre valider, formater, kubeconform et kubectl
La validation dans le navigateur, le formatage, les outils de schéma OpenAPI et les dry-runs sur un cluster répondent à des questions différentes. Les confondre donne une coche verte ici et une CI rouge ensuite.
Outil / couche
Ce que ça prouve
Une séquence simple repère la plupart des fautes de frappe avant tout contact avec un cluster.
Quand l'outil du navigateur suffit
Vous n'avez pas besoin d'un cluster ni d'un kubeconfig pour repérer trois erreurs structurelles dans un manifeste reçu par ticket.
Les limites de l'outil du navigateur et ce qu'il ne remplace pas
Les outils CLI et l'apiserver restent obligatoires dès que vous avez besoin d'une validation de schéma OpenAPI pour une version précise de Kubernetes, de schémas CRD ou de politiques d'admission webhook.
Le validateur ne lit que le YAML collé. Il ne résout pas les charts Helm et ne déplie pas les overlays Kustomize. Il ne vérifie pas non plus que le nom de Service référencé par un Ingress existe dans un autre document.
CLI et écosystème
kubeconform, kubectl et yamllint restent la norme en CI. FastMinify complète l'exploration et les usages ponctuels.
kubeconform
Contrôle des manifests contre les schémas OpenAPI de Kubernetes (version épinglée).
Avantages :
Inconvénients :
kubectl apply --dry-run=client
Dry-run côté client avec validation locale du schéma (dépend de la version de kubectl).
Avantages :
Inconvénients :
yamllint
Linter YAML générique pour l'indentation et le style.
Avantages :
Inconvénients :
Les manifests courants comme Deployment, Service et Ingress
Chaque manifeste est un mapping YAML avec apiVersion, kind et metadata (name ou generateName). FastMinify vérifie cet appariement. Par exemple, Deployment attend apps/v1, Service attend v1 et Ingress attend networking.k8s.io/v1. Les groupes d'API dépréciés comme extensions/v1beta1 déclenchent un avertissement, pas un blocage.
Un Deployment nécessite un spec.selector.matchLabels non vide, un tableau spec.template.spec.containers non vide, et chaque container doit avoir name et image. FastMinify vérifie aussi que les valeurs de spec.selector.matchLabels correspondent à spec.template.metadata.labels. C'est une erreur classique de copier-coller qui passe le lint YAML mais casse à l'exécution.
Avant
Après
Un Service doit déclarer un tableau spec.ports non vide, et chaque port nécessite port sous forme de nombre ou de chaîne IntOrString. Un Ingress en networking.k8s.io/v1 nécessite spec.rules avec http.paths. Chaque path exige path, pathType (Prefix, Exact ou ImplementationSpecific) et backend.service.name plus backend.service.port.number ou port.name.
Un enchaînement concret pour formater, valider et générer
Ouvrez valider Kubernetes, collez ou importez un fichier .yaml ou .yml (512 Kio au plus) et attendez le debounce (~300 ms). Le panneau de résultats liste les problèmes par niveau (erreur, avertissement, info), avec path, un docIndex facultatif pour les fichiers de plusieurs documents et une ligne quand elle existe. Un résultat Valide avec avertissements affiche quand même des problèmes : lisez les avertissements avant la fusion.
L'outil de formatage (formater Kubernetes) réécrit les manifests de plusieurs documents avec js-yaml et une indentation de 2 ou 4 espaces. Collez, importez ou chargez l'exemple, et le formatage se fait tout seul. Après une modification manuelle, utilisez le bouton Formater (⌘↵). Les commentaires YAML # sont perdus à l'aller-retour : copiez-les d'abord si vous en avez besoin.
Vous passez de networking.k8s.io/v1beta1 à v1. Le YAML s'analyse encore, mais chaque path nécessite un pathType explicite. Le validateur signale invalid_path_type avant que vous ne gaspilliez une étape de pipeline sur kubectl apply.
Conclusion
Valider la structure des manifests Kubernetes avant kubectl apply évite de gaspiller des minutes de CI sur des fautes de frappe que le navigateur peut repérer. Utilisez FastMinify comme filtre structurel rapide : formatez pour la lisibilité, puis validez le GVK et les règles par kind. Ajoutez kubeconform ou un dry-run sur un cluster quand la conformité au schéma compte. Poursuivez sur le hub Kubernetes pour les générateurs et les values Helm, et sur le hub DevOps pour Compose et Terraform.
Validez maintenant votre YAML Kubernetes
Articles connexes

HTTP/2 et HTTP/3 changent le trajet des fichiers, pas leur poids. Mesures de taille, de compilation et de bundling : ce que la minification apporte encore.

Convertissez un epoch Unix en date lisible et inversement, distinguez secondes et millisecondes, et évitez les pièges de fuseau, de JWT et de changement d’heure.

Lisez une expression cron champ par champ, voyez ses prochaines exécutions en UTC ou en heure locale et évitez les pièges de pas, de fuseau et de dialecte.