Inserisci proxy sidecar con Anthos Service Mesh
Questo documento illustra come configurare l'iniezione di proxy sidecar con Anthos Service Mesh per migliorare la sicurezza, l'affidabilità e l'osservabilità della rete. Queste funzioni vengono astratte dal container principale dell'applicazione e implementate in un comune proxy out-of-process (il file collaterale), pubblicato come container separato nello stesso pod. Questo fornisce le funzionalità di Anthos Service Mesh senza riprogettare le applicazioni di produzione per partecipare a un mesh di servizi.
L'inserimento automatico del proxy sidecar (iniezione automatica) si verifica quando Anthos Service Mesh rileva un'etichetta dello spazio dei nomi configurata per il pod del carico di lavoro. Il proxy intercetta tutto il traffico in entrata e in uscita verso i carichi di lavoro e comunica con Anthos Service Mesh.
Abilitazione dell'iniezione automatica del sidecar
Il modo consigliato per inserire proxy sidecar consiste nell'utilizzare l'iniettore automatico sidecar basato su webhook, anche se puoi aggiornare manualmente la configurazione Kubernetes dei pod.
Per abilitare l'inserimento automatico, etichetta gli spazi dei nomi con le etichette di iniezione predefinite se è configurato il tag predefinito o con l'etichetta di revisione allo spazio dei nomi.
L'etichetta che aggiungi dipende anche dal deployment di Anthos Service Mesh gestito (con l'API del parco risorse o con asmcli
) o dal fatto che il piano di controllo nel cluster sia stato installato o meno.
L'etichetta viene utilizzata dal webhook iniettore sidecar per associare le sidecar inserite a una determinata revisione del piano di controllo.
Per abilitare l'inserimento automatico:
In-cluster
Utilizza il seguente comando per individuare l'etichetta di revisione su
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-1154-2-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1154-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1154-2-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1154-2,istio=istiod,pod-template-hash=5788d57586
Nell'output, nella colonna
LABELS
, annota il valore dell'etichetta di revisioneistiod
, che segue il prefissoistio.io/rev=
. In questo esempio, il valore èasm-1154-2
.Applica l'etichetta di revisione agli spazi dei nomi e rimuovi l'etichetta "istio-jection" (se esistente). Nel comando seguente,
NAMESPACE
è il nome dello spazio dei nomi in cui vuoi abilitare l'inserimento automatico eREVISION
è l'etichetta di revisione che hai annotato nel passaggio precedente.kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Puoi ignorare il messaggio
"istio-injection not found"
nell'output. Ciò significa che lo spazio dei nomi in precedenza non aveva l'etichettaistio-injection
, come previsto nelle nuove installazioni di Anthos Service Mesh o nei nuovi deployment. Poiché l'inserimento automatico non va a buon fine se uno spazio dei nomi ha siaistio-injection
sia l'etichetta di revisione, tutti i comandikubectl label
nella documentazione di Anthos Service Mesh includono la rimozione dell'etichettaistio-injection
.Riavvia i pod interessati, seguendo i passaggi descritti nella sezione successiva.
Mesh di servizi gestiti
Utilizza il seguente comando per individuare i canali di rilascio disponibili:
kubectl -n istio-system get controlplanerevision
L'output è simile al seguente:
NAME AGE asm-managed 6d7h
Nell'output, seleziona il valore nella colonna
NAME
, che corrisponde all'etichettaREVISION
corrispondente al canale di rilascio disponibile per la versione di Anthos Service Mesh. Applica questa etichetta ai tuoi spazi dei nomi e rimuovi l'etichettaistio-injection
(se esistente). Nel comando seguente, sostituisciREVISION
con l'etichetta di revisione che hai annotato sopra e sostituisciNAMESPACE
con il nome dello spazio dei nomi in cui vuoi abilitare l'inserimento automatico:kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Puoi ignorare il messaggio
"istio-injection not found"
nell'output. Ciò significa che lo spazio dei nomi in precedenza non aveva l'etichettaistio-injection
, come previsto nelle nuove installazioni di Anthos Service Mesh o nei nuovi deployment. Poiché l'inserimento automatico non va a buon fine se uno spazio dei nomi ha siaistio-injection
sia l'etichetta di revisione, tutti i comandikubectl label
nella documentazione di Anthos Service Mesh includono la rimozione dell'etichettaistio-injection
.Riavvia i pod interessati, seguendo i passaggi descritti nella sezione successiva.
Se hai eseguito il deployment anche del piano dati gestito da Google facoltativo, annota lo spazio dei nomi
demo
come segue:kubectl annotate --overwrite namespace YOUR_NAMESPACE \ mesh.cloud.google.com/proxy='{"managed":"true"}'
Riavvia i pod per aggiornare i proxy sidecar
Con l'inserimento automatico dei sidecar, puoi aggiornare i sidecar per i pod esistenti con un riavvio del pod:
Il modo in cui riavvii i pod dipende dalla loro creazione nel contesto di un deployment.
Se hai utilizzato un deployment, riavvialo, che riavvia tutti i pod con sidecar:
kubectl rollout restart deployment -n YOUR_NAMESPACE
Se non hai utilizzato un deployment, elimina i pod e vengono ricreati automaticamente con i file collaterali:
kubectl delete pod -n YOUR_NAMESPACE --all
Verifica che per tutti i pod nello spazio dei nomi siano stati inseriti sidecar:
kubectl get pod -n YOUR_NAMESPACE
Nell'output di esempio seguente del comando precedente, puoi notare che la colonna
READY
indica che sono presenti due container per ogni carico di lavoro: il container principale e il container del proxy sidecar.NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Passaggi successivi
Scopri di più su: