Ative o emulador IMDS

Esta página explica como pode ativar o emulador do IMDS, que emula o serviço de metadados de instâncias (IMDS) da AWS. Pode executar o emulador como um sidecar para permitir que as cargas de trabalho antigas sejam executadas em pools de nós do GKE no AWS. Se tiver cargas de trabalho antigas que não suportem a Workload Identity Federation para o GKE diretamente, use este emulador para aceder aos dados do IMDS.

Limitações

  • O cluster tem de usar uma versão do Kubernetes 1.24 ou posterior.
  • O emulador não é suportado na geração anterior do GKE no AWS.
  • O servidor do emulador do IMDS apenas processa pedidos de credenciais (API_VERSION/meta-data/iam/security-credentials/). Todos os outros pedidos de metadados devolvem um erro 404.
  • Uma implementação de sidecar requer que o contentor init tenha as NET_ADMIN e NET_RAW capacidades do contexto de segurança. Se não tiver a certeza de que o contentor tem estes contextos, consulte a sua equipa de segurança.
  • O token do AWS STS pode durar uma hora. O token de função dos metadados do EC2 pode durar 24 horas. Isto não deve afetar a sua utilização do emulador, mas pode precisar de saber estas informações durante uma auditoria de segurança.
  • O emulador IMDS apenas emula respostas IMDSv1. O IMDSv2 não é suportado.

Ative o emulador

Para ativar o emulador do IMDS, adicione uma etiqueta e uma anotação aos metadados de um pod. Também pode ativar o emulador através de uma implementação, um DaemonSet ou qualquer outro recurso que crie pods:

  1. Adicione a seguinte etiqueta e valor ao seu Pod:

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

    O único valor aceitável para esta etiqueta é True. Todos os outros valores (incluindo true com um t em minúsculas) desativam o emulador.

  2. Adicione a seguinte anotação ao seu pod:

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

    Substitua ARN_ROLE por um nome de recurso da Amazon (ARN) que especifique a função que quer que o recurso tenha.

Exemplo

O exemplo seguinte é um agrupamento com o emulador do IMDS ativado:

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