|
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 OPA para Admission Controller
Na seção anterior, você escreveu sua política Rego. A estrutura é parecida com:
.
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
└── request.rego
1 directory, 4 files
Construir
Para construir:
$ opa build -t wasm -e policy/main policy.rego request.rego
Isso constrói a política Rego, com:
-
target:wasm. Você quer construir a política para o alvowasm. -
entrypoint:policy/main. O ponto de entrada é a regramaindentro do pacotepolicy. -
policy.rego: Construa e inclua o arquivopolicy.rego. -
request.rego: Construa e inclua o arquivorequest.rego.
Após a conclusão da construção, opa build gerou um arquivo bundle.tar.gz.
Você pode extraí-lo:
$ tar -xf bundle.tar.gz /policy.wasm
Agora a árvore se parece com o seguinte:
.
├── bundle.tar.gz
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego
1 directory, 6 file
Você tem seu arquivo policy.wasm:
$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
Agora você o executa.
Execute:
Use kwctl para executar a política:
$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
Esta solicitação é aceita pela política, pois esta é a solicitação que aponta para o namespace other.
-
execution-mode:opa. As políticas Rego podem ser direcionadas ao Open Policy Agent ou ao Gatekeeper. Você deve informarkwctlque tipo de política você está executando. -
request-path: A localização da solicitação gravada quekwctlenvia a política para avaliação.
Agora tente avaliar a solicitação que cria o pod dentro do namespace default:
$ kwctl run -e opa --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"
}
}
A política está rejeitando a solicitação, dando uma razão de volta ao servidor da API que é retornada ao usuário ou consumidor da API.