Attiva l'emulatore IMDS

In questa pagina viene spiegato come abilitare l'emulatore IMDS, che emula il servizio di metadati delle istanze AWS (IMDS). Puoi eseguire l'emulatore come file collaterale per consentire l'esecuzione dei carichi di lavoro legacy in GKE su pool di nodi AWS. Se hai carichi di lavoro legacy che non supportano direttamente Workload Identity, utilizza questo emulatore per accedere ai dati IMDS.

Limitazioni

  • Il cluster deve utilizzare Kubernetes 1.24 o versioni successive.
  • L'emulatore non è supportato nella generazione precedente di GKE su AWS.
  • L'emulatore server IMDS gestisce soltanto le richieste di credenziali (API_VERSION/meta-data/iam/security-credentials/). Tutte le altre richieste di metadati restituiscono un errore 404.
  • Un deployment collaterale richiede che il container init abbia le capacità relative al contesto di sicurezza NET_ADMIN e NET_RAW. Se non hai la certezza che il container abbia questi contesti, consulta il team di sicurezza.
  • Il token AWS STS può durare un'ora. Il token del ruolo dei metadati EC2 può durare fino a 24 ore. Ciò non dovrebbe influire sul tuo utilizzo dell'emulatore, ma potresti dover conoscere queste informazioni durante un controllo di sicurezza.
  • L'emulatore IMDS emula solo le risposte IMDSv1. IMDSv2 non è supportato.

Attiva l'emulatore

Per abilitare l'emulatore IMDS, aggiungi un'etichetta e un'annotazione ai metadati di un pod. Puoi anche abilitare l'emulatore utilizzando un oggetto Deployment, DaemonSet o qualsiasi altra risorsa che crei pod:

  1. Aggiungi la seguente etichetta e il seguente valore al pod:

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

    L'unico valore accettabile per questa etichetta è True. Tutti gli altri valori (incluso true con t minuscolo) disattivano l'emulatore.

  2. Aggiungi la seguente annotazione al pod:

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

    Sostituisci ARN_ROLE con un nome di risorsa Amazon (ARN) che specifica il ruolo che deve avere la risorsa.

Esempio

L'esempio seguente è un pod con l'emulatore IMDS abilitato:

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