Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Esta es documentación inédita para Admission Controller 1.34-dev.

Distribuyendo una directiva de Gatekeeper con SUSE Security Admission Controller

Las directivas deben ser anotadas para que puedan ser enviadas y, eventualmente, ejecutadas por el SUSE Security Admission Controller policy-server en un clúster de Kubernetes.

Anotar y distribuir una directiva de Gatekeeper es similar a distribuir una de Open Policy Agent.

Anotando la directiva

Vas a escribir un archivo metadata.yaml en tu directorio de directivas con el contenido:

rules:
- apiGroups: [""]
  apiVersions: ["*"]
  resources: ["*"]
  operations: ["CREATE"]
mutating: false
contextAware: false
executionMode: gatekeeper
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 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.

Puedes ver que todo es igual que los metadatos de la versión de Open Policy Agent, excepto por el executionMode: gatekeeper.

Adelante, anota la directiva:

$ kwctl annotate policy.wasm --metadata-path metadata.yaml --output-path annotated-policy.wasm

Enviando la directiva

Envía tu directiva a un registro OCI:

$ kwctl push annotated-policy.wasm registry.my-company.com/kubewarden/no-default-namespace-gatekeeper:v0.0.1
Policy successfully pushed

Desplegando en Kubernetes

Primero tienes que extraer tu directiva a tu almacén local kwctl:

$ kwctl pull registry://registry.my-company.com/kubewarden/no-default-namespace-gatekeeper:v0.0.1
pulling policy...

Ahora puedes crear un recurso ClusterAdmissionPolicy de andamiaje:

$ kwctl scaffold manifest registry://registry.my-company.com/kubewarden/no-default-namespace-gatekeeper: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-gatekeeper:v0.0.1"
  settings: {}
  rules:
    - apiGroups:
        - ""
      apiVersions:
        - "*"
      resources:
        - "*"
      operations:
        - CREATE
  mutating: false

Ahora utiliza este recurso ClusterAdmissionPolicy para desplegar tu directiva en un clúster de Kubernetes.