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.

Construa e execute uma política do Gatekeeper

Você pode construir e executar a política exatamente da mesma forma que uma política Rego direcionada ao Open Policy Agent. A estrutura do seu projeto é:

.
├── data
│   ├── default-ns.json
│   └── other-ns.json
└── policy.rego

1 directory, 3 files

Construa

Construa a política executando o comando opa:

$ opa build -t wasm -e policy/violation policy.rego

Isso constrói a política Rego, com:

  • target: wasm. Queremos construir a política para o alvo wasm.

  • entrypoint: policy/violation. O ponto de entrada é a regra violation dentro do pacote policy.

  • policy.rego: construa e inclua o arquivo policy.rego.

O comando anterior gera um arquivo bundle.tar.gz. Você pode extrair o módulo Wasm dele:

$ tar -xf bundle.tar.gz /policy.wasm

A árvore do projeto se parece com o seguinte:

.
├── bundle.tar.gz
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
└── policy.wasm

1 directory, 5 files

Agora você pode executar sua política.

Execute:

Use kwctl para executar sua política da seguinte forma:

$ kwctl run -e gatekeeper --request-path data/other-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": true
}

Este é o seu recurso criado no namespace chamado other, ele foi aceito, como esperado.

Agora você pode executar uma solicitação que é rejeitada pela política:

$ kwctl run -e gatekeeper --request-path data/default-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": false,
  "status": {
    "message": "it is forbidden to use the default namespace"
  }
}

Você pode ver que sua política do Gatekeeper rejeitou este recurso.