Skip to content
Latchkey

Jsonnet vs CUE: Linguagens de Configuração Comparadas

Jsonnet é uma linguagem de templating para gerar configuração; CUE unifica dados, schema e validação em uma única linguagem. Jsonnet tende a produzir configuração; CUE tende a restringir e validá-la.

Ambos melhoram o YAML/JSON escrito à mão, mas com filosofias diferentes. Jsonnet enfatiza a geração via funções e composição; CUE enfatiza tipos e restrições, onde valores e schemas são a mesma coisa. Aqui está a comparação honesta.

JsonnetCUE
Força principalGerar configuração (templating)Validar + unificar configuração
Tipos/schemaDinâmico, sem schema embutidoTipos e restrições são de primeira classe
ModeloFunções, herança, mixinsUnificação de valores e restrições
ValidaçãoFerramentas externasEmbutida (restrições impostas)
Curva de aprendizadoModeradaModerada a íngreme (modelo de unificação)
EcossistemaTanka, bibliotecas kubeCrescendo, k8s + ferramentas de configuração

Gerar vs validar

Jsonnet é melhor quando você precisa gerar muita configuração similar a partir de abstrações: funções, imports e composição de objetos mantêm tudo DRY. CUE é melhor quando a correção importa mais: você expressa um schema e os dados na mesma linguagem, e o CUE os unifica, de modo que configuração inválida simplesmente não avalia. Muitas equipes recorrem ao Jsonnet para produzir e ao CUE para proteger.

O modelo de unificação

A ideia central do CUE é a unificação: restrições e valores concretos se combinam, e o resultado precisa ser consistente ou falha. Isso proporciona validação forte e permite sobrepor defaults e políticas. É um modelo mental diferente do templating e leva tempo para internalizar, mas captura classes inteiras de erros de configuração cedo.

Em CI

Ambos rodam como um passo de CLI: Jsonnet renderiza manifests, CUE pode renderizar e validar. Adicionar um gate de validação com CUE (ou Jsonnet mais um validador separado) no CI evita que configuração malformada chegue a um cluster.

O veredito

Escolha Jsonnet quando sua principal necessidade é gerar configuração a partir de abstrações reutilizáveis; escolha CUE quando validação e imposição de schema são a prioridade. Eles são complementares, e alguns pipelines geram com um e validam com o outro.

Guias relacionados