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 durchsetzt.

Hinweis

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

  • 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.

  • Sie benötigen eine Anthos-Berechtigung, um Policy Controller mithilfe von Anthos Config Management zu installieren. Weitere Informationen finden Sie unter Anthos einrichten.

  • Einen Cluster, auf dem die Kubernetes-Version 1.14.x oder höher ausgeführt wird und Config Sync bereits installiert ist. Unter Umständen läuft der Policy Controller in Versionen von Kubernetes vor 1.14.x, das Produkt verhält sich jedoch nicht richtig.

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

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

  1. Öffnen Sie in der Google Cloud Console das Menü von Anthos Config Management.

    Zum Anthos Config Management-Menü

  2. Wählen Sie die Cluster aus, für die Sie Policy Controller aktivieren möchten, und klicken Sie auf Konfigurieren.

  3. Klicken Sie auf die Überschrift ACM-Einstellungen für Ihre Cluster.

  4. Klicken Sie unter Policy Controller das Kästchen Policy Controller aktivieren an.

    1. Lassen Sie das Kästchen Standardvorlagenbibliothek installieren angeklickt, um eine Bibliothek mit Vorlagen für allgemeine Richtlinien zu installieren.
    2. 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.
    3. Geben Sie im Feld Ausgenommene Namespaces eine Liste gültiger Namespaces an. Objekte in diesen Namespaces werden von allen Richtlinien ignoriert. Die Namespaces müssen derzeit nicht vorhanden sein.
    4. Klicken Sie das Kästchen Aktiviert die Möglichkeit, Einschränkungsvorlagen zu verwenden, die auf Objekte verweisen, die nicht dem derzeit ausgewerteten Objekt entsprechen, um referenzielle Einschränkungen zu aktivieren. Weitere Informationen zu referenziellen Einschränkungen finden Sie unter Referenzielle Einschränkungen aktivieren.
  5. Klicken Sie auf Fertig. Sie werden zum Anthos Config Management-Menü zurückgeleitet.

gcloud

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.

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

  1. Legen Sie den Wert von enabled im Objekt spec.policyController in der Anthos Config Management-Konfigurationsdatei auf true fest:

    # 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 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"]
      # ...other fields...
    

    Der 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 Datei config-management.yaml an:

     gcloud alpha 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 config-management.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.

kubectl

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

  1. Legen Sie den Wert von enabled im Objekt spec.policyController in der Anthos Config Management-Konfigurationsdatei auf true fest:

    # 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 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"]
      # ...other fields...
    

    Der 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.

Policy Controller auf einem privaten Cluster installieren

Wenn Sie Policy Controller auf einem privaten Cluster in Google Kubernetes Engine (GKE) installieren, müssen Sie zusätzliche Schritte ausführen, um die Installation abzuschließen. 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

Nachdem Sie Policy Controller installiert haben, können Sie prüfen, ob die Installation erfolgreich abgeschlossen wurde.

Console

Gehen Sie folgendermaßen vor:

  1. Rufen Sie in der Cloud Console die Seite Anthos Config Management auf.

    Zu Anthos Config Management

  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 alpha 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.

kubectl

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.

Da der Policy Controller-Pod im Namespace gatekeeper-system ausgeführt wird, können Sie den Status ansehen. Führen Sie dazu den folgenden Befehl aus:

kubectl get pods -n gatekeeper-system

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

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

Installation der Einschränkungsvorlagenbibliothek prüfen

Wenn Sie Policy Controller installieren, ist die Einschränkungsvorlagenbibliothek standardmäßig installiert und die 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 des Policy Controllers erforderlich sind. Um Konflikte zwischen Anthos Config Management und Policy Controller zu vermeiden, sollten Sie wissen, was im Anthos Config Management-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 Anthos Config Management installieren möchte.

  • 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.

Policy Controller-Version anzeigen

Mit dem folgenden Befehl können Sie sich anzeigen lassen, welche Version des Gatekeeper Policy Controller verwendet wird:

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

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.

Richtlinien-Controller aktualisieren

Policy Controller wird beim Upgrade von Anthos Config Management aktualisiert.

Für Upgrades von Anthos Config Management können Sie die Google Cloud Console oder kubectl verwenden. Lesen Sie vor dem Upgrade die Versionshinweise, um eine spezifische Anleitung zu erhalten.

Console

  1. Rufen Sie in der Cloud Console die Seite Anthos Config Management auf.

    Zu Anthos Config Management

  2. Wählen Sie die Cluster aus, die Sie upgraden möchten.

  3. Klicken Sie auf Konfigurieren.

  4. Klicken Sie auf ACM-Einstellungen für Ihre Cluster.

  5. Wählen Sie im Drop-down Version die Version aus, auf die Sie upgraden möchten.

  6. Klicken Sie auf Fertig.

kubectl

Führen Sie diese Befehle für jeden registrierten Cluster aus:

  1. Laden Sie das Anthos Config Management-Manifest und die nomos-Befehle für die neue Version herunter.

  2. Wenden Sie das Anthos Config Management-Manifest an:

    kubectl apply -f config-management-operator.yaml
    

    Mit diesem Befehl wird das Anthos Config Management-Image aktualisiert. Kubernetes ruft die neue Version ab und startet den Anthos Config Management-Pod mit der neuen Version neu. Beim Start von Anthos Config Management wird eine Abgleichschleife ausgeführt, die die im neuen Image gebündelten Manifeste anwendet. Dadurch wird jeder Komponenten-Pod aktualisiert und neu gestartet.

  3. Ersetzen Sie auf allen Clients den Befehl nomos oder nomos.exe durch die neue Version. Durch diese Änderung kann der Befehl nomos immer den Status aller registrierten Cluster abrufen und Konfigurationen für sie validieren.

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. Öffnen Sie in der Google Cloud Console das Menü von Anthos Config Management.

    Zum Anthos Config Management-Menü

  2. Wählen Sie die Cluster aus, für die Sie Policy Controller deaktivieren möchten.

  3. Klicken Sie auf Konfigurieren.

  4. Klicken Sie auf die Überschrift ACM-Einstellungen für Ihre Cluster.

  5. Entfernen Sie im Abschnitt Policy Controller das Häkchen aus dem Kästchen Policy Controller.

  6. Klicken Sie auf Fertig.

gcloud

So deinstallieren Sie den Policy Controller:

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

  2. Wenden Sie die Änderungen in der Datei config-management.yaml an:

     gcloud alpha 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 config-management.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.

kubectl

Wenn Sie Policy Controller deinstallieren möchten, bearbeiten Sie die Anthos Config Management-Konfiguration in der Datei config-management.yaml und setzen Sie policyController.enabled auf false. 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 weitere Informationen unter Config Sync aus einem Cluster deinstallieren.

Nächste Schritte