Auf dieser Seite wird erläutert, wie Sie ein Container-Image in einem GKE-Cluster (in
Google Cloud oder Google Distributed Cloud) bereitstellen, in dem die Binärautorisierung aktiviert ist.
Die kubectl-Befehle, die Sie zum Bereitstellen des Images verwenden, sind mit denen identisch, die Sie zum Bereitstellen von Images in Clustern ohne Binärautorisierung verwenden.
Hinweise
Achten Sie darauf, dass die Binärautorisierung in Ihrem Projekt und ein GKE-Cluster mit aktivierter Binärautorisierung aktiviert ist. Informationen finden Sie unter Binärautorisierung in Google Kubernetes Engine einrichten oder Binärautorisierung in Distributed Cloud einrichten.
Installieren Sie kubectl für die Interaktion mit GKE.
kubectl konfigurieren
Sie müssen für Ihre kubectl-Installation die lokale Datei kubeconfig aktualisieren.
Damit werden die Anmeldedaten und Endpunktinformationen bereitgestellt, die für den Zugriff auf den Cluster in GKE oder Distributed Cloud erforderlich sind.
Führen Sie den folgenden gcloud-Befehl aus, um kubectl zu konfigurieren:
GKE
gcloud container clusters get-credentials \
--zone ZONE \
CLUSTER_NAME
Ersetzen Sie Folgendes:
- ZONE ist der Name der GKE-Zone, in der der Cluster ausgeführt wird, z. B.
us-central1-a - CLUSTER_NAME ist der Name des Clusters.
Distributed Cloud
gcloud container fleet memberships get-credentials \
--location LOCATION \
MEMBERSHIP_NAME
Ersetzen Sie Folgendes:
- LOCATION: der Standort der Flottenmitgliedschaft des GKE-Cluster, z. B.
global - MEMBERSHIP_NAME: der Name der Flottenmitgliedschaft des GKE-Cluster
Container-Image bereitstellen
Stellen Sie das Container-Image so bereit:
Konfigurieren Sie Umgebungsvariablen:
POD_NAME=POD_NAME IMAGE_PATH=IMAGE_PATH IMAGE_DIGEST=IMAGE_DIGESTErsetzen Sie Folgendes:
- POD_NAME: ist der Name, den Sie für die GKE-Arbeitslast verwenden möchten.
- IMAGE_PATH: Pfad des Images in Artifact Registry oder einer anderen Registry.
IMAGE_DIGEST: Der Digest des Image-Manifests. Beispiel:
- Artifact Registry:
- Pfad:
us-docker.pkg.dev/google-samples/containers/gke/hello-app - Digest:
sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
- Pfad:
Wie Sie den Digest eines Images in Artifact Registry erhalten, erfahren Sie unter Images verwalten.
- Artifact Registry:
Stellen Sie das Image mit dem Befehl
kubectl runbereit.Sie müssen das Image mit dem Digest anstelle eines Tags wie
1.0oderlatestbereitstellen, da die Binärautorisierung den Digest zur Suche nach Attestierungen verwendet.Führen Sie den folgenden
kubectl-Befehl aus, um das Image bereitzustellen:kubectl run ${POD_NAME} \ --image ${IMAGE_PATH}@${IMAGE_DIGEST}Prüfen Sie, ob das Deployment durch die Binärautorisierung blockiert wurde:
kubectl get pods
Der Pod wird angezeigt.
Fail-Open
Wenn GKE den Server für die Binärautorisierung aus irgendeinem Grund nicht erreichen kann oder der Server einen Fehler zurückgibt, kann GKE nicht feststellen, ob die Binärautorisierung das Image zulassen oder ablehnen würde. In diesem Fall erfolgt in GKE ein Fail-Open: Das Image wird standardmäßig bereitgestellt. Es wird aber ein Logeintrag in den Cloud-Audit-Logs erstellt, um aufzuzeichnen, warum das Image zugelassen wurde.
Die GKE-Erzwingung führt zu einem Fail-Open aufgrund eines Kompromisses zwischen Zuverlässigkeit und Sicherheit. GKE sendet eine Anfrage an die Binärautorisierung, wenn ein Pod erstellt oder aktualisiert wird. Dies gilt auch für Szenarien, in denen Pods automatisch von Kubernetes-Arbeitslastcontrollern höherer Ebene wie ReplicaSets und StatefulSets erstellt oder aktualisiert werden. Wenn in GKE ein Fail-Closed statt eines Fail-Open erfolgt, würde jeder Ausfall der Binärautorisierung die Ausführung dieser Pods stoppen. Wenn Pods abgelehnt werden, kann ein Failover außerdem zu kaskadierenden Fehlern führen, da umgeleiteter Traffic Pods überlastet, die noch ausgeführt werden. Jeder Ausfall der Binärautorisierung kann einen vollständigen Ausfall Ihres Clusters auslösen, auch ohne dass neue Images bereitgestellt werden.
Wenn Sie beispielsweise testen möchten, ob die Binärautorisierung ein Image ablehnt, indem Sie versuchen, dieses Image wiederholt schnell bereitzustellen, wird das Image zugelassen, wenn das Kontingent überschritten wird. Bei Bedarf können Sie zusätzliches Kontingent anfordern.Images bereitstellen, die gegen die Richtlinie verstoßen
Die Binärautorisierung unterstützt ein Feature mit dem Namen Break-Glass, mit dem ein Image bereitgestellt werden kann, auch wenn es gegen die Richtlinie verstößt.
Weitere Informationen finden Sie unter Break-Glass verwenden.
Bereinigen
Löschen Sie zum Bereinigen den Pod mit dem folgenden Befehl:
kubectl delete pod ${POD_NAME}
Nächste Schritte
- Probelaufmodus
- CV verwenden
- Erfahren Sie, wie Sie die kontinuierliche Legacy-Validierung verwenden (eingestellt).
- Image-Digests in Kubernetes-Manifesten verwenden