|
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. |
Distribuindo uma política OPA com SUSE Security Admission Controller
Você escreveu, construiu e executou sua política Rego. Agora é hora de distribuir a política.
As políticas precisam ser anotadas para que possam ser executadas no policy-server.
O policy-server é a parte que executa as políticas, quando está em execução em um cluster Kubernetes.
Anotando a política
Anotar uma política é um processo que enriquece os metadados da política com informações relevantes. Informações como autoria, licença, localização do código-fonte, regras, que descrevem que tipo de recursos esta política entende e avalia.
Para anotar sua política, você precisa escrever um arquivo metadata.yaml:
rules:
- apiGroups: [""]
apiVersions: ["*"]
resources: ["*"]
operations: ["CREATE"]
mutating: false
contextAware: false
executionMode: opa
annotations:
io.kubewarden.policy.title: no-default-namespace
io.kubewarden.policy.version: 0.1.0 # should match the OCI tag
io.kubewarden.policy.description: This policy will reject any resource created inside the default namespace
io.kubewarden.policy.author: The SUSE Security Admission Controller Authors
io.kubewarden.policy.url: https://github.com/kubewarden/some-policy
io.kubewarden.policy.source: https://github.com/kubewarden/some-policy
io.kubewarden.policy.license: Apache-2.0
io.kubewarden.policy.usage: |
This policy is just an example.
You can write interesting descriptions about the policy here.
Você pode ver vários detalhes:
-
Regras: Quais recursos a política tem como alvo.
-
Mutação: Se esta política realiza mutação. Neste caso, ela está apenas validando.
-
Sensível ao contexto: Se esta política requer contexto do cluster para avaliar a solicitação.
-
Modo de execução: Como esta é uma política Rego, é obrigatório especificar qual modo de execução ela espera,
opaougatekeeper. Esta política está escrita no estiloopa, retornando um objetoAdmissionReviewcompleto. -
Anotações: Metadados armazenados na própria política.
Vá em frente e anote sua política:
$ kwctl annotate policy.wasm --metadata-path metadata.yaml --output-path annotated-policy.wasm
Agora você pode inspecionar a política executando kwctl inspect annotated-policy.wasm.
Enviando a política
Agora que a política está anotada, você pode enviá-la para um registro OCI.
$ kwctl push annotated-policy.wasm registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
Policy successfully pushed
Sua política Rego, direcionada ao framework OPA, tem tudo o que precisa para ser implantada em produção, criando um ClusterAdmissionPolicy.
Você também pode preparar isso.
Primeiro, você precisa puxar a política para o armazenamento local kwctl:
$ kwctl pull registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
pulling policy...
Crie um ClusterAdmissionPolicy a partir disso.
Esta operação leva em conta os metadados que possui sobre a política:
$ kwctl manifest registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1 --type ClusterAdmissionPolicy
---
apiVersion: policies.kubewarden.io/v1alpha2
kind: ClusterAdmissionPolicy
metadata:
name: generated-policy
spec:
module: "registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1"
settings: {}
rules:
- apiGroups:
- ""
apiVersions:
- "*"
resources:
- "*"
operations:
- CREATE
mutating: false
Agora você pode usar este ClusterAdmissionPolicy como base para direcionar os recursos que deseja, ou implantar no Kubernetes como está.