Berechtigte Arbeitslasten von GKE Autopilot-Partnern ausführen


Auf dieser Seite erfahren Sie, wie Sie privilegierte Arbeitslasten von GKE-Autopilot-Partnern (Google Kubernetes Engine) ausführen. Sie erfahren, wie Sie eine Synchronisierungsarbeitslast einrichten, die eine Zulassungsliste in Ihrem Cluster installiert und diese aktuell hält.

Diese Seite richtet sich an die folgenden Rollentypen:

  • Sicherheitsingenieure, die dafür sorgen möchten, dass Arbeitslasten von Drittanbietern in Ihren Clustern nur ausgeführt werden können, wenn sie auf einer Zulassungsliste stehen und aus von GKE genehmigten Quellen stammen.
  • Plattformentwickler, die Drittanbieter-Arbeitslasten in Clustern aktivieren möchten, um Anwendungsteams die Arbeit zu erleichtern.

Weitere Informationen zu den gängigen Rollen und Beispielaufgaben, auf die wir in unserer Dokumentation verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.

Machen Sie sich vor dem Lesen dieser Seite mit den folgenden Themen vertraut:

Berechtigte Partnerarbeitslasten in Autopilot

Mit GKE können eine Reihe von genehmigten Partnern Arbeitslasten mit erhöhten Berechtigungen in Autopilot-Clustern ausführen. Diese privilegierten Arbeitslasten können einige der Sicherheitseinschränkungen umgehen, die von Autopilot erzwungen werden. Ein Partner muss beispielsweise möglicherweise eine Arbeitslast ausführen, die bestimmte Linux-Funktionen verwendet oder einen privilegierten Container erfordert.

Partner erstellen und verwalten Zulassungslisten für ihre privilegierten Arbeitslasten. Jede Zulassungsliste ist eine Datei, die einer bestimmten privilegierten Partner-Workload entspricht. Partner reichen diese Zulassungslisten zur Genehmigung an GKE ein. Nach der Genehmigung wird die Zulassungsliste von GKE in einem von Google verwalteten Repository gehostet.

Wenn Sie eine Partnerarbeitslast ausführen möchten, installieren Sie die entsprechende Zulassungsliste in Ihrem Cluster. GKE bietet eine benutzerdefinierte Kubernetes-Ressource namens AllowlistSynchronizer, mit der Zulassungslisten installiert und auf dem neuesten Stand gehalten werden. Nachdem eine Zulassungsliste erfolgreich installiert wurde, können Sie die entsprechende Workload mit erhöhten Berechtigungen für den Partner bereitstellen.

Programmfehler und Funktionsanfragen für privilegierte Arbeitslasten und Zulassungslisten

Partner sind für die Erstellung, Entwicklung und Pflege ihrer privilegierten Arbeitslasten und Zulassungslisten verantwortlich. Wenn Sie einen Fehler finden oder eine Funktion für eine privilegierte Arbeitslast oder Zulassungsliste anfordern möchten, wenden Sie sich an den entsprechenden Partner.

AllowlistSynchronizer-Controller

Der AllowlistSynchronizer ist ein Controller, der in Ihrer GKE-Steuerungsebene ausgeführt wird. Sie stellen eine neue AllowlistSynchronizer als YAML-Manifest bereit, ähnlich wie bei jeder anderen Kubernetes-Arbeitslast. Geben Sie im Manifest den Pfad zur Zulassungsliste an, die Sie installieren möchten. Sie erhalten diese vom Drittanbieter. Der Synchronisierer sucht die Zulassungsliste des Partners in einem von Google verwalteten Repository und installiert die Zulassungsliste in Ihrem Cluster.

Alle 10 Minuten sucht der Synchronizer nach Updates der Zulassungsliste. Wenn ein Update vorhanden ist, installiert der Synchronizer die aktualisierte Zulassungsliste in Ihrem Cluster.

Wenn Sie bestimmte Arbeitslasten nicht mehr zulassen möchten, aktualisieren Sie vorhandene AllowlistSynchronizers, um die entsprechenden Dateipfade der Zulassungsliste zu entfernen, und löschen Sie dann das WorkloadAllowlist-Objekt aus Ihrem Cluster. Wenn Sie ein installiertes WorkloadAllowlist-Objekt löschen, ohne den Pfad aus dem Synchronisator der Zulassungsliste zu entfernen, installiert der Synchronisator die Zulassungsliste neu. Partner können Dateien aus der Zulassungsliste nicht aus dem von Google verwalteten Repository löschen.

Hinweise

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

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Voraussetzungen

  • Für die benutzerdefinierte Ressource AllowlistSynchronizer ist die GKE-Version 1.32.1-gke.1729000 oder höher erforderlich.
  • Sie müssen wissen, welche Partnerarbeitslast Sie in Ihrem Cluster ausführen möchten. Eine Anleitung zum Installieren der privilegierten Arbeitslast finden Sie in der Dokumentation Ihres Partners.

Erstellen Sie eine neue AllowlistSynchronizer

Wenn Sie eine privilegierte Arbeitslast von einem Partner ausführen möchten, fügen Sie den Pfad zur entsprechenden Zulassungsliste einer benutzerdefinierten AllowlistSynchronizer-Ressource hinzu. Anschließend stellen Sie den AllowlistSynchronizer in Ihrem Cluster bereit.

  1. Erstellen Sie in einem Texteditor eine neue YAML-Datei.
  2. Fügen Sie der YAML-Datei den folgenden Inhalt hinzu:

    apiVersion: auto.gke.io/v1
    kind: AllowlistSynchronizer
    metadata:
      name: ALLOWLIST_SYNCHRONIZER_NAME
    spec:
      allowlistPaths:
      - ALLOWLIST1_PATH
      - ALLOWLIST2_PATH
    

    Ersetzen Sie Folgendes:

    • ALLOWLIST_SYNCHRONIZER_NAME: Name des neuen Synchronizers. Wählen Sie einen aussagekräftigen Namen aus, der die Arbeitslast oder das Team identifiziert, das von der Zulassungsliste unterstützt wird.
    • ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...: Ein oder mehrere Pfade zu zu installierenden Partner-Zulassungslistendateien. Lesen Sie die Dokumentation für die Arbeitslast des ausgewählten Partners für diesen Pfad. Sie können ganze Verzeichnisse oder einzelne Dateien angeben.
  3. Stellen Sie die YAML-Datei im Cluster bereit:

    kubectl apply -f PATH_TO_YAML_FILE
    

    Ersetzen Sie PATH_TO_YAML_FILE durch den Pfad zur YAML-Datei, die Sie im vorherigen Schritt erstellt haben.

    Der AllowlistSynchronizer-Controller installiert Zulassungslistendateien aus den angegebenen Pfaden in Ihrem Cluster.

  4. Warten Sie, bis der Synchronisierer den Status Ready anzeigt:

    kubectl wait --for=condition=Ready allowlistsynchronizer/ALLOWLIST_SYNCHRONIZER_NAME \
      --timeout=60s
    

Sie können die Bereitstellung von Partnerarbeitslasten auch in Ihre CI/CD-Pipeline (Continuous Integration/Continuous Deployment) einbinden. Konfigurieren Sie Ihren Workflow so, dass er wartet, bis die Zulassungsliste erfolgreich installiert wurde, bevor die entsprechende Arbeitslast bereitgestellt wird.

Vorhandenen AllowlistSynchronizer aktualisieren

Sie können einen vorhandenen AllowlistSynchronizer aktualisieren, um Zulassungslistendateien hinzuzufügen oder zu entfernen. In folgenden Fällen können Sie vorhandene Synchronisierer aktualisieren:

  • Der Partner fügt eine neue Zulassungsliste mit einem anderen Namen hinzu.
  • Sie möchten einem vorhandenen Synchronisierer, der zugehörige Zulassungslisten gruppiert, eine neue Zulassungsliste für Arbeitslasten hinzufügen.
  • Sie möchten eine Zulassungsliste aus einem Synchronisierer entfernen, weil Sie die entsprechende Arbeitslast nicht mehr verwenden möchten.

So aktualisieren Sie ein vorhandenes AllowlistSynchronizer-Objekt:

  1. Listen Sie die vorhandenen Synchronisierer in Ihrem Cluster auf:

    kubectl get allowlistsynchronizer
    
  2. Öffnen Sie die Spezifikation des Synchronizers, den Sie aktualisieren möchten, in einem Texteditor.

  3. Aktualisieren Sie das Feld spec.allowlistPaths, um Dateipfade zur Zulassungsliste hinzuzufügen, zu ändern oder zu entfernen.

  4. Speichern Sie die Datei und schließen Sie den Texteditor.

  5. Aktualisierte Konfiguration auf den Cluster anwenden:

    kubectl apply -f PATH_TO_YAML_FILE
    

    Ersetzen Sie PATH_TO_YAML_FILE durch den Pfad zur YAML-Datei, die Sie im vorherigen Schritt aktualisiert haben.

Wenn Sie eine aktualisierte Synchronisierungskonfiguration bereitstellen, wird das Feld managedAllowlistStatus.generation im Status des AllowlistSynchronizer-Objekts um eins erhöht. Der AllowlistSynchronizer-Controller wendet dann Ihre Änderungen an.

Status der Zulassungsliste überwachen

Nachdem Sie einen AllowlistSynchronizer installiert oder einen vorhandenen Synchronisierer aktualisiert haben, können Sie den Synchronisierungsstatus beobachten. Anhand des Status können Sie die Installation, Entfernung oder Änderung von Zulassungslistendateien sowie eventuell auftretende Fehler nachverfolgen.

Führen Sie den folgenden Befehl aus, um den allgemeinen Status der Synchronisierung zu überwachen:

kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml

Die Ausgabe sieht in etwa so aus:

...
status:
  conditions:
  - type: Ready
    status: "False"
    reason: "SyncError"
    message: "some allowlists failed to sync: example-allowlist-1.yaml"
    lastTransitionTime: "2024-10-12T10:00:00Z"
    observedGeneration: 2
  managedAllowlistStatus:
    - filePath: "gs://path/to/allowlist1.yaml"
      generation: 1
      phase: Installed
      lastSuccessfulSync: "2024-10-10T10:00:00Z"
    - filePath: "gs://path/to/allowlist2.yaml"
      phase: Failed
      lastError: "Initial install failed: invalid contents"
      lastSuccessfulSync: "2024-10-08T10:00:00Z"

Eine Beschreibung dieser Felder finden Sie unter AllowlistSynchronizer-Status.

Prüfen, ob in Ihrem Cluster eine Zulassungsliste vorhanden ist

Führen Sie den folgenden Befehl aus, um zu prüfen, ob in Ihrem Cluster eine Zulassungsliste vorhanden ist:

kubectl get workloadallowlist

Die Ausgabe ist eine Liste der installierten Zulassungslisten im Cluster. Prüfen Sie, ob die Ausgabe die Zulassungsliste enthält, die Sie verwenden möchten.

Berechtigte Arbeitslast bereitstellen

Nachdem eine Zulassungsliste erfolgreich installiert wurde, können Sie die entsprechende Arbeitslast in Ihrem Cluster bereitstellen. Der Partner, der die Arbeitslast bereitstellt, sollte Ihnen auch eine Installationsanleitung für die Arbeitslast zur Verfügung stellen. Eine Liste der Autopilot-Partner und Links zu deren Dokumentation finden Sie unter Autopilot-Partner.

Arbeitslast mit erhöhten Berechtigungen löschen

Wenn Sie nicht mehr zulassen möchten, dass eine privilegierte Arbeitslast in Ihren Clustern ausgeführt wird, entfernen Sie den Pfad zur entsprechenden Zulassungsliste aus Ihrem AllowlistSynchronizer. Der Synchronizer deinstalliert die Zulassungsliste.

Wenn Sie ein WorkloadAllowlist-Objekt aus Ihrem Cluster löschen, anstatt den Synchronisierer zu aktualisieren, installiert der Synchronisierer die Zulassungsliste neu. Entfernen Sie den Pfad aus dem AllowlistSynchronizer.

So deinstallieren Sie eine Zulassungsliste:

  1. Entfernen Sie im YAML-Manifest für die AllowlistSynchronizer, die die Zulassungsliste verwaltet, den Pfad zur Zulassungsliste, die Sie deinstallieren möchten. Eine Anleitung dazu finden Sie im Abschnitt Vorhandenen AllowlistSynchronizer aktualisieren.
  2. Rufen Sie eine Liste der WorkloadAllowlist-Objekte in Ihrem Cluster ab, um zu prüfen, ob die Zulassungsliste deinstalliert wurde:

    kubectl get workloadallowlist
    

    Die Zulassungsliste, die Sie entfernen wollten, darf in der Ausgabe nicht angezeigt werden.

  3. Löschen Sie die Arbeitslast aus Ihrem Cluster. Eine Anleitung finden Sie in der Dokumentation des Arbeitslastanbieters.

Installation über Zulassungslisten in Ihren Clustern verhindern

Wenn Sie die Installation von Zulassungslisten für privilegierte Arbeitslasten in bestimmten Clustern verhindern möchten, verwenden Sie eine ValidatingAdmissionPolicy. Durch die Validierung von Zulassungsrichtlinien wird sichergestellt, dass Kubernetes-Ressourcen bestimmte Kriterien erfüllen, bevor sie im Cluster ausgeführt werden dürfen. So können Sie beispielsweise prüfen, ob ein Label einen bestimmten Wert hat.

So verhindern Sie die Installation von Zulassungslisten in einem Cluster:

  1. Speichern Sie das folgende ValidatingAdmissionPolicy-Manifest als disallow-allowlists.yaml:

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicy
    metadata:
      name: "disallow-allowlists"
    spec:
      failurePolicy: Fail
      matchConstraints:
        resourceRules:
        - apiGroups:   ["auto.gke.io"]
          apiVersions: ["*"]
          operations:  ["*"]
          resources:   ["allowlistsynchronizers"]
      validations:
      - expression: "false"
        message: 'AllowlistSynchronizer creation is not allowed'
    
  2. Speichern Sie das folgende ValidatingAdmissionPolicyBinding-Manifest als disallow-allowlists-binding.yaml:

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicyBinding
    metadata:
      name: "disallow-allowlists-binding"
    spec:
      policyName: "disallow-allowlists"
      validationActions: [Deny]
    
  3. Stellen Sie die ValidatingAdmissionPolicy in Ihrem Cluster bereit:

    kubectl apply -f disallow-allowlists.yaml
    kubectl apply -f disallow-allowlists-binding.yaml
    

Mit dieser Richtlinie wird das Erstellen neuer AllowlistSynchronizers im Cluster verhindert.

Fehlerbehebung

Wenn die Synchronisierung oder Bereitstellung der Arbeitslast fehlschlägt, lesen Sie den Hilfeartikel Fehlerbehebung beim Bereitstellen von Autopilot-Arbeitslasten mit Berechtigungen.

Nächste Schritte