|
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. |
|
Esta é uma documentação não divulgada para Admission Controller 1.34-dev. |
Escrevendo políticas em Go
|
O suporte do Go para WebAssembly está evoluindo rapidamente. Esta página foi revisada pela última vez em dezembro de 2023. |
O compilador oficial do Go pode produzir binários WebAssembly, para execução fora de um navegador, desde a versão v1.21.
Há outro compilador Go que pode construir binários WebAssembly utilizáveis por SUSE Security Admission Controller. Este projeto de compilador é TinyGo:
TinyGo traz a linguagem de programação Go para sistemas embarcados e para a web moderna, criando um novo compilador baseado em LLVM.
Você pode compilar e executar programas TinyGo em mais de 94 placas de microcontroladores diferentes, como o BBC micro:bit e o Arduino Uno.
TinyGo também pode produzir código WebAssembly (Wasm) que é muito compacto em tamanho. Você pode compilar programas para navegadores da web, bem como para ambientes de servidor e computação distribuída que suportam a família de interfaces WebAssembly System Interface (WASI).
O projeto Admission Controller atualmente sugere o uso do TinyGo por duas razões:
-
os binários são menores
-
suporte para waPC pela capacidade de exportar funções para o runtime
Limitações do TinyGo
O TinyGo ainda não suporta todos os recursos do Go, veja a página de suporte à linguagem TinyGo para ver o status atual do projeto.
Atualmente, sua maior limitação é a falta de um pacote reflect totalmente suportado.
Isso significa que os tipos oficiais de API Go do Kubernetes (por exemplo: k8s.io/api/core/v1) não compilam.
Admission Controller políticas precisam processar dados JSON, como configurações de políticas e a solicitação recebida pelo Kubernetes.
Apesar das limitações atuais do TinyGo, ainda é fácil escrever Admission Controller políticas de validação com ele.
Ferramentas
Escrever Admission Controller políticas requer uma versão do TinyGo superior a v0.28.1.
No entanto, use a versão mais recente para obter os melhores resultados.
|
Usar versões mais antigas do TinyGo resulta em erros de tempo de execução devido ao suporte limitado para reflexão em Go. |
Essas bibliotecas Go são úteis ao escrever uma Admission Controller política:
-
Admission Controller Go SDK: Fornece estruturas e funções que reduzem a quantidade de código necessário. Também fornece auxiliares para testes.
-
tipos Go do Kubernetes: Os tipos Go oficiais do Kubernetes não podem ser usados com o TinyGo. Este módulo fornece todos os Tipos do Kubernetes de uma maneira amigável ao TinyGo.
-
gjson: Isso fornece uma linguagem de consulta para navegação rápida de documentos JSON e recuperação de dados. Esta biblioteca não usa o pacote
encoding/jsonfornecido pelostdlibdo Go, portanto, é utilizável com o TinyGo. -
mapset: Fornece uma implementação em Go da estrutura de dados Set. Esta biblioteca reduz a quantidade de código a ser escrito, pois operações como Set
union,intersection,differencesão operações comuns em políticas Admission Controller.
Por fim, o Admission Controller projeto fornece um projeto de política Go template que você pode usar para criar políticas Go Admission Controller.
Obtendo dependências do TinyGo
A maneira mais fácil de obter o TinyGo é usando as imagens de contêiner upstream. As versões oficiais estão aqui, enquanto as compilações da branch de desenvolvimento são automaticamente enviadas aqui.
Se necessário, experimente a página de introdução ao TinyGo para mais informações.
Pré-requisitos do tutorial
Durante este tutorial, você precisará dessas ferramentas em sua máquina de desenvolvimento:
-
docker ou outro mecanismo de contêiner: usado para construir a política WebAssembly. Você usará o compilador incluído na imagem de contêiner oficial do TinyGo.
-
bats: usado para escrever os testes e automatizar sua execução.
-
kwctl: Ferramenta CLI fornecida por Admission Controller para executar suas políticas fora do Kubernetes, entre outras ações. Está coberto na esta seção da documentação.