Ativar o emulador do IMDS

Saiba como ativar o emulador do IMDS, que emula o serviço de metadados de instância da AWS (IMDS). É possível usar o emulador como um arquivo secundário para permitir que as cargas de trabalho legadas sejam executadas em em pools de nós do GKE na AWS. Se você tiver cargas de trabalho legadas que não suportam diretamente a Identidade da carga de trabalho, use esse emulador para acessar os dados do IMDS.

Limitações

  • O cluster precisa usar a versão 1.24 ou mais recente do Kubernetes.
  • O emulador não é compatível com a geração anterior do GKE na AWS.
  • O servidor do emulador do IMDS atende somente solicitações de credenciais (API_VERSION/meta-data/iam/security-credentials/). As demais solicitações de metadados retornam um erro 404.
  • Uma implantação de arquivo secundário exige que o contêiner de inicialização tenha as capacidades de contexto de segurança NET_ADMIN e NET_RAW. Se você não souber se o contêiner tem esses contextos, consulte a sua equipe de segurança.
  • O token STS da AWS pode durar uma hora. O token de papel dos metadados do EC2 pode durar 24 horas. Isso não afeta o uso do emulador, mas talvez seja necessário saber isso durante uma auditoria de segurança.
  • O emulador do IMDS emula apenas respostas do IMDSv1. O IMDSv2 não é suportado.

Ativar o emulador

Para ativar o emulador do IMDS, adicione um identificador e uma anotação aos metadados de um pod. Você também pode ativar o emulador usando um Deployment, DaemonSet ou qualquer recurso que crie pods:

  1. Adicione o seguinte identificador e valor ao seu pod:

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

    O único valor aceitável para esse identificador é True. Os demais valores, incluindo true com t minúsculo, desativam o emulador.

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

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

    Substitua ARN_ROLE por um Nome de recurso da Amazon (ARN, na sigla em inglês) que especifique o papel que o recurso deve ter.

Exemplo

O exemplo a seguir é um pod 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