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 sono astratti dal container principale dell'applicazione e implementato in un proxy out-of-process comune (il file collaterale), pubblicato come container separato all'interno dello stesso pod. In questo modo, potrai 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 verso i carichi di lavoro e comunica con Cloud Service Mesh.

Attivazione dell'inserimento automatico di file collaterali

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 aggiunta dipende anche dal fatto che tu abbia eseguito il deployment di Cloud Service Mesh gestito (con l'API Fleet o con asmcli) o abbia installato il control plane in-cluster. L'etichetta viene utilizzata dall'webhook di inserimento dei sidecar per associare i sidecar iniettati a una determinata revisione del control plane.

Per attivare l'inserimento automatico:

Nel cluster

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

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

  2. Applica l'etichetta di revisione agli spazi dei nomi e rimuovi l'etichetta istio-injection (se esistente). Nel comando seguente, NAMESPACE è il nome dello spazio dei nomi per cui vuoi abilitare l'inserimento automatico REVISION è l'etichetta di revisione che hai annotato in 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 Etichetta istio-injection, prevista nelle nuove di Cloud Service Mesh o di nuovi deployment. Poiché il comportamento di istio-injection non è definito quando uno spazio dei nomi ha sia l'etichetta istio-injection che 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.

Mesh di servizi gestito

  1. 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 è REVISION che corrisponde all'etichetta disponibile canale di rilascio per la versione Cloud Service Mesh. Applica questa etichetta agli spazi dei nomi e rimuovi l'etichetta istio-injection (se esistente). Nel comando seguente, sostituisci REVISION con l'etichetta della revisione che hai annotato sopra e NAMESPACE con il nome dello spazio dei nomi in cui vuoi attivare l'iniezione automatica:

    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é l'inserimento automatico il comportamento non è definito quando uno spazio dei nomi ha sia istio-injection e l'etichetta di revisione, tutti i comandi kubectl label nella La documentazione di Cloud Service Mesh assicura esplicitamente che ne sia impostata una sola.

  2. Riavvia i pod interessati, seguendo i passaggi nella sezione successiva.

  3. Se hai eseguito anche il deployment della Piano dati gestito da Google, 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 di file collaterali, puoi aggiornare i file collaterali per i pod esistenti. con il riavvio di un 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; in questo modo vengono riavviati tutti i pod. con file collaterali:

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Se non hai utilizzato un deployment, elimina i pod, che vengono ricreato con file collaterali:

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. Controlla che in tutti i pod nello spazio dei nomi siano stati inseriti file collaterali:

    kubectl get pod -n YOUR_NAMESPACE

    Nell'output di esempio seguente del comando precedente, nota che la macro La colonna READY indica che esistono due container per ciascuno dei tuoi carichi di lavoro: il container principale e il container per il proxy sidecar.

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

Passaggi successivi

Scopri di più su: