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.

Criando uma nova política de validação

Este tutorial abrange a criação de uma política que valida os nomes de host dos objetos Pod.

A política é rejeitar todos os Pods que usam um ou mais nomes de host na lista de negação. Você fornece a configuração da política usando as configurações de runtime.

Para resumir, as configurações da política devem ser assim:

denied_hostnames:
  - bad-host
  - forbidden-host

A política rejeita a criação deste Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostname: bad-host
  containers:
    - name: nginx
      image: nginx:latest

No entanto, aceita a criação deste Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostname: allowed-host
  containers:
    - name: nginx
      image: nginx:latest

Estruturando um novo projeto de política

Você pode criar um novo projeto de política usando o repositório de modelo. Selecione o botão verde "Usar este modelo" próximo ao topo da página e siga o assistente do GitHub. Clone o repositório localmente e atualize o arquivo package.json para refletir os detalhes da sua política:

{
  "name": "your-policy-name",
  "version": "1.0.0",
  "description": "Your policy description",
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/your-policy-name"
  }
}

Certifique-se de usar um caminho de repositório que corresponda ao seu repositório real do GitHub.

qualidade

Desde que as ferramentas necessárias estejam disponíveis, o comando make all constrói o alvo annotated-policy.wasm. O comando make e2e executa testes usando bats com kwctl.

Saída dos comandos make
make all
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 2280 ms
npm install
up to date, audited 400 packages in 2s
58 packages are looking for funding
  run `+npm fund+` for details

found 0 vulnerabilities
make e2e
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 1909 ms
bats e2e.bats
e2e.bats
 ✓ reject because hostname is on the deny list
 ✓ accept because hostname is not on the deny list
 ✓ accept because the deny list is empty
 ✓ accept because pod has no hostname set
 ✓ accept non-pod resources

5 tests, 0 failures