Abilita le funzionalità facoltative su Anthos Service Mesh gestito

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

Quando esegui il provisioning di Anthos Service Mesh gestito, le funzionalità abilitate per impostazione predefinita variano a seconda della piattaforma. Se attualmente utilizzi una configurazione basata su IstioOperator, lo strumento Esegui la migrazione da IstioOperator può aiutarti a eseguire la conversione alla configurazione supportata dal piano di controllo gestito.

Log di accesso Envoy

Esegui i comandi seguenti per abilitare il logging degli accessi a Envoy:

  1. Esegui questo comando per aggiungere accessLogFile: /dev/stdout:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    data:
      mesh: |-
        accessLogFile: /dev/stdout
    kind: ConfigMap
    metadata:
      name: istio-release-channel
      namespace: istio-system
    EOF
    

    dove release-channel è il tuo canale di rilascio (asm-managed, asm-managed-stable o asm-managed-rapid).

  2. Esegui questo comando per visualizzare il file configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  3. Per verificare che il logging degli accessi sia abilitato, assicurati che la riga accessLogFile: /dev/stdout venga visualizzata nella sezione mesh:.

    ...
    apiVersion: v1
    data:
      mesh: |
        ....
        accessLogFile: /dev/stdout
    ...
    

Abilita Cloud Tracciamento

Esegui questi comandi per abilitare Cloud Trace:

  1. Esegui questo comando:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    data:
      mesh: |-
        defaultConfig:
          tracing:
            stackdriver: {}
    kind: ConfigMap
    metadata:
      name: istio-release-channel
      namespace: istio-system
    EOF
    

    dove release-channel è il tuo canale di rilascio (asm-managed, asm-managed-stable o asm-managed-rapid).

  2. Esegui questo comando per visualizzare il file configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  3. Per verificare che Cloud Trace sia abilitato, assicurati che nella sezione mesh: vengano visualizzate le righe seguenti.

    ...
    apiVersion: v1
    data:
      mesh: |
        ....
        defaultConfig:
          tracing:
            stackdriver:{}
    ...
    
  4. Riavvia i proxy.

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

    kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Per ulteriori informazioni sulle intestazioni delle tracce supportate, consulta Accesso alle tracce.

Immagine proxy distroless

Come best practice, devi limitare i contenuti di un runtime del container solo ai pacchetti necessari. Questo approccio migliora la sicurezza e il rapporto segnale/rumore degli scanner di vulnerabilità ed esposizioni comuni (CVE). Istio fornisce immagini proxy basate su immagini di base senza distribuzione.

La seguente configurazione attiva immagini senza distribuzione per l'intero Anthos Service Mesh. Una modifica del tipo di immagine richiede il riavvio di ogni pod e il reinserimento effettivo.

     apiVersion: v1
     kind: ConfigMap
     metadata:
       name: istio-release-channel
       namespace: istio-system
     data:
       mesh: |-
         defaultConfig:
           image:
             imageType: distroless

L'immagine proxy senza distribuzione non contiene programmi binari diversi dal proxy. Di conseguenza, non è possibile exec una shell o utilizzare curl, ping o altre utilità di debug all'interno del container. Se hai bisogno di accedere a questi strumenti per un deployment specifico, puoi eseguire l'override di imageType utilizzando la seguente annotazione pod.

sidecar.istio.io/proxyImageType: debug

Dopo aver modificato il tipo di immagine di un deployment tramite l'annotazione, il deployment deve essere riavviato.

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Per la maggior parte dei tipi di debug del proxy, è necessario utilizzare istioctl proxy-cmd, che non richiede un'immagine di base di debug.

Norme relative al traffico in uscita

Per impostazione predefinita, outboundTrafficPolicy è impostato su ALLOW_ANY. In questa modalità, è consentito tutto il traffico verso qualsiasi servizio esterno. Per controllare e limitare il traffico solo ai servizi esterni per i quali sono definite voci di servizio, puoi modificare il comportamento predefinito di ALLOW_ANY in REGISTRY_ONLY

  1. La seguente configurazione configura outboundTrafficPolicy su REGISTRY_ONLY

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: istio-release-channel
        namespace: istio-system
      data:
        mesh: |-
          outboundTrafficPolicy:
           mode: REGISTRY_ONLY
    

    dove release-channel è il tuo canale di rilascio (asm-managed, asm-managed-stable o asm-managed-rapid).

  2. Puoi apportare le modifiche necessarie alla configurazione in alto nel file configmap utilizzando il comando seguente

    kubectl edit configmap istio-release-channel -n istio-system -o yaml
    
  3. Esegui questo comando per visualizzare il file configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  4. Per verificare che outboundTrafficPolicy sia abilitato con REGISTRY_ONLY, assicurati che le seguenti righe vengano visualizzate nella sezione mesh:.

    ...
    apiVersion: v1
    data:
      mesh: |
        outboundTrafficPolicy:
         mode: REGISTRY_ONLY
    ...
    

Autenticazione degli utenti finali

Puoi configurare l'autenticazione utente gestita di Anthos Service Mesh per l'autenticazione dell'utente finale basata su browser e il controllo dell'controllo dell'accesso ai carichi di lavoro di cui hai eseguito il deployment. Per ulteriori informazioni, consulta Configurazione dell'autenticazione utente di Anthos Service Mesh.

Configura la versione TLS minima per i tuoi carichi di lavoro

Puoi utilizzare il campo minProtocolVersion per specificare la versione TLS minima per le connessioni TLS tra i carichi di lavoro. Per ulteriori informazioni sull'impostazione della versione TLS minima e sul controllo della configurazione TLS dei carichi di lavoro, consulta Configurazione della versione TLS minima dei carichi di lavoro Istio.

Nell'esempio seguente, ConfigMap imposta la versione TLS minima per i carichi di lavoro a 1.3:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio-release-channel
  namespace: istio-system
data:
  mesh: |-
    meshMTLS:
      minProtocolVersion: TLSV1_3