Cette page explique comment activer l'émulateur IMDS, qui émule le service de métadonnées d'instance AWS (IMDS, Instance Metadata Service). Vous pouvez exécuter l'émulateur en tant que side-car pour permettre aux charges de travail anciennes de s'exécuter dans des pools de nœuds GKE sur AWS. Si vous avez des charges de travail anciennes qui ne sont pas directement compatibles avec Workload Identity, utilisez cet émulateur pour accéder aux données IMDS.
Limites
- Votre cluster doit utiliser la version 1.24 ou ultérieure de Kubernetes.
- L'émulateur n'est pas compatible avec la génération précédente de GKE sur AWS.
- Le serveur d'émulateur IMDS traite uniquement les requêtes d'identifiants (
API_VERSION/meta-data/iam/security-credentials/
). Toute autre requête de métadonnées renvoie une erreur 404. - Un déploiement side-car nécessite que le conteneur init dispose des capacités de contexte de sécurité
NET_ADMIN
etNET_RAW
. Si vous n'êtes pas sûr que le conteneur dispose de ces contextes, consultez votre équipe de sécurité. - Le jeton STS AWS peut durer une heure. Le jeton de rôle provenant des métadonnées EC2 peut durer 24 heures. Cela ne devrait pas affecter votre utilisation de l'émulateur, mais ce sont des informations que vous devrez peut-être connaître lors d'un audit de sécurité.
- L'émulateur IMDS émule uniquement les réponses IMDSv1. IMDSv2 n'est pas pris en charge.
Activer l'émulateur
Pour activer l'émulateur IMDS, ajoutez une étiquette et une annotation aux métadonnées d'un pod. Vous pouvez également activer l'émulateur à l'aide d'un déploiement, d'un DaemonSet ou de toute autre ressource qui crée des pods :
Ajoutez l'étiquette et la valeur suivantes à votre pod :
gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
La seule valeur acceptable pour cette étiquette est
True
. Toute autre valeur (y compristrue
avec unt
minuscule) désactive l'émulateur.Ajoutez l'annotation suivante à votre pod :
gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
Remplacez
ARN_ROLE
par un nom de ressource Amazon (ARN) qui spécifie le rôle que vous souhaitez attribuer à la ressource.
Exemple
L'exemple suivant présente un pod avec l'émulateur IMDS activé :
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