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
eNET_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:
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 (inclusotrue
cont
minuscolo) disattivano l'emulatore.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