Policy Controller installieren

Auf dieser Seite erfahren Sie, wie Sie Policy Controller installieren. Policy Controller prüft, überwacht und erzwingt die Einhaltung Ihres Clusters von Richtlinien in Bezug auf Sicherheit, Vorschriften oder Geschäftsregeln.

Policy Controller ist verfügbar, wenn Sie Anthos oder Google Kubernetes Engine (GKE) verwenden. Bei GKE ist Policy Controller ein kostenpflichtiges Feature. Weitere Informationen finden Sie unter Preise.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  1. Installieren und initialisieren Sie das Cloud SDK, das die in dieser Anleitung verwendeten gcloud-, gsutil-, kubectl- und nomos-Befehle enthält. Wenn Sie Cloud Shell verwenden, ist Cloud SDK bereits installiert.

  2. Wenn Sie Anthos Config Management zum ersten Mal verwenden, aktivieren Sie Anthos Config Management.

  3. Erstellen Sie einen Cluster, in dem eine Kubernetes-Version 1.14.x oder höher ausgeführt wird, oder sorgen Sie dafür, dass Sie auf einen solchen Cluster zugreifen können. Unter Umständen kann Policy Controller auch mit Kubernetes-Versionen vor 1.14.x ausgeführt werden. Das Produkt funktioniert dann aber nicht korrekt.

  4. Weisen Sie dem Nutzer die für die Registrierung des Clusters erforderlichen IAM-Rollen zu.

  5. Wenn Sie das gcloud-Befehlszeilentool zum Konfigurieren von Policy Controller verwenden möchten, registrieren Sie Ihren Cluster jetzt in einer Flotte. Wenn Sie die Google Cloud Console nutzen, registrieren Sie Ihre Cluster bei der Installation von Policy Controller.

Policy Controller installieren

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

Console

Cluster registrieren

Damit Sie Anthos Config Management verwenden können, müssen Sie zuerst die Cluster registrieren. Wenn Sie Ihre Cluster registrieren, können diese einen gemeinsamen Satz von Konfigurationen und Richtlinien nutzen.

Führen Sie die folgenden Aufgaben aus, um Ihre Cluster zu registrieren:

  1. In der Cloud Console

    Auf diesen Seiten wird angezeigt, welche Cluster aktuell registriert und konfiguriert sind. Sie können hier neue Cluster registrieren.

  2. Klicken Sie auf Neue Einrichtung.

  3. Suchen Sie auf der Seite Registrierte Cluster für Config Management auswählen die Tabelle Nicht registrierte Cluster aus diesem Projekt und ermitteln Sie darin den Cluster, den Sie registrieren möchten.

  4. Klicken Sie neben dem Cluster, den Sie registrieren möchten, auf Registrieren.

    Nach erfolgreicher Registrierung des Clusters wird er in der Tabelle Registrierte Cluster für Config Management auswählen angezeigt.

Policy Controller konfigurieren

Führen Sie die folgenden Schritte aus, um den Policy Controller in der Cloud Console zu konfigurieren:

  1. Wählen Sie auf der Seite Registrierte Cluster für Config Management auswählen den registrierten Cluster aus, für den Sie Policy Controller aktivieren möchten. Wählen Sie dann Weiter aus.
  2. Wählen Sie in der Drop-down-Liste Version die Version von Anthos Config Management aus, die Sie verwenden möchten. Die Standardeinstellung ist die aktuelle Version.
  3. Wenn Sie Config Sync nicht installieren möchten, entfernen Sie das Häkchen aus dem Kästchen Config Sync aktivieren und klicken Sie auf Weiter.
  4. Lassen Sie auf der Seite "Policy Controller" das Kästchen Policy Controller aktivieren ausgewählt.
  5. Optional: Wenn Sie eine Bibliothek mit Einschränkungsvorlagen für gängige Richtlinientypen installieren möchten, lassen Sie das Kästchen Standardvorlagenbibliothek installieren ausgewählt.
  6. Optional: Wählen Sie im Feld Auditintervall den Zeitraum in Sekunden zwischen aufeinanderfolgenden Synchronisierungen aus. Die Standardeinstellung beträgt 60 Sekunden. Wenn Sie das Audit-Intervall auf 0 festlegen, ist die Prüfung deaktiviert.
  7. Optional: Geben Sie im Feld Ausnahmefähige Namespaces eine Liste von Namespaces an. Objekte in diesen Namespaces werden von allen Richtlinien ignoriert. Die Namespaces müssen aktuell nicht vorhanden sein.
  8. Optional: Um Referenzielle Einschränkungen aktivieren, klicken Sie das Kästchen Ermöglicht die Verwendung von Einschränkungsvorlagen, die auf andere Objekte als das derzeit evaluierte verweisen an.
  9. Klicken Sie auf Abgeschlossen. Sie werden zur Seite Config Management zurückgeleitet.

    Nach einigen Minuten sollte in der Spalte für den Policy Controller-Status neben dem von Ihnen konfigurierten Cluster Installiert angezeigt werden.

gcloud

  1. Bereiten Sie die Konfiguration vor, indem Sie entweder ein neues apply-spec.yaml-Manifest erstellen oder ein vorhandenes Manifest verwenden. Mit einem vorhandenen Manifest können Sie den Cluster mit denselben Einstellungen konfigurieren, die auch von einem anderen Cluster verwendet werden.

Neues Manifest erstellen

Um Policy Controller mit neuen Einstellungen für Ihren Cluster zu konfigurieren, erstellen Sie eine Datei mit dem Namen apply-spec.yaml und kopieren Sie in diese die folgende YAML-Datei:

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    enabled: true
    # Uncomment to prevent the template library from being installed
    # templateLibraryInstalled: false
    # Uncomment to enable support for referential constraints
    # referentialRulesEnabled: true
    # Uncomment to disable audit, adjust value to set audit interval
    # auditIntervalSeconds: 0
    # Uncomment to log all denies and dryrun failures
    # logDeniesEnabled: true
    # Uncomment to exempt namespaces
    # exemptableNamespaces: ["namespace-name"]
    # Uncomment to enable mutation (preview feature)
    # mutation:
    #   # enabled: true
  # ...other fields...

Sie müssen das Feld spec.policyController hinzufügen und den Wert von enabled auf true setzen. Sie können auch andere Policy Controller-Features aktivieren. Der Support für referenzielle Einschränkungen ist jedoch standardmäßig deaktiviert. Vor dem Aktivieren sollten Sie sich mit den Warnhinweisen zu Eventual Consistency vertraut machen.

Vorhandenes Manifest verwenden

Um den Cluster mit den Einstellungen zu konfigurieren, die von einem anderen Cluster verwendet werden, rufen Sie diese Einstellungen von einem registrierten Cluster ab.

gcloud alpha container hub config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Dabei gilt:

  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters mit den Policy Controller-Einstellungen, die Sie verwenden möchten
  • PROJECT_ID: Ihre Projekt-ID
  • CONFIG_YAML_PATH: Pfad zur Datei apply-spec.yaml.

2. Wenden Sie die Datei apply-spec.yaml an:

  gcloud beta container hub config-management apply \
      --membership=MEMBERSHIP_NAME \
      --config=CONFIG_YAML \
      --project=PROJECT_ID

Dabei gilt:

  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters mit den Policy Controller-Einstellungen, die Sie verwenden möchten.
  • CONFIG_YAML: Fügen Sie den Pfad zur Datei apply-spec.yaml hinzu.
  • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.

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

Policy Controller auf einem privaten Cluster installieren

Wenn Sie eine ältere Version als 1.8.0 verwenden und Policy Controller in einem privaten Cluster in Google Kubernetes Engine (GKE) installieren, müssen Sie für die Installation zusätzliche Schritte ausführen. In privaten Clustern blockiert die Firewall die Steuerungsebene, dass die Knoten an Port 8443 erreicht werden können. In diesem Fall versucht die Steuerungsebene, eine Verbindung zum Policy Controller herzustellen. Sie können eine Firewallregel erstellen, damit die Steuerungsebene den Port 8443 (oder einen anderen benutzerdefinierten Port) erreichen kann. Sie können den Pod auch auf einem privilegierten Port 443 ausführen. Weitere Informationen finden Sie in der Gatekeeper-Dokumentation unter Private GKE-Clusterknoten ausführen.

Installation überprüfen

Nach der Installation von Policy Controller können Sie prüfen, ob diese erfolgreich abgeschlossen wurde.

Console

Gehen Sie folgendermaßen vor:

  1. In der Cloud Console

  2. Sehen Sie sich in der Clustertabelle die Spalte Policy Controller-Status an. Eine erfolgreiche Installation hat den Status Installiert.

gcloud

Führen Sie den folgenden Befehl aus:

gcloud beta container hub config-management status \
    --project=PROJECT_ID

Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Eine erfolgreiche Installation hat in der Spalte "Policy Controller" den Status INSTALLED.

Installation der Einschränkungsvorlagenbibliothek prüfen

Wenn Sie Policy Controller installieren, wird die Einschränkungsvorlagenbibliothek standardmäßig installiert. Diese Installation kann mehrere Minuten dauern.

Listen Sie alle ConstraintTemplate-Objekte auf, um zu prüfen, ob die Vorlagenbibliothek installiert wurde:

kubectl get constrainttemplates

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

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

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

Interaktionen zwischen Policy Controller und Anthos Config Management

Anthos Config Management verwaltet die Ressourcen, die für die Ausführung von Policy Controller erforderlich sind. Um Konflikte zwischen Anthos Config Management und Policy Controller zu vermeiden, müssen Sie wissen, was im Config Sync-Repository enthalten ist.

Beachten Sie bei der Verwendung von Policy Controller Folgendes:

  • 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 im Repository nicht definiert sein oder der Konfiguration entsprechen, die von Anthos Config Management installiert wird.

  • Wenn der Namespace gatekeeper-system aus dem Source-of-Truth-Repository entfernt wird, kann Anthos Config Management möglicherweise nicht wiederhergestellt werden. Löschen Sie zur Wiederherstellung die validierende Webhook-Konfiguration für 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.

Ressourcen mutieren

Policy Controller dient auch als mutierender Webhook (Vorschau-Feature). Weitere Informationen finden Sie unter Ressourcen mutieren.

Policy Controller-Version anzeigen lassen

Prüfen Sie mit dem Image-Tag, welche Gatekeeper-Version Policy Controller verwendet, indem Sie den folgenden Befehl ausführen:

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:VERIOSN_NUMBER-GIT_TAG.gBUILD_NUMBER

Für das folgende Image z. B. gilt:

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 Release-Versionsmatrix anzeigen.

Policy Controller aktualisieren

Policy Controller wird beim Upgrade von Anthos Config Management aktualisiert. Weitere Informationen finden Sie unter Anthos Config Management aktualisieren.

Policy Controller deinstallieren

Führen Sie die folgenden Schritte aus, um Policy Controller aus Ihren Clustern zu deinstallieren.

Console

Führen Sie die folgenden Aufgaben aus, um Policy Controller in Ihren Clustern zu deaktivieren:

  1. In der Cloud Console

  2. Klicken Sie neben den Clustern, für die Sie Policy Controller deaktivieren möchten, auf Bearbeiten.

  3. Klicken Sie auf Weiter, um die Konfigurationsseite für Policy Controller aufzurufen.

  4. Entfernen Sie das Häkchen aus dem Kästchen Policy Controller aktivieren.

  5. Klicken Sie auf Abgeschlossen.

gcloud

So deinstallieren Sie den Policy Controller:

  1. Bearbeiten Sie die Anthos Config Management-Konfiguration in der Datei apply-spec.yaml und legen Sie policyController.enabled auf false fest.

  2. Wenden Sie die Änderungen in der Datei apply-spec.yaml an:

     gcloud beta container hub config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Dabei gilt:

    • CLUSTER_NAME: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten.
    • CONFIG_YAML: Fügen Sie den Pfad zur Datei apply-spec.yaml hinzu.
    • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.

Nachdem Anthos Config Management den policycontroller.configmanagement.gke.io-Abschluss entfernt hat, ist die Deinstallation abgeschlossen.

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

Nächste Schritte