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
- undNET_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:
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ßlichtrue
mit einem Kleinbuchstabent
) deaktivieren den Emulator.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