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