|
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. |
Testes para autores de políticas
SUSE Security Admission Controller Políticas são programas regulares compilados como WebAssembly (Wasm). Assim como qualquer tipo de programa, uma boa cobertura de testes é importante.
Os autores de políticas podem usar seus ambientes de desenvolvimento favoritos. Você pode usar ferramentas familiares e frameworks de teste para verificar o desenvolvimento.
Eles têm suítes de testes usando testes padrão para seus ambientes de desenvolvimento.
As políticas usam GitHub Actions para seus pipelines de CI.
Testes de ponta a ponta
Você também pode escrever testes que executam contra o binário Wasm contendo sua política. Para fazer isso sem precisar implantar um cluster Kubernetes, você pode usar estas ferramentas:
Para usar kwctl run você precisa do seguinte:
-
O arquivo binário Wasm da política a ser executada. A Admission Controller política pode ser carregada de:
-
o sistema de arquivos local (
file://) -
um servidor HTTP(s) (
https://) -
um registro OCI (
registry://).
-
-
O objeto de solicitação de admissão para teste. Você a fornece via o argumento
--request-path, ou emstdindefinindo--request-pathcomo-. -
As configurações de política para runtime como um JSON inline via a flag
--settings-json. Ou um JSON, ou um arquivo YAML, carregado do sistema de arquivos via--settings-path.
Após o teste kwctl, imprime o objeto ValidationResponse na saída padrão.
É assim que você usa kwctl para testar o binário Wasm do ingress-policy mencionado anteriormente:
$ curl https://raw.githubusercontent.com/kubewarden/ingress-policy/v0.1.8/test_data/ingress-wildcard.json 2> /dev/null | \
kwctl run \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
--request-path - \
registry://ghcr.io/kubewarden/policies/ingress:v0.1.8 | jq
Você pode baixar binários pré-compilados de kwctl
aqui.
Usando bats você pode escrever um teste que executa este comando e procura as saídas esperadas:
Um teste bats
@test "all is good" {
run kwctl run \
--request-path test_data/ingress-wildcard.json \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
ingress-policy.wasm
# this prints the output when one the checks below fails
echo "output = ${output}"
# settings validation passed
[[ "$output" == *"valid: true"* ]]
# request accepted
[[ "$output" == *"allowed: true"* ]]
}
Você pode colocar o código em um arquivo, e2e.bats, por exemplo, e então invocar bats por:
$ bats e2e.bats
✓ all is good
1 tests, 0 failures
Esta seção da documentação tem mais sobre como escrever testes de ponta a ponta de suas políticas.