Policy Controller installieren

In diesem Thema wird gezeigt, wie Sie Policy Controller installieren – ein Kubernetes-Admission-Controller, der die Einhaltung von Richtlinien in Bezug auf Sicherheit, Vorschriften oder Geschäftsregeln durch Ihre Cluster kontrolliert, überprüft und erzwingt.

Vorbereitung

Policy Controller mit Anthos Config Management installieren

Führen Sie die folgenden Schritte aus, um Anthos Config Management so zu konfigurieren, dass die dynamische Admission-Controller von Policy Controller im Cluster installiert wird.

Standardmäßig installiert Policy Controller eine Bibliothek mit Einschränkungsvorlagen für übliche Richtlinientypen. Um die Installation der Einschränkungsvorlagen zu überspringen, entfernen Sie Kommentarzeichen aus der Zeile, die im Manifest mit templateLibraryInstalled beginnt.

  1. Setzen Sie den Wert von enabled im spec.policyController-Objekt in der Konfigurationsdatei für den Operator auf true:

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        # Uncomment to prevent the template library from being installed
        # templateLibraryInstalled: false
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
        # Uncomment to log all denies and dryrun failures
        # logDeniesEnabled: true
    
      # ...other fields...
    

    Support für referenzielle Einschränkungen ist standardmäßig deaktiviert. Vor dem Aktivieren müssen Sie die Warnhinweise zu Eventual Consistency verstanden haben.

  2. Wenden Sie die Konfiguration mit kubectl apply an.

    kubectl apply -f config-management.yaml
    

Der Pod wird erstellt und Policy Controller beginnt mit der Prüfung und Durchsetzung von Einschränkungen.

Installation überprüfen

Wenn der Policy Controller ordnungsgemäß installiert ist, wird der Pod ausgeführt. Der Pod wird möglicherweise mehrmals neu gestartet, bevor er verfügbar ist.

kubectl get pods -n gatekeeper-system

Beispielausgabe:

NAME                              READY   STATUS    RESTARTS   AGE
gatekeeper-controller-manager-0   1/1     Running   1          53s

Die Bibliothek für Einschränkungsvorlagen ist standardmäßig installiert. Dieser Schritt kann mehrere Minuten dauern. Listen Sie alle ConstraintTemplate-Objekte auf, um zu prüfen, ob die Vorlagenbibliothek installiert wurde:

kubectl get constrainttemplates

Beispielausgabe:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Wenn eine Einschränkungsvorlage korrekt installiert ist, ist dessen status.created-Feld true.

Policy Controller und Anthos Config Management

Die für die Ausführung von Policy Controller erforderlichen Ressourcen werden vom Config Management Operator verwaltet. Um Konflikte zwischen Operator und Policy Controller zu vermeiden, sollten Sie wissen, was in das Anthos Config Management-Repository aufgenommen wird.

Einige Problembereiche:

  • Sie können eine Einschränkungsvorlage nicht synchronisieren, wenn sie gleichzeitig Teil der Vorlagenbibliothek ist, es sei denn, die Einschränkungsvorlagenbibliothek ist deaktiviert.

  • Wenn Sie die im Namespace gatekeeper-system gespeicherte Konfigurationsressource synchronisieren möchten, muss der Namespace entweder im Repository undefiniert sein oder mit der Konfiguration übereinstimmen, die der Operator zu installieren versucht.

  • Wenn der Namespace gatekeeper-system aus dem "Source-of-Truth"-Repository entfernt wird, kann der Operator möglicherweise nicht wiederhergestellt werden. Löschen Sie zur Wiederherstellung die validierende Webhook-Konfiguration für den Policy Controller.

Einschränkungsvorlagenbibliothek verwalten

Informationen zum Deinstallieren oder erneuten Installieren von Einschränkungsvorlagen, den zugehörigen Einschränkungen oder der Einschränkungsvorlagenbibliothek finden Sie unter Einschränkungen erstellen.

Namespaces von der Erzwingung ausnehmen

Sie können Policy Controller so konfigurieren, dass Objekte innerhalb eines Namespaces ignoriert werden. Weitere Informationen finden Sie unter Namespaces vom Policy Controller ausschließen.

Policy Controller-Version anzeigen

Policy Controller basiert auf dem Open-Source-Projekt Gatekeeper. Prüfen Sie mit dem Image-Tag, welche Gatekeeper-Version Policy Controller verwendet:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Ab Anthos Config Management Version 1.3.2 sind das Git-Tag (oder Hash), das zum Erstellen von Gatekeeper verwendet wurde, und die Anthos Config Management-Versionsnummer folgendermaßen im Image-Tag enthalten:

.../gatekeeper:version-number-git-tag.gbuild-number

Im folgenden Image zum Beispiel:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 ist die Versionsnummer.
  • 480baac ist das Git-Tag.
  • 0 ist die Build-Nummer.

Sie können auch eine Liste aller Anthos Config Management-Versionen zusammen mit den entsprechenden Manifest-, Installations- und nomos-Binärversionen in der Releaseversionsmatrix anzeigen.

Policy Controller deinstallieren

Um Policy Controller zu deinstallieren, bearbeiten Sie die Operator-Konfiguration in config-management.yaml und setzen Sie policyController.enabled auf false. Sobald der Operator den policycontroller.configmanagement.gke.io-Finalizer entfernt hat, ist die Deinstallation abgeschlossen.

Wenn Sie Anthos Config Management vollständig deinstallieren möchten, finden Sie unter Operator von einem Cluster deinstallieren weitere Informationen.

Nächste Schritte