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
eNET_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:
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) disabilitano l'emulatore.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