Abilitazione delle funzionalità facoltative nel piano di controllo nel cluster

Questa pagina descrive come abilitare le funzionalità facoltative su un piano di controllo nel cluster. Per informazioni sul piano di controllo gestito da Google, consulta Abilitazione di funzionalità facoltative su Anthos Service Mesh gestito.

Quando installi Anthos Service Mesh, le funzionalità abilitate per impostazione predefinita variano in base alla piattaforma. Puoi abilitare le funzionalità facoltative includendo un file di overlay durante l'installazione (o l'upgrade) di Anthos Service Mesh. Un file di overlay è un file YAML contenente una risorsa (RP) personalizzata di IstioOperator che utilizzi per configurare il piano di controllo. Puoi eseguire l'override della configurazione predefinita e attivare una funzionalità facoltativa o disattivare una funzionalità predefinita in un file di overlay. Specifica una funzionalità per file di overlay. Puoi sovrapporre più overlay e ogni file di overlay sostituisce la configurazione dei livelli precedenti.

Informazioni sui file di overlay

I file degli overlay in questa pagina si trovano all'interno del pacchetto anthos-service-mesh in GitHub. Questi file contengono personalizzazioni comuni alla configurazione predefinita. Puoi utilizzare questi file così come sono o apportare ulteriori modifiche in base alle esigenze.

  • Quando installi Anthos Service Mesh utilizzando il comando istioctl install, puoi specificare uno o più file di overlay con l'opzione della riga di comando -f. Anche se puoi modificare la configurazione specificando i parametri di configurazione nella riga di comando utilizzando l'opzione --set per istioctl install, ti consigliamo di utilizzare un file di overlay in modo da poter archiviare il file nel tuo sistema di controllo della versione insieme agli altri file di risorse personalizzati. Devi conservare questi file per l'upgrade di Anthos Service Mesh, in modo che il piano di controllo abbia la stessa configurazione dopo l'upgrade.

  • Quando installi Anthos Service Mesh utilizzando lo script install_asm fornito da Google, puoi specificare uno o più file overlay con le opzioni --option o --custom_overlay. Se non devi apportare modifiche ai file nel repository anthos-service-mesh, puoi utilizzare --option e lo script recupera il file da GitHub per te. In caso contrario, puoi apportare modifiche al file dell'overlay e poi utilizzare l'opzione --custom_overlay per passarlo allo script install_asm.

Non includere più RP in un unico file di overlay Creare file di overlay separati per ogni RP
più RP in un unico YAML file YAML separati per ogni RP

Download del pacchetto anthos-service-mesh in corso...

Per scaricare il pacchetto anthos-service-mesh:

I passaggi seguenti utilizzano kpt per scaricare il pacchetto asm dal repository GitHub. Se preferisci, puoi utilizzare git clone.

  1. Se non l'hai ancora fatto, installa kpt:

    gcloud components install kpt
    
  2. Scarica il pacchetto che contiene i file:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
    

    Gli esempi seguenti presuppongono che il pacchetto asm si trovi nella tua directory di lavoro attuale.

Come attivare le funzionalità facoltative

Per attivare una funzionalità durante l'installazione di Anthos Service Mesh, il comando esatto varia leggermente a seconda della piattaforma e se stai utilizzando lo script install_asm o il comando istioctl install.

I seguenti esempi sono semplificati in modo che vengano visualizzati solo utilizzando gli overlay personalizzati per abilitare le funzionalità facoltative. Sostituisci OTHER_FLAGS con le opzioni della riga di comando della guida all'installazione che segui.

Utilizzo dello script install_asm

Lo script install_asm offre due modi per abilitare una funzionalità facoltativa. Il metodo da utilizzare varia a seconda che tu debba o meno apportare modifiche al file dell'overlay.

  • Utilizza --option se non devi apportare modifiche al file dell'overlay. Con --option, install_asm recupera automaticamente il file dal repository GitHub, quindi devi disporre di una connessione a internet.

    ./install_asm \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Sostituisci OPTION_NAME con l'opzione che vuoi attivare. Per un elenco delle opzioni, consulta il pacchetto anthos-service-mesh.

  • Usa --custom_overlay quando devi personalizzare il file dell'overlay.

    ./install_asm \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

    Sostituisci PATH_TO_FILE con il percorso del file dell'overlay che vuoi utilizzare.

Utilizzo del comando istioctl install

Devi utilizzare il comando istioctl install per le installazioni multiprogetto su GKE e per le piattaforme che non sono su Google Cloud, come GKE su VMware.

  • Usa -f per includere il file dell'overlay. Può trattarsi di un file di overlay del pacchetto anthos-service-mesh senza personalizzazioni o di un file di overlay personalizzato.

    istioctl install  \
     OTHER_FLAGS \
     -f PATH_TO_FILE
    

    Sostituisci PATH_TO_FILE con il percorso del file dell'overlay che vuoi utilizzare.

YAML per funzionalità facoltative

Le seguenti sezioni forniscono il codice YAML per abilitare le funzionalità facoltative e supportate.

Modalità mTLS STRICT

La configurazione di global.mtls.enabled è stata rimossa dalla risposta predefinita IstioOperator per evitare problemi con gli upgrade e offrire un'installazione più flessibile. Per attivare la tecnologia mTLS di STRICT, configura invece un criterio di autenticazione peer.

Indirizza Envoy a stdout

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Per ulteriori informazioni, vedi Abilitare il logging degli accessi di Envoy.

Cloud Trace

Cloud Trace è disponibile con le installazioni di Anthos Service Mesh sulle seguenti piattaforme:

  • GKE su Google Cloud
  • Cluster GKE Enterprise on-premise se installi l'autorità di certificazione Anthos Service Mesh (Mesh CA)

Per informazioni più dettagliate sui prezzi, consulta la pagina dei prezzi di Cloud Trace.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

La frequenza di campionamento predefinita è pari all'1%, ma puoi sostituire quella predefinita specificando un valore tracing.sampling. Il valore deve essere compreso tra 0,0 e 100,0 con una precisione di 0,01. Ad esempio, per tracciare 5 richieste ogni 10.000,utilizza 0, 05.

L'esempio seguente mostra una frequenza di campionamento del 100% (che useresti solo a scopo dimostrativo o per la risoluzione dei problemi).

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

Tieni presente che attualmente la configurazione del tracer fa parte della configurazione del bootstrap del proxy, quindi è necessario riavviare ogni pod e reinserirlo per recuperare l'aggiornamento del tracer. Ad esempio, puoi utilizzare il comando seguente per riavviare i pod che appartengono a un deployment:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Trace la propagazione del contesto

Sebbene i proxy collaterali possano inviare automaticamente intervalli di traccia, hanno bisogno di alcuni suggerimenti per collegare l'intera traccia. Le applicazioni devono propagare le intestazioni HTTP appropriate in modo che, quando i proxy inviano informazioni sugli intervalli, gli intervalli possano essere correlati correttamente in un'unica traccia.

A questo scopo, un'applicazione deve raccogliere e propagare le intestazioni appropriate dalla richiesta in entrata a tutte le richieste in uscita. La configurazione di tracciamento di Stackdriver Anthos Service Mesh accetta tutti i seguenti formati di intestazione e si propaga tutti i seguenti formati:

  • B3 (x-b3-traceid, x-b3-spanid, x-b3parentspanid, x-b3-sampled, x-b3-flags)
  • TraceContext di W3C (traceparent)
  • Google Cloud Trace (x-cloud-trace-context)
  • TraceBin gRPC (grpc-trace-bin)

Ciò significa che le tue applicazioni possono utilizzare uno qualsiasi di questi formati per propagare il contesto di tracciamento. Le tracce verranno generate e impostate su Stackdriver in modo appropriato.

Esempio

Ecco un esempio di richiesta HTTP-Get con intestazione traceparent nella richiesta originale. Osserva le intestazioni aggiuntive del contesto della traccia aggiunte dal proxy.

$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
*   Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
  "args": {
    "freeform": ""
  },
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
    "Host": "httpbin:8000",
    "Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
    "User-Agent": "curl/7.80.0-DEV",
    "X-B3-Sampled": "1",
    "X-B3-Spanid": "a0c798646d74cef0",
    "X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
    "X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
    "X-Envoy-Attempt-Count": "1",
    "X-Forwarded-Client-Cert": "<REDACTED>"
  },
  "json": null,
  "method": "GET",
  "origin": "127.0.0.6",
  "url": "http://httpbin:8000/anything?freeform="
}

Tieni presente che nel set restituito delle intestazioni delle richieste è presente l'insieme completo delle intestazioni di contesto delle tracce.

Per altri esempi di propagazione delle intestazioni, consulta Trace del contesto di propagazione.

Crea una traccia dal client con un ID personalizzato

Per creare una traccia da un client con un ID personalizzato, usa il comando curl per creare una richiesta con un client esterno e forzare la visualizzazione di una traccia. Ad esempio:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Per ulteriori informazioni su x-client-trace-id, consulta la documentazione di Envoy.

Interfaccia di rete del container Istio

L'abilitazione dell'interfaccia CINI (Container Network Interface) per Istio dipende dall'ambiente in cui è installato Anthos Service Mesh.

  1. Attivare un criterio di rete.

  2. Scegli il file dell'overlay che corrisponde alla tua piattaforma.

Abilita CNI su GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

Abilita CNI on-premise

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

Abilita un bilanciatore del carico interno

Per le installazioni su GKE, puoi abilitare un bilanciatore del carico interno per il gateway in entrata Istio.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
              - name: status-port
                port: 15020
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443

Gestione dei certificati esterni sul gateway in entrata

Per informazioni su come abilitare la gestione dei certificati esterni sul gateway in entrata utilizzando Envoy SDS, consulta Gateway sicuri.