|
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,httpoucryptonã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.