Namespaces aus Policy Controller ausschließen

Auf dieser Seite wird beschrieben, wie ausgenommene Namespaces in Policy Controller konfiguriert werden.

Wird ein Namespace als “ausgenommen” bestimmt, so wird er aus der Zulassungs-Webhook-Erzwingung mit Policy Controller entfernt. Verstöße werden jedoch weiterhin in Audit vermerkt. Wenn Sie keine Namespaces konfigurieren, ist nur der Namespace gatekeeper-system als von der Erzwingung des Policy Controller-Zulassungs-Webhooks ausgenommen präkonfiguriert.

Ausgenommene Namespaces konfigurieren

Durch Konfigurieren eines ausnahmefähigen Namespace können Sie das Label admission.gatekeeper.sh/ignore anwenden, um den Namespace von der Erzwingung des Policy Controller-Zulassungs-Webhooks auszunehmen. Wenn Sie später einen ausgenommenen Namespace entfernen, entfernt Policy Controller das Label admission.gatekeeper.sh/ignore nicht aus dem Namespace.

Namespaces von der Erzwingung ausnehmen

Sie können Namespaces während der Installation von Policy Controller oder nach der Installation ausschließen. Der folgende Prozess zeigt, wie Sie Namespaces nach der Installation ausschließen.

Console

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite GKE Enterprise-Richtlinie auf.

    Zur Richtlinie

  2. Wählen Sie auf dem Tab Einstellungen in der Clustertabelle in der Spalte Konfiguration bearbeiten die Option Bearbeiten aus.
  3. Maximieren Sie das Menü Policy Controller-Konfiguration bearbeiten.
  4. Geben Sie im Feld Ausnahmefähige Namespaces eine Liste gültiger Namespaces an. Objekte in diesen Namespaces werden von allen Richtlinien ignoriert. Die Namespaces müssen noch nicht vorhanden sein.
  5. Wählen Sie Änderungen speichern aus.

gcloud Policy Controller

Führen Sie den folgenden Befehl aus, um der Liste der Namespaces Namespaces hinzuzufügen, die vom Zulassungs-Webhook von der Erzwingung ausgenommen werden können:

  gcloud container fleet policycontroller update \
    --memberships=MEMBERSHIP_NAME \
    --exemptable-namespaces=[NAMESPACE_LIST]

Ersetzen Sie Folgendes:

  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters, für den Namespaces ausgenommen werden sollen. Sie können mehrere Mitgliedschaften durch Kommas getrennt angeben.
  • NAMESPACE_LIST: Kommagetrennte Liste der Namespaces, für die Policy Controller von der Erzwingung ausgenommen werden soll.

Mit diesem Befehl werden nur Ressourcen vom Zulassungs-Webhook ausgenommen. Die Ressourcen werden weiterhin geprüft. Wenn Sie stattdessen Namespaces vom Audit ausschließen möchten, legen Sie die Ausnahme auf Richtlinien-Bundle-Ebene fest:

  gcloud container fleet policycontroller content bundles set BUNDLE_NAME \
    --memberships=MEMBERSHIP_NAME \
    --exempted-namespaces=[NAMESPACE_LIST]

Ersetzen Sie Folgendes:

  • BUNDLE_NAME durch den Namen des Richtlinien-Bundles, das Sie mit ausgenommenen Namespaces aktualisieren möchten.
  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters, für den Namespaces ausgenommen werden sollen. Sie können mehrere Mitgliedschaften durch Kommas getrennt angeben.
  • NAMESPACE_LIST: Kommagetrennte Liste der Namespaces, für die Policy Controller von der Erzwingung ausgenommen werden soll.

gcloud-ConfigManagement

  1. Um einen Namespace von der Erzwingung auszunehmen, fügen Sie den Namen des Namespace zu spec.policyController.exemptableNamespaces hinzu:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["NAMESPACE_NAME"]
    ...
    

    Ersetzen Sie NAMESPACE_NAME durch den Namen des Namespace, den Sie von der Erzwingung ausnehmen möchten.

    Sie können auch für mehrere Namespaces eine Ausnahme festlegen. Um beispielsweise die Namespaces not-applicable und also-not-applicable hinzuzufügen, wenden Sie das folgende Manifest an:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      # Set to true to install and enable Policy Controller
      policyController:
        enabled: true
        exemptableNamespaces: ["not-applicable","also-not-applicable"]
    ...
    
  2. Wenden Sie die Änderungen auf 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: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten. Wenn Sie den Cluster in der Google Cloud Console registriert haben, entspricht der Name der Mitgliedschaft dem Namen Ihres Clusters.
    • CONFIG_YAML: Fügen Sie den Pfad zur Datei apply-spec.yaml hinzu.
    • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.
  3. Kennzeichnen Sie den ausnahmefähigen Namespace mit einem Label, damit der Zulassungs-Webhooks von Policy Controller keine Inhalte erzwingt:

    kubectl label namespace NAMESPACE_NAME "admission.gatekeeper.sh/ignore=true"
    

    Ersetzen Sie NAMESPACE_NAME durch den Namen des Namespace, den Sie von der Erzwingung ausnehmen möchten.

Namespaces, die von der Erzwingung ausgenommen werden sollen

Dies sind verschiedene Namespaces, die von Google Kubernetes Engine (GKE) und zugehörigen Produkten erstellt werden können. Es empfiehlt sich, diese von der Erzwingung auszunehmen, um unerwünschte Auswirkungen zu vermeiden:

- anthos-creds
- anthos-identity-service
- apigee
- apigee-system
- asm-system
- capi-kubeadm-bootstrap-system
- capi-system
- cert-manager
- cnrm-system
- config-management-monitoring
- config-management-system
- gke-connect
- gke-gmp-system
- gke-managed-cim
- gke-managed-filestorecsi
- gke-managed-metrics-server
- gke-managed-system
- gke-system
- gmp-public
- gmp-system
- hnc-system
- istio-system
- kube-node-lease
- kube-public
- kube-system
- poco-trial
- resource-group-system
- vm-system