Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Escrevendo políticas em TypeScript/JavaScript

O suporte a TypeScript/JavaScript para WebAssembly está evoluindo rapidamente. Esta página foi revisada pela última vez em novembro de 2025.

Conforme declarado no site oficial:

TypeScript estende o JavaScript adicionando tipos.

Ao entender o JavaScript, o TypeScript economiza seu tempo ao capturar erros e fornecer correções antes de você executar o código.

SUSE Security Admission Controller usa Javy (um projeto da Bytecode Alliance) para construir binários WebAssembly a partir de JavaScript e TypeScript.

Javy pega seu código JavaScript e o executa em um contexto WebAssembly.

Ele possui um motor QuickJS embutido compilado para WebAssembly que pode executar JavaScript.

O projeto fornece tanto uma CLI quanto um conjunto de APIs para incorporação e personalização do comportamento ao executar JavaScript em WebAssembly.

O projeto Admission Controller atualmente usa Javy por estas razões:

  • Motor JavaScript maduro (QuickJS) compilado para WebAssembly.

  • Suporte para interface WASI através de funções de host personalizadas.

  • Tamanhos de binário menores em comparação com outras soluções de JavaScript para WebAssembly.

  • Desenvolvimento e manutenção ativos pela Bytecode Alliance.

Limitações do Javy

Javy executa JavaScript em uma área de segurança WebAssembly com certas restrições:

  • Somente ambiente WASI: Acesso limitado a stdin/stdout/stderr e capacidades de host fornecidas explicitamente.

  • Sem APIs do Node.js: Módulos padrão do Node.js como fs, http ou crypto não estão disponíveis.

  • Biblioteca padrão limitada: Apenas recursos principais do JavaScript e APIs habilitadas explicitamente estão acessíveis.

  • Execução de thread única: Sem suporte para Web Workers ou multi-threading.

Apesar dessas limitações, Javy fornece capacidades suficientes para escrever políticas de validação Admission Controller eficazes através do sistema de capacidades do host.

Escrever para STDOUT quebra políticas - use STDERR para registro em vez disso.

Ferramentas

Escrever Admission Controller políticas requer:

  • Node.js: Tempo de execução JavaScript.

  • npm: Para gerenciamento de dependências.

  • TypeScript: Recomendado para segurança de tipos (opcional).

Certifique-se de que está usando Node.js 18 ou superior. Versões mais antigas podem não ser compatíveis com a cadeia de ferramentas de compilação.

Essas bibliotecas TypeScript/JavaScript são úteis ao escrever uma Admission Controller política:

  • Admission Controller JavaScript SDK: Fornece estruturas e funções que reduzem a quantidade de código necessária. Também fornece auxiliares de teste e acesso a todas as capacidades do host.

  • Kubernetes TypeScript types: Fornece definições TypeScript para todos os recursos do Kubernetes, permitindo o desenvolvimento de políticas com segurança de tipos.

O projeto Admission Controller fornece um projeto de política modelo em JavaScript/TypeScript que você pode usar para criar Admission Controller políticas.

Obtendo a cadeia de ferramentas

A maneira mais fácil de obter a cadeia de ferramentas é usando o Admission Controller JavaScript SDK, que inclui o plug-in de compilação Javy:

npm install kubewarden-policy-sdk

O binário do plug-in Javy é incluído automaticamente e você pode encontrá-lo em:

node_modules/kubewarden-policy-sdk/plugin/javy-plugin-kubewarden.wasm

Pré-requisitos do tutorial

Durante este tutorial você precisará dessas ferramentas em sua máquina de desenvolvimento:

  • Node.js: Versão 18 ou superior com npm para gerenciamento de dependências.

  • bats: Usado para escrever os testes e automatizar sua execução.

  • kwctl ≥ v1.30: Ferramenta CLI fornecida por Admission Controller para executar suas políticas fora do Kubernetes, entre outras ações. Está coberto na seção de teste de políticas da documentação.

  • javy ≥ 6.0.0: Ferramenta CLI para compilar código JavaScript em módulos WebAssembly.