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
- undNET_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:
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ßlichtrue
mit einem Kleinbuchstabent
) wird der Emulator deaktiviert.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