Habilitar o emulador IMDS

Esta página explica como habilitar o emulador IMDS, que emula o serviço de metadados de instância da AWS (IMDS). Você pode executar o emulador como um sidecar para habilitar a execução de cargas de trabalho legadas no GKE em pools de nós da AWS. Se você tiver cargas de trabalho legadas que não oferecem suporte direto à Federação de Identidade de Carga de Trabalho para o GKE, use este emulador para acessar os dados do IMDS.

Limitações

  • Seu cluster deve usar uma versão do Kubernetes 1.24 ou posterior.
  • O emulador não é compatível com a geração anterior do GKE na AWS.
  • O servidor emulador IMDS atende apenas solicitações de credenciais ( API_VERSION/meta-data/iam/security-credentials/ ). Todas as outras solicitações de metadados retornam um erro 404.
  • Uma implantação sidecar requer que o contêiner init tenha os recursos de contexto de segurança NET_ADMIN e NET_RAW . Se não tiver certeza se o contêiner possui esses contextos, consulte sua equipe de segurança.
  • O token AWS STS pode durar uma hora. O token de função dos metadados do EC2 pode durar 24 horas. Isso não deve afetar o uso do emulador, mas talvez você precise dessas informações durante uma auditoria de segurança.
  • O emulador IMDS emula apenas respostas IMDSv1. IMDSv2 não é suportado.

Habilitar o emulador

Para habilitar o emulador IMDS, adicione um rótulo e uma anotação aos metadados de um Pod. Você também pode habilitar o emulador usando uma Implantação, um DaemonSet ou qualquer outro recurso que crie Pods:

  1. Adicione o seguinte rótulo e valor ao seu Pod:

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

    O único valor aceitável para este rótulo é True . Todos os outros valores (incluindo true com t minúsculo) desabilitam 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 você deseja que o recurso tenha.

Exemplo

O exemplo a seguir é um Pod com o 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