Habilita el emulador de IMDS

En esta página, se explica cómo puedes habilitar el emulador de IMDS, que emula el servicio de metadatos de la instancia de AWS (IMDS). Puedes ejecutar el emulador como un archivo adicional para permitir que las cargas de trabajo heredadas se ejecuten en grupos de nodos de GKE en AWS. Si tienes cargas de trabajo heredadas que no admiten Workload Identity directamente, usa este emulador para acceder a los datos de IMDS.

Limitaciones

  • Tu clúster debe usar la versión 1.24 de Kubernetes o posterior.
  • El emulador no es compatible con la generación anterior de GKE en AWS.
  • El servidor del emulador de IMDS solo entrega solicitudes de credenciales (API_VERSION/meta-data/iam/security-credentials/). Todas las demás solicitudes de metadatos devuelven un error 404.
  • Una implementación de sidecar requiere que el contenedor init tenga las capacidades de contexto de seguridad NET_ADMIN y NET_RAW. Si no estás seguro de si el contenedor tiene estos contextos, consulta a tu 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 es posible que debas saber esta información durante una auditoría de seguridad.
  • El emulador de IMDS solo emula las respuestas de IMDSv1. IMDSv2 no es compatible.

Habilita el emulador

Para habilitar el emulador de IMDS, agrega una etiqueta y una anotación a los metadatos de un Pod. También puedes habilitar el emulador mediante Deployment, DaemonSet o cualquier otro recurso que cree pods:

  1. Agrega la siguiente etiqueta y valor a tu 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 una t en minúscula) inhabilitan el emulador.

  2. Agrega la siguiente anotación al Pod:

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

    Reemplaza ARN_ROLE por un Amazon Resource Name (ARN) que especifique la función que deseas que tenga el recurso.

Ejemplo

El siguiente ejemplo es un Pod con el emulador de 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