Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev.

Verteilen einer Gatekeeper-Richtlinie mit SUSE Security Admission Controller

Richtlinien müssen annotiert werden, damit sie gepusht und schließlich von der SUSE Security Admission Controller policy-server in einem Kubernetes-Cluster ausgeführt werden können.

Das Annotieren und Verteilen einer Gatekeeper-Richtlinie ist ähnlich wie das Verteilen einer Open Policy Agent-Richtlinie.

Die Richtlinie annotieren

Sie werden eine metadata.yaml-Datei in Ihrem Richtlinienverzeichnis mit folgendem Inhalt schreiben:

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.

Sie können sehen, dass alles dasselbe ist wie die Metadaten der Open Policy Agent-Version, außer für den executionMode: gatekeeper-Teil.

Fahren Sie fort und annotieren Sie die Richtlinie:

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

Die Richtlinie pushen

Pushen Sie Ihre Richtlinie in eine OCI-Registry:

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

Bereitstellung auf Kubernetes

Sie müssen Ihre Richtlinie zuerst in Ihren kwctl lokalen Speicher ziehen:

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

Sie können jetzt eine Scaffold-ClusterAdmissionPolicy-Ressource erstellen:

$ 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

Verwenden Sie jetzt diese ClusterAdmissionPolicy-Ressource, um Ihre Richtlinie in einem Kubernetes-Cluster bereitzustellen.