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 Google Kubernetes Engine (GKE) Enterprise Edition verwenden. Weitere Informationen finden Sie unter Preise für Google Kubernetes Engine (GKE) Enterprise Edition. Sie können auch einen Bericht erstellen, um Policy Controller auszuprobieren, bevor Sie ihn kostenlos installieren.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Installieren und initialisieren Sie das Google Cloud CLI, das die in dieser Anleitung verwendeten Befehle
gcloud
,gsutil
,kubectl
undnomos
enthält. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mitgcloud components update
ab. Wenn Sie Cloud Shell verwenden, ist Google Cloud CLI vorinstalliert. - Achten Sie darauf, dass der Open-Source-Open Policy Agent Gatekeeper nicht in Ihrem Cluster installiert ist. Ist dies doch der Fall, deinstallieren Sie Gatekeeper, bevor Sie Policy Controller installieren.
Aktivieren Sie die Policy Controller API.
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.
Weisen Sie dem Nutzer die für die Registrierung des Clusters erforderlichen IAM-Rollen zu.
Wenn Sie Policy Controller mit dem Google Cloud CLI konfigurieren möchten, registrieren Sie Ihren Cluster jetzt auf einer Flotte. Wenn Sie die Google Cloud Console nutzen, registrieren Sie Ihre Cluster bei der Installation von Policy Controller.
Wenn Sie GKE-angehängte Cluster verwenden, achten Sie darauf, dass Ihr AKS-Cluster nicht das Add-on für Azure Policy enthält und vermeiden Sie die Labelerstellung für Namespaces mit dem Schlüssel
control-plane
. “Wenn Sie GKE on VMware oder Google Distributed Cloud Virtual for Bare Metal verwenden, müssen Sie Policy Controller auf einem Nutzercluster installieren. Policy Controller kann nicht auf einem Administratorcluster installiert werden.
Policy Controller installieren
Wenn Sie die Google Cloud CLI verwenden, können Sie ab Version 1.16.0 Policy Controller direkt (empfohlen) oder über das ConfigManagement-Objekt installieren und verwalten.
Console
Führen Sie die folgenden Schritte aus, um den Policy Controller in der Google Cloud Console zu konfigurieren:
- Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.
Wählen Sie add Policy Controller installieren aus.
Wählen Sie im Bereich Policy Controller-Installation eine der folgenden Installationsoptionen aus:
So installieren Sie Policy Controller auf allen Clustern in einer Flotte:
Lassen Sie In Flotte installieren ausgewählt.
Wenn Sie in Ihrem Projekt keine Flotte haben, können Sie im nächsten Schritt eine Flotte erstellen.
Wenn Sie noch keine Flotte haben, wählen Sie einen Namen für Ihre Flotte aus.
Wählen Sie Policy Controller aktivieren aus.
Policy Controller in einzelnen Clustern installieren
Wählen Sie Auf einzelnen Clustern installieren aus.
Wählen Sie in der Tabelle Verfügbare Cluster die Cluster aus, in denen Sie Policy Controller installieren möchten.
Wählen Sie Policy Controller aktivieren aus.
Sie werden zum Tab Einstellungen des Policy Controllers weitergeleitet. Wenn Policy Controller in Ihren Clustern installiert und konfiguriert ist, wird in den Statusspalten Installiert check_circle angezeigt. Dieser Vorgang kann einige Minuten dauern.
gcloud Policy Controller
Aktivieren Sie Policy Controller mit folgendem Befehl:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Sie können zusätzliche Felder festlegen, um Policy Controller zu konfigurieren. Sie können beispielsweise Policy Controller anweisen, einige Namespaces von der Erzwingung auszunehmen.
Eine vollständige Liste der Felder, die Sie konfigurieren können, finden Sie in der Dokumentation zum Google Cloud CLI von Policy Controller oder führen Sie gcloud container fleet policycontroller enable --help
aus.
gcloud ConfigManagement
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 enable mutation # mutationEnabled: true # Uncomment to exempt namespaces # exemptableNamespaces: ["namespace-name"] # Uncomment to change the monitoring backends # monitoring: # backends: # - cloudmonitoring # - prometheus # ...other fields...
Sie müssen das Feld
spec.policyController
hinzufügen und den Wert vonenabled
auftrue
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 fleet 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öchtenPROJECT_ID
: Ihre Projekt-IDCONFIG_YAML_PATH
: Pfad zur Dateiapply-spec.yaml
.
Wenden Sie die Datei
apply-spec.yaml
an:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
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 Dateiapply-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.
Installation des Policy Controllers prüfen
Nach der Installation von Policy Controller können Sie prüfen, ob diese erfolgreich abgeschlossen wurde.
Console
Gehen Sie folgendermaßen vor:
- Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.
- Prüfen Sie auf dem Tab Einstellungen in der Clustertabelle die Spalte Policy Controller-Status. Eine erfolgreiche Installation hat den Status Installiert check_circle.
gcloud Policy Controller
Führen Sie dazu diesen Befehl aus:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Eine erfolgreiche Installation zeigt membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
an.
gcloud ConfigManagement
Führen Sie dazu diesen Befehl aus:
gcloud beta container fleet 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. Die Installation kann einige Minuten dauern. Sie können prüfen, ob die Vorlagenbibliothek erfolgreich abgeschlossen wurde.
Console
Gehen Sie folgendermaßen vor:
- Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.
- Wählen Sie auf dem Tab Einstellungen in der Clustertabelle die Zahl aus, die in der Spalte Installierte Pakete aufgeführt ist. Im Bereich Richtlinieninhaltsstatus hat eine erfolgreiche Installation der Vorlagenbibliothek den Status Installiert check_circle.
gcloud
Führen Sie dazu diesen Befehl aus:
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
.
Standardeinstellungen auf Flottenebene konfigurieren
Wenn Sie die Google Kubernetes Engine (GKE) Enterprise-Version aktiviert haben, können Sie Policy Controller als Standardeinstellung auf Flottenebene für Ihre Cluster aktivieren und konfigurieren. Dies bedeutet, dass für jeden neuen GKE-Cluster, der während der Clustererstellung registriert wird, Policy Controller im Cluster mit den von Ihnen angegebenen Einstellungen aktiviert ist. Weitere Informationen zur Standardkonfiguration für Flotten finden Sie unter Features auf Flottenebene verwalten.
Führen Sie die folgenden Schritte aus, um Standardeinstellungen auf Flottenebene für Policy Controller zu konfigurieren:
Console
Rufen Sie in der Google Cloud Console die Seite Feature Manager auf.
Klicken Sie im Bereich Richtlinie auf Konfigurieren.
Einstellungen auf Flottenebene überprüfen. Alle neuen Cluster, die Sie bei der Flotte registrieren, übernehmen diese Einstellungen.
Optional: Klicken Sie zum Ändern der Standardeinstellungen auf Flotteneinstellungen anpassen. Führen Sie im angezeigten Dialogfeld die folgenden Schritte aus:
- Klicken Sie im Abschnitt Richtlinien-Bundles hinzufügen/bearbeiten auf die entsprechende Ein-/Aus-Schaltfläche, um ein Richtlinien-Bundle ein- oder auszuschließen.
- Führen Sie im Abschnitt Policy Controller-Konfiguration bearbeiten folgende Schritte aus:
- Klicken Sie das Kästchen Mutations-Webhook aktivieren an, um den Mutations-Webhook zu aktivieren. Dieses Feature ist nicht mit Autopilot-Clustern kompatibel.
- Geben Sie im Feld Auditintervall den Zeitraum in Sekunden zwischen zwei aufeinanderfolgenden Audits ein.
- Geben Sie im Feld Ausnahmefähige Namespaces eine Liste von Namespaces ein. Policy Controller ignoriert Objekte in diesen Namespaces.
- Wenn Sie referenzielle Einschränkungen aktivieren möchten, klicken Sie das Kästchen Einschränkungsvorlagen aktivieren, die auf andere Objekte als das derzeit evaluierte verweisen an.
- Wählen Sie in der Liste Version die Policy Controller-Version aus, die Sie verwenden möchten.
- Klicken Sie auf Änderungen speichern.
Klicken Sie auf Konfigurieren.
Klicken Sie im Dialogfeld zur Bestätigung auf Bestätigen. Wenn Sie Policy Controller noch nicht aktiviert haben, wird durch Klicken auf Bestätigen die
anthospolicycontroller.googleapis.com
API aktiviert.Optional: Synchronisieren Sie vorhandene Cluster mit den Standardeinstellungen:
- Wählen Sie in der Liste Cluster in der Flotte die Cluster aus, die Sie synchronisieren möchten.
- Klicken Sie auf Mit Flotteneinstellungen synchronisieren und dann im angezeigten Bestätigungsdialogfeld auf Bestätigen. Dies kann einige Minuten dauern.
gcloud
Erstellen Sie eine Datei mit dem Namen
fleet-default.yaml
, die die Standardkonfigurationen für den Policy Controller enthält. Das FeldinstallSpec
ist erforderlich, um Standardeinstellungen auf Flottenebene zu aktivieren. Dieses Beispiel zeigt die Optionen, die Sie konfigurieren können:# cat fleet-default.yaml policyControllerHubConfig: installSpec: INSTALL_SPEC_ENABLED # Uncomment to set default deployment-level configurations. # deploymentConfigs: # admission: # containerResources: # limits: # cpu: 1000m # memory: 8Gi # requests: # cpu: 500m # memory: 4Gi # Uncomment to set policy bundles that you want to install by default. # policyContent: # bundles: # cis-k8s-v1.5.1: # exemptedNamespaces: # - "namespace-name" # Uncomment to exempt namespaces from admission. # exemptableNamespaces: # - "namespace-name" # 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 enable mutation # mutationEnabled: true # Uncomment to adjust the value to set the constraint violation limit # constraintViolationLimit: 20 # ... other fields ...
Wenden Sie die Standardkonfiguration auf Ihre Flotte an:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Konfiguration angewendet wurde:
gcloud container fleet policycontroller describe
Führen Sie den folgenden Befehl aus, um die Standardkonfiguration auf Flottenebene zu entfernen:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
Interaktionen von Policy Controller mit Config Sync
Wenn Sie Policy Controller mit Config Sync verwenden, sollten Sie die folgenden Interaktionen mit Ressourcen beachten, die in Ihrer "Source of Truth" gespeichert sind, z. B. ein Git-Repository, die von Config Sync synchronisiert werden:
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 RessourceConfig
synchronisieren möchten, müssen Sie nur die RessourceConfig
in der "Source of Truth" definieren. Diegatekeeper-system
Namespace
darf nicht damit definiert werden.
Einschränkungsvorlagenbibliothek verwalten
Informationen zum Deinstallieren oder 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 fungiert auch als mutierender Webhook. 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}"
Das Git-Tag (oder Hash), das zum Erstellen von Gatekeeper verwendet wird, und die Versionsnummer des ConfigManagement Operator sind im Image-Tag so 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.
Policy Controller aktualisieren
Bevor Sie das Upgrade für Policy Controller ausführen, lesen Sie in den Versionshinweisen, was sich zwischen den Versionen ändert.
Um Policy Controller zu aktualisieren, führen Sie die folgenden Schritte aus:
Console
- Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.
- Wählen Sie auf dem Tab Einstellungen neben dem Cluster, dessen Version Sie aktualisieren möchten, edit Konfiguration bearbeiten aus.
- Maximieren Sie das Menü Policy Controller-Konfiguration bearbeiten.
- Wählen Sie in der Drop-down-Liste Version die Version aus, auf die Sie aktualisieren möchten.
- Klicken Sie auf Änderungen speichern.
gcloud
Führen Sie dazu diesen Befehl aus:
gcloud container fleet policycontroller update \
--version=VERSION \
--membership=MEMBERSHIP_NAME
Dabei gilt:
VERSION
: Version, auf die Sie ein Upgrade ausführen möchten.MEMBERSHIP_NAME
: Name der Mitgliedschaft, den Sie bei der Registrierung Ihres Clusters ausgewählt haben. Sie ermitteln den Namen der Mitgliedschaft durch Ausführen vongcloud container fleet memberships list
.
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:
- Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.
- Wählen Sie auf dem Tab Einstellungen in der Clustertabelle in der Spalte Konfiguration bearbeiten die Option Bearbeiten edit aus.
- Scrollen Sie im Clusterbereich nach unten und maximieren Sie das Menü Informationen zu Policy Controller.
- Wählen Sie Policy Controller deinstallieren aus.
- Bestätigen Sie die Deinstallation. Folgen Sie dazu der Anleitung im Bestätigungsdialogfeld und wählen Sie Bestätigen aus.
Wenn Policy Controller deinstalliert ist, wird in den Statusspalten Nicht installiert do_not_disturb_on angezeigt.
gcloud Policy Controller
Führen Sie folgenden Befehl aus, um Policy Controller zu deinstallieren:
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
Ersetzen Sie MEMBERSHIP_NAME
durch den Mitgliedschaftsnamen des registrierten Clusters, für den Policy Controller deaktiviert werden soll. Sie können mehrere Mitgliedschaften durch Kommas getrennt angeben.
gcloud ConfigManagement
So deinstallieren Sie Policy Controller:
Bearbeiten Sie die Konfiguration des ConfigManagement Operator in der Datei
apply-spec.yaml
und setzen SiepolicyController.enabled
auffalse
.Wenden Sie die Änderungen in der Datei
apply-spec.yaml
an:gcloud beta container fleet 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.
ConfigManagement Operator entfernen
Wenn Sie Policy Controller über das Objekt ConfigManagement
installiert haben, müssen Sie auch den ConfigManagement Operator aus Ihren Clustern entfernen.
Um den ConfigManagement Operator zu entfernen, führen Sie die folgenden Befehle aus:
Löschen Sie das ConfigManagement-Objekt aus dem Cluster:
kubectl delete configmanagement --all
Die Ausführung dieses Befehls führt zu Folgendem:
- Alle vom ConfigManagement Operator im Cluster erstellten ClusterRoles und ClusterRoleBindings werden aus dem Cluster gelöscht.
- Alle vom ConfigManagement Operator installierten Zulassungs-Controller-Konfigurationen werden gelöscht.
- Der Inhalt des Namespace
config-management-system
wird gelöscht, mit Ausnahme des Secretsgit-creds
und für Versionen von Policy Controller ab 1.9.0 desconfig-management-operator
Deployments und desconfig-management-operator
-Pods. Der ConfigManagement Operator funktioniert ohne den Namespaceconfig-management-system
nicht. Alle vom ConfigManagement Operator-Controller erstellten oder geänderten CustomResourceDefinitions (CRDs) werden aus den Clustern entfernt, in denen sie erstellt oder geändert wurden. Die zur Ausführung des ConfigManagement Operator erforderliche CRD ist noch vorhanden, da sie aus der Perspektive von Kubernetes von dem Nutzer hinzugefügt wurde, der den ConfigManagement Operator installiert hat. Wie Sie diese Komponenten entfernen, erfahren Sie im nächsten Schritt.
Wenn Sie das
git-creds
-Secret beibehalten möchten, sorgen Sie jetzt dafür:kubectl -n config-management-system get secret git-creds -o yaml
Löschen Sie den Namespace
config-management-system
:kubectl delete ns config-management-system
Löschen Sie den Namespace
config-management-monitoring
:kubectl delete ns config-management-monitoring
Löschen Sie die ConfigManagement CustomResourceDefinition:
kubectl delete crd configmanagements.configmanagement.gke.io
Policy Controller-RBAC und -Berechtigungen
Policy Controller bietet Arbeitslasten mit hohen Berechtigungen. Die Berechtigungen für diese Arbeitslasten werden in der Dokumentation zum Open Policy Agent Gatekeeper beschrieben.
Policy Controller-Ressourcenanfragen
In der folgenden Tabelle sind die Kubernetes-Ressourcenanforderungen für jede unterstützte Version von Policy Controller aufgeführt. Die Ressourcenanfragen für den ConfigManagement Operator gelten nur, wenn Sie Policy Controller über das ConfigManagement
-Objekt installiert haben.
Komponente | CPU | Arbeitsspeicher |
---|---|---|
ConfigManagement Operator | 100 m | 100 Mi |
Policy Controller | 100 m | 256 Mi |
Nächste Schritte
- Allgemeines zu Policy Controller
- Weitere Informationen zu Policy Controller-Bundles
- Weitere Informationen zum Erstellen einer Einschränkung
- Fehlerbehebung bei Policy Controller.