Attivare l'emulatore IMDS

Questa pagina spiega come attivare l'emulatore IMDS, che emula il servizio di metadati delle istanze (IMDS) di AWS. Puoi eseguire l'emulatore come sidecar per consentire l'esecuzione di carichi di lavoro legacy nei node pool GKE su AWS. Se hai carichi di lavoro legacy che non supportano direttamente Workload Identity Federation for GKE, utilizza questo emulatore per accedere ai dati IMDS.

Limitazioni

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

Attivare l'emulatore

Per attivare l'emulatore IMDS, aggiungi un'etichetta e un'annotazione ai metadati di un pod. Puoi anche attivare l'emulatore utilizzando un deployment, un DaemonSet o qualsiasi altra risorsa che crea 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) disabilitano l'emulatore.

  2. Aggiungi la seguente annotazione al pod:

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

    Sostituisci ARN_ROLE con un Amazon Resource Name (ARN) che specifica il ruolo che vuoi che abbia la risorsa.

Esempio

Il seguente esempio mostra 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