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.

Air-Gap-Installation

Für eine Air-Gapped-Installation von SUSE Security Admission Controller benötigen Sie ein privates Open Container Initiative (OCI) Registry, das von Ihrem Kubernetes-Cluster aus zugänglich ist. Admission Controller Richtlinien sind WebAssembly-Module, daher können Sie sie als OCI-Artefakte in einem OCI-konformen Registry speichern. Sie müssen die Bilder und Richtlinien von Admission Controller in dieses OCI-Registry hinzufügen. Sie können auf eine Liste von Admission Controller Artefakten auf der Seite Artefaktverzeichnis verweisen. Die folgenden Abschnitte beschreiben den Prozess.

Wir empfehlen die Verwendung von Hauler. Siehe unsere Hauler-Dokumentationsseite.

Alternativ können Sie den unten aufgeführten manuellen Prozess verwenden.

Speichern Sie Helm-Charts lokal

Sie müssen die folgenden Helm-Charts auf Ihren Arbeitsplatz herunterladen:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults
helm pull kubewarden/sbomscanner

Optional können Sie die Signaturen der Helm-Charts und Containerbilder überprüfen.

Speichern Sie Containerbilder lokal

  1. Jedes unserer Helm-Charts enthält ein imagelist.txt mit den von ihm verwendeten Containerbildern und, falls zutreffend, ein policylist.txt mit den OCI-Wasm-Modulen der Richtlinien, die es ebenfalls verwendet.

    Um sie zu erhalten, können Sie Folgendes tun:

    helm pull --untar \
      kubewarden/kubewarden-crds \
      kubewarden/kubewarden-controller \
      kubewarden/kubewarden-defaults \
      kubewarden/sbomscanner

    Und dann fügen Sie sie in eine Datei zusammen:

    cat */imagelist.txt > kubewarden-images.txt
  2. Laden Sie kubewarden-save-images.sh und kubewarden-load-images.sh aus dem Utilities-Repository herunter.

  3. Speichern Sie Admission Controller Containerbilder in einer .tar.gz Datei:

     ./kubewarden-save-images.sh \
       --image-list ./kubewarden-images.txt \
       --images kubewarden-images.tar.gz

    Docker beginnt mit dem Herunterladen der Bilder, die für eine Air-Gap-Installation verwendet werden. Dieser Vorgang kann ein paar Minuten dauern. Nach Abschluss hat Ihr aktuelles Verzeichnis, in dem Sie den Befehl ausgeführt haben, ein Tarball, kubewarden-images.tar.gz.

Richtlinien lokal speichern

  1. Fügen Sie alle Richtlinien, die Sie verwenden möchten, in eine policies.txt Datei ein:

    cat */policylist.txt > policies.txt

    Eine Datei mit einer Liste der Standardrichtlinien befindet sich auf der Admission Controller Standard- Release-Seite.

  2. Laden Sie kubewarden-save-policies.sh und kubewarden-load-policies.sh aus dem kubewarden-controller Repository herunter.

  3. Richtlinien in eine .tar.gz Datei speichern:

    ./kubewarden-save-policies.sh --policies-list policies.txt

    Verwenden Sie kwctl, um die Richtlinien herunterzuladen. Das kubewarden-policies.tar.gz Archiv enthält die Richtlinien.

Helm-Charts

Sie müssen die folgenden Helm-Charts auf Ihren Arbeitsplatz herunterladen:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults

Private Registry befüllen

Verschieben Sie diese Dateien in die Air-Gapped-Umgebung:

  • Helm-Charts im tgz-Format (zum Beispiel kubewarden-crds-1.23.0.tgz)

  • kubewarden-policies.tar.gz,

  • kubewarden-images.tar.gz,

  • kubewarden-load-images.sh,

  • kubewarden-load-policies.sh und

  • policies.txt

    1. Laden Sie Admission Controller Bilder in das private Registry. Sie müssen den Docker-Client gegen das lokale Registry authentifizieren.

       ./kubewarden-load-images.sh \
         --image-list ./kubewarden-images.txt \
         --images kubewarden-images.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT>
    2. Laden Sie die Admission Controller Richtlinien in das private Registry. Sie sollten sich authentifizieren, um das lokale Registry (kwctl verwendet denselben Mechanismus zur Authentifizierung wie docker, eine ~/.docker/config.json Datei)

       ./kubewarden-load-policies.sh \
         --policies-list policies.txt \
         --policies kubewarden-policies.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT> \
         --sources-path sources.yml

Der kwctl Befehl benötigt die sources.yaml Datei, um sich mit Registries in diesen Kategorien zu verbinden:

  • Eine Authentifizierung ist erforderlich

  • Ein selbstsigniertes Zertifikat wird verwendet

  • Es erfolgt keine TLS-Terminierung

Verweisen Sie auf den Abschnitt über benutzerdefinierte Zertifizierungsstellen in der Dokumentation, um zu erfahren, wie Sie die sources.yaml Datei konfigurieren.

Installieren Sie Admission Controller

Jetzt, da Ihr privates Registry alles Erforderliche hat, können Sie Admission Controller installieren. Der einzige Unterschied zu einer Standardinstallation von Admission Controller besteht darin, dass Sie das Registry in den Containerbildern und Richtlinien auf das private Registry ändern müssen.

Installieren Sie den Admission Controller Stack:

helm install --wait -n kubewarden \
  kubewarden-crds kubewarden-crds.tgz
helm install --wait -n kubewarden \
  kubewarden-controller kubewarden-controller.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Um das im kubewarden-controller Chart verfügbare Policy Reporter Subchart zu verwenden, müssen Sie andere, spezifische Werte für das Subchart in einer Air-Gapped-Umgebung definieren. Ein Beispiel finden Sie unten:

helm install --wait -n kubewarden kubewarden-controller kubewarden-controller.tgz \
    --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set auditScanner.policyReporter=true \
    --set policy-reporter.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.ui.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.image.repository=kyverno/policy-reporter \
    --set policy-reporter.ui.image.repository=kyverno/policy-reporter-ui

Es ist notwendig, auditScanner.policyReporter zu definieren, um das Subchart zu aktivieren und 4 weitere Werte zu konfigurieren, um das Registry und das Repository, in dem Sie die Policy Reporter Images speichern, zu konfigurieren. Für weitere Informationen zu den Werten des Policy Report Subcharts verweisen Sie auf die Policy Reporter Dokumentation.

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Um die empfohlenen Richtlinien, die vom kubewarden-defaults Helm Chart aus einem anderen Registry als global.cattle.systemDefaultRegistry installiert wurden, herunterzuladen, verwenden Sie die recommendedPolicies.defaultPoliciesRegistry Konfiguration. Diese Konfiguration ermöglicht es Benutzern, ein Registry anzugeben, das speziell für das Abrufen der OCI-Artefakte der Richtlinien vorgesehen ist. Es ist besonders nützlich, wenn ihr Container-Image-Repository keine OCI Artefakte unterstützt.

Um zu installieren und auf den Abschluss der Installation zu warten, verwenden Sie den folgenden Befehl:

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
  --set recommendedPolicies.defaultPoliciesRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

Wenn die recommendedPolicies.defaultPoliciesRegistry Konfiguration nicht festgelegt ist, wird das global.cattle.systemDefaultRegistry als Standardregistry verwendet.

Schließlich müssen Sie den Policy Server so konfigurieren, dass er Richtlinien aus Ihrem privaten Registry abruft. Bitte beachten Sie den Abschnitt Verwendung des privaten Registry der Dokumentation.

Jetzt können Sie Admission Controller Richtlinien in Ihrem Cluster erstellen. Richtlinien müssen in Ihrem privaten Registry verfügbar sein.

kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
  name: privileged-pods
spec:
  module: registry://<REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policies/pod-privileged:v0.2.2
  rules:
  - apiGroups: [""]
    apiVersions: [“v1”]
    resources: [“pods”]
    operations:
    - CREATE
  mutating: false
EOF

PolicyServer Ressourcen müssen das im privaten Registry verfügbare Image verwenden. Beispiel:

apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
  name: reserved-instance-for-tenant-a
spec:
  image: <REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policy-server:v1.3.0
  replicas: 2
  serviceAccountName: sa