Inserire proxy sidecar con Cloud Service Mesh

Questo documento illustra come configurare l'iniezione di proxy sidecar con Cloud Service Mesh per migliorare la sicurezza, l'affidabilità e l'osservabilità della rete. Queste funzioni vengono rimosse dal contenitore principale dell'applicazione e implementate in un proxy out-of-process comune (il sidecar), fornito come contenitore separato nello stesso pod. In questo modo, puoi usufruire delle funzionalità di Cloud Service Mesh senza dover riprogettare le tue applicazioni di produzione per partecipare a un mesh di servizi.

L'iniezione automatica del proxy sidecar (iniezione automatica) si verifica quando Cloud 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 per i carichi di lavoro e comunica con Cloud Service Mesh.

Attivazione dell'iniezione automatica di sidecar

Il modo consigliato per iniettare i proxy sidecar è utilizzare l'iniettore sidecar automatico basato su webhook, anche se puoi aggiornare manualmente la configurazione Kubernetes dei pod.

Per attivare l'iniezione automatica, etichetta gli spazi dei nomi con le etichette di inserimento predefinite se è configurato il tag predefinito o con la etichetta di revisione per lo spazio dei nomi. L'etichetta viene utilizzata dall'webhook dell'iniettore di sidecar per associare i sidecar iniettati a una determinata revisione del piano di controllo.

Per attivare l'iniezione automatica:

  1. 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-1233-2-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1233-2-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586

    Nell'output, nella colonna LABELS, prendi nota del valore dell'etichetta di revisione istiod, che segue il prefisso istio.io/rev=. In questo esempio, il valore è asm-1233-2.

  2. Applica l'etichetta di revisione agli spazi dei nomi e rimuovi l'etichetta istio-injection (se esistente). Nel seguente comando, NAMESPACE è il nome dello spazio dei nomi in cui vuoi attivare l'iniezione automatica e REVISION è 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 in precedenza lo spazio dei nomi non aveva l'etichetta istio-injection, che dovresti aspettarti nelle nuove installazioni di Cloud Service Mesh o nei nuovi deployment. Poiché il comportamento di inserimento automatico non è definito quando uno spazio dei nomi ha sia l'etichetta istio-injection sia l'etichetta di revisione, tutti i comandi kubectl label nella documentazione di Cloud Service Mesh assicurano esplicitamente che ne sia impostato solo uno.

  3. Riavviare i pod interessati seguendo i passaggi descritti nella sezione successiva.

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:

La modalità di riavvio dei pod dipende dal fatto che siano stati creati nell'ambito di un deployment.

  1. Se hai utilizzato un deployment, riavvialo, il che riavvia tutti i pod con i sidecar:

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Se non hai utilizzato un deployment, elimina i pod, che verranno rielaborati automaticamente con i sidecar:

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Verifica che in tutti i pod nello spazio dei nomi siano stati iniettati i sidecar:

    kubectl get pod -n YOUR_NAMESPACE

    Nell'esempio di output del comando precedente riportato di seguito, tieni presente che la colonna READY indica che esistono due contenitori per ogni carico di lavoro: il contenitore principale e il contenitore per il proxy sidecar.

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...
    

Passaggi successivi

Scopri di più su: