IMDS-Emulator aktivieren

Auf dieser Seite wird erläutert, wie Sie den IMDS-Emulator aktivieren, der den AWS Instance Metadata Service (IMDS) emuliert. Sie können den Emulator als Sidecar ausführen, damit Legacy-Arbeitslasten in GKE on AWS-Knotenpools ausgeführt werden können. Wenn Sie Legacy-Arbeitslasten haben, die die Workload Identity Federation for GKE nicht direkt unterstützen, können Sie mit diesem Emulator auf IMDS-Daten zugreifen.

Beschränkungen

  • Ihr Cluster muss die Kubernetes-Version 1.24 oder höher verwenden.
  • Der Emulator wird in der vorherigen Generation von GKE on AWS nicht unterstützt.
  • Der IMDS-Emulator-Server verarbeitet nur Anfragen für Anmeldedaten (API_VERSION/meta-data/iam/security-credentials/). Bei allen anderen Metadatenanfragen wird ein 404-Fehler zurückgegeben.
  • Für die Bereitstellung eines Sidecars muss der Init-Container die NET_ADMIN- und NET_RAW-Sicherheitskontextfunktionen haben. Wenn Sie sich nicht sicher sind, ob der Container diese Kontexte hat, wenden Sie sich an Ihr Sicherheitsteam.
  • Das AWS STS-Token kann eine Stunde lang gültig sein. Das Rollentoken aus den EC2-Metadaten kann bis zu 24 Stunden gültig sein. Dies sollte sich nicht auf die Verwendung des Emulators auswirken, aber möglicherweise benötigen Sie diese Informationen bei einer Sicherheitsüberprüfung.
  • Der IMDS-Emulator emuliert nur IMDSv1-Antworten. IMDSv2 wird nicht unterstützt.

Emulator aktivieren

Um den IMDS-Emulator zu aktivieren, fügen Sie den Metadaten für einen Pod ein Label und eine Annotation hinzu. Sie können den Emulator auch mit einem Deployment, einem DaemonSet oder einer anderen Ressource aktivieren, die Pods erstellt:

  1. Fügen Sie Ihrem Pod das folgende Label und den folgenden Wert hinzu:

    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
    

    Der einzige zulässige Wert für dieses Label ist True. Alle anderen Werte (einschließlich true mit einem Kleinbuchstaben t) deaktivieren den Emulator.

  2. Fügen Sie Ihrem Pod die folgende Annotation hinzu:

    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
    

    Ersetzen Sie ARN_ROLE durch einen Amazon Resource Name (ARN), der die Rolle angibt, die die Ressource haben soll.

Beispiel

Das folgende Beispiel zeigt einen Pod mit aktiviertem IMDS-Emulator:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
  annotations:
    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: "arn:aws:iam::123456789012:role/my-example-role"
spec:
 serviceAccountName: my-sa
 containers:
 - name: nginx
   image: nginx