Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev.

Distribution d’une stratégie de Gatekeeper avec SUSE Security Admission Controller

Les stratégies doivent être annotées pour être poussées, et finalement exécutées par le SUSE Security Admission Controller policy-server dans un cluster Kubernetes.

Annoter et distribuer une stratégie de Gatekeeper est similaire à distribuer une stratégie d’Open Policy Agent.

Annotation de la stratégie

Vous allez écrire un fichier metadata.yaml dans votre répertoire de stratégie avec le contenu suivant :

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.

Vous pouvez constater que tout est identique aux métadonnées de la version Open Policy Agent, sauf pour le bit executionMode: gatekeeper.

Allez-y et annotez la stratégie :

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

Pousser la stratégie

Poussez votre stratégie vers un registre OCI :

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

Déploiement sur Kubernetes

Vous devez d’abord tirer votre stratégie dans votre dépôt local kwctl :

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

Vous pouvez maintenant créer une ressource de scaffold ClusterAdmissionPolicy:

$ 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

Utilisez maintenant cette ressource ClusterAdmissionPolicy pour déployer votre stratégie sur un cluster Kubernetes.