Habilitar el emulador IMDS

Esta página explica cómo habilitar el emulador IMDS, que emula el servicio de metadatos de instancias de AWS (IMDS). Puede ejecutar el emulador como complemento para permitir que las cargas de trabajo heredadas se ejecuten en GKE en grupos de nodos de AWS. Si tiene cargas de trabajo heredadas que no admiten directamente la Federación de Identidades de Cargas de Trabajo para GKE, use este emulador para acceder a los datos de IMDS.

Limitaciones

  • Su clúster debe utilizar una versión de Kubernetes 1.24 o posterior.
  • El emulador no es compatible con la generación anterior de GKE en AWS.
  • El servidor del emulador IMDS solo atiende solicitudes de credenciales ( API_VERSION/meta-data/iam/security-credentials/ ). Todas las demás solicitudes de metadatos devuelven un error 404.
  • Una implementación sidecar requiere que el contenedor init tenga las capacidades de contexto de seguridad NET_ADMIN y NET_RAW . Si no está seguro de si el contenedor tiene estos contextos, consulte a su equipo de seguridad.
  • El token de AWS STS puede durar una hora. El token de rol de los metadatos de EC2 puede durar 24 horas. Esto no debería afectar el uso del emulador, pero podría ser necesario conocer esta información durante una auditoría de seguridad.
  • El emulador IMDS solo emula respuestas IMDSv1. No es compatible con IMDSv2.

Habilitar el emulador

Para habilitar el emulador IMDS, agregue una etiqueta y una anotación a los metadatos de un pod. También puede habilitar el emulador mediante una implementación, un DaemonSet o cualquier otro recurso que cree pods:

  1. Agregue la siguiente etiqueta y valor a su Pod:

    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
    

    El único valor aceptable para esta etiqueta es True . Todos los demás valores (incluido true con t minúscula) desactivan el emulador.

  2. Añade la siguiente anotación a tu Pod:

    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
    

    Reemplace ARN_ROLE con un nombre de recurso de Amazon (ARN) que especifique el rol que desea que tenga el recurso.

Ejemplo

El siguiente ejemplo es un Pod con el emulador IMDS habilitado:

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