|
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. |
Criando uma política
Como exemplo, você cria uma política de validação simples que processa solicitações de criação de Pods.
A política analisa o atributo metadata.name do Pod e rejeita Pods com nomes inválidos.
A lista de nomes inválidos deve ser configurável pelos usuários finais da política.
As configurações da política são algo como:
invalid_names:
- bad_name1
- bad_name2
A política deve aceitar a criação de um Pod como o seguinte:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
A política deve rejeitar a criação de um Pod como:
apiVersion: v1
kind: Pod
metadata:
name: bad_name1
spec:
containers:
- name: nginx
image: nginx:latest
Estruturando o novo projeto de política
Você pode criar um novo projeto de política usando cargo generate com o projeto de template.
Primeiro, instale cargo-generate. Isso requer openssl-devel.
cargo install cargo-generate
Agora estruture o projeto da seguinte forma:
cargo generate --git https://github.com/kubewarden/rust-policy-template \
--branch main \
--name demo
O comando produz uma saída como:
🔧 Creating project called `+demo+`...
✨ Done! New project created /<some-path-name>/demo
Isso cria o novo projeto de política no subdiretório demo.
|
Se você planeja usar a funcionalidade do registro de contêiner do GitHub na demonstração, você precisa habilitar suporte aprimorado a contêineres. |
qualidade
Você pode tentar:
cargo test
Isso testa a estrutura gerada. Se tudo estiver corretamente no lugar, você verá uma série de mensagens de compilação terminando com uma saída como:
running 4 tests
test settings::tests::validate_settings ... ok
test tests::accept_request_with_non_pod_resource ... ok
test tests::accept_pod_with_valid_name ... ok
test tests::reject_pod_with_invalid_name ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s