IMDS-Emulator aktivieren

Auf dieser Seite wird erläutert, wie Sie den IMDS-Emulator aktivieren, der den AWS-Instanzmetadatendienst (IMDS) emuliert. Sie können den Emulator als Sidecar ausführen, um die Ausführung älterer Arbeitslasten in GKE on AWS-Knotenpools zu ermöglichen. Wenn Sie ältere Arbeitslasten haben, die die Workload Identity Federation for GKE nicht direkt unterstützen, verwenden Sie diesen Emulator, um auf IMDS-Daten zuzugreifen.

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-Emulatorserver beantwortet nur Anmeldedatenanfragen (API_VERSION/meta-data/iam/security-credentials/). Bei allen anderen Metadatenanfragen wird der Fehler 404 zurückgegeben.
  • Für eine Sidecar-Bereitstellung muss der Init-Container die NET_ADMIN- und NET_RAW-Sicherheitskontextkapazitäten 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 24 Stunden gültig sein. Dies sollte sich nicht auf die Nutzung des Emulators auswirken. Diese Informationen können jedoch bei einer Sicherheitsprüfung erforderlich sein.
  • Der IMDS-Emulator emuliert nur IMDSv1-Antworten. IMDSv2 wird nicht unterstützt.

Emulator aktivieren

Wenn Sie den IMDS-Emulator aktivieren möchten, fügen Sie den Metadaten für einen Pod ein Label und eine Anmerkung hinzu. Sie können den Emulator auch mit einem Deployment, DaemonSet oder einer anderen Ressource aktivieren, mit der Pods erstellt werden:

  1. Fügen Sie dem 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. Bei allen anderen Werten (einschließlich true mit einem Kleinbuchstaben t) wird der Emulator deaktiviert.

  2. Fügen Sie dem 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

Im folgenden Beispiel ist der IMDS-Emulator für einen Pod aktiviert:

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