Aller au contenu principal

Jsonnet

Overview

Jsonnet est un langage de configuration basé sur JSON qui ajoute des fonctionnalités de programmation (variables, fonctions, imports, héritage) tout en générant du JSON valide. Il permet d'éviter la duplication de code de configuration, de créer des templates réutilisables, et de gérer des configurations complexes de manière plus maintenable.

Jsonnet compile en JSON standard, ce qui le rend compatible avec tous les systèmes qui consomment du JSON. L'outil est particulièrement populaire dans l'écosystème Kubernetes pour générer des manifests, et est utilisé par des projets comme Grafana et Prometheus.


Informations essentielles

PropriétéValeur
Site officielhttps://jsonnet.org/
LicenceApache 2.0
NationalitéInternational (projet open source)
TypeLangage de configuration avec templating, génération JSON
DéploiementCLI, CI/CD, intégration dans pipelines
DifficultéIntermédiaire
TechnologiesC++, JSON, génération de JSON

TL;DR

Jsonnet est idéal si tu travailles avec des configurations JSON volumineuses et répétitives et veux éviter la duplication. Il permet de créer des templates réutilisables, de gérer des configurations complexes, et de générer du JSON standard compatible avec tous les outils. L'outil convient particulièrement à la génération de manifests Kubernetes ou de configurations d'applications JSON. En contrepartie, la courbe d'apprentissage peut être significative, et l'ajout d'une étape de compilation peut complexifier les workflows. La documentation peut être limitée pour certains cas d'usage.


Compatibilité et intégrations

  • Format de sortie : JSON standard, compatible avec tous les systèmes
  • Kubernetes : populaire pour générer des manifests
  • Outils : Grafana, Prometheus utilisent Jsonnet
  • Intégration CI/CD : peut être intégré dans des pipelines de build
  • Écosystème : libraries Jsonnet disponibles

Avantages

  • Syntaxe proche de JSON, facile à apprendre
  • Variables, fonctions et imports pour éviter la duplication
  • Génère du JSON standard compatible avec tous les outils
  • Bon pour les configurations complexes et répétitives
  • Utilisé par des projets populaires (Grafana, Prometheus)
  • Support de l'héritage et de la composition

Limites

  • Courbe d'apprentissage pour maîtriser les fonctionnalités avancées
  • Nécessite une étape de compilation avant utilisation
  • Documentation peut être limitée pour certains cas d'usage
  • Moins connu que YAML ou HCL pour la configuration
  • Debugging peut être plus complexe qu'avec des formats natifs

Ressources