Questa pagina spiega come attivare l'emulatore IMDS, che emula il servizio IMDS (Instance Metadata Service) di AWS. Puoi eseguire l'emulatore come sidecar per consentire l'esecuzione dei carichi di lavoro precedenti nei pool di nodi GKE su AWS. Se hai carichi di lavoro precedenti che non supportano direttamente la federazione delle identità per i carichi di lavoro per GKE, utilizza questo emulatore per accedere ai dati IMDS.
Limitazioni
- Il cluster deve utilizzare una versione di Kubernetes 1.24 o successiva.
- L'emulatore non è supportato nella generazione precedente di GKE su AWS.
- Il server dell'emulatore IMDS gestisce solo le richieste di credenziali
(
API_VERSION/meta-data/iam/security-credentials/
). Tutte le altre richieste di metadati resistono un errore 404. - Un deployment sidecar richiede che il contenitore di inizializzazione disponga delle capacità del contesto di sicurezza
NET_ADMIN
eNET_RAW
. Se non sai con certezza se il contenitore ha questi contesti, rivolgiti al tuo team di sicurezza. - Il token STS di AWS può durare un'ora. Il token di ruolo dei metadati EC2 puoi durare 24 ore. Ciò non dovrebbe influire sull'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.
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 valore al pod:
gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
L'unico valore accettabile per questa etichetta è
True
. Tutti gli altri valori (inclusotrue
con una F minuscola) disattivano l'emulatore.t
Aggiungi la seguente annotazione al pod:
gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
Sostituisci
ARN_ROLE
con un nome della risorsa Amazon (ARN) che specifica il ruolo che vuoi che la risorsa abbia.
Esempio
Il seguente esempio è 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