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:
- Benutzerdefinierte Kubernetes-Ressourcen
- Sicherheitseinschränkungen von GKE Autopilot
- GKE Autopilot-Partner
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.
- Erstellen Sie in einem Texteditor eine neue YAML-Datei.
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.
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.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:
Listen Sie die vorhandenen Synchronisierer in Ihrem Cluster auf:
kubectl get allowlistsynchronizer
Öffnen Sie die Spezifikation des Synchronizers, den Sie aktualisieren möchten, in einem Texteditor.
Aktualisieren Sie das Feld
spec.allowlistPaths
, um Dateipfade zur Zulassungsliste hinzuzufügen, zu ändern oder zu entfernen.Speichern Sie die Datei und schließen Sie den Texteditor.
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:
- 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. 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.
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:
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'
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]
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
- GKE Autopilot-Partner
- Sicherheitsfunktionen von GKE Autopilot
- Benutzerdefinierte Ressourcendefinition für AllowlistSynchronizer