Activer l'émulateur IMDS

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 anciennes charges de travail de s'exécuter dans GKE sur des pools de nœuds 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 et NET_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 :

  1. 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 compris true avec un t minuscule) désactive l'émulateur.

  2. 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