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
yNET_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:
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 (incluidotrue
con unat
en minúscula) inhabilitan el emulador.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