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.

Essas Admission Controller políticas são exemplos escritos em Rust e Go:

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:

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

  • kwctl: a ferramenta CLI padrão do Admission Controller que ajuda você com operações relacionadas a políticas; baixar, inspecionar, anotar, enviar e executar.

Para usar kwctl run você precisa do seguinte:

  1. 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://).

  2. O objeto de solicitação de admissão para teste. Você a fornece via o argumento --request-path, ou em stdin definindo --request-path como -.

  3. 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.