Abilita funzionalità facoltative su un piano di controllo nel cluster

In questa pagina viene descritto come abilitare le funzionalità facoltative su Cloud Service Mesh con un piano di controllo nel cluster.

Quando installi Cloud Service Mesh nel cluster, le funzionalità abilitate per impostazione predefinita variano in base alla piattaforma. Puoi eseguire l'override della configurazione predefinita e abilitare una funzionalità facoltativa incluso un file overlay quando installi (o esegui l'upgrade) Cloud Service Mesh. Un di overlay è un file YAML contenente Risorsa personalizzata (RP) IstioOperator che utilizzerai per configurare il piano di controllo. Specifica una funzionalità per ciascun file dell'overlay. Puoi sovrapporre altri overlay, e ogni file di overlay sostituisce la configurazione sui livelli precedenti.

Informazioni sui file di overlay

I file degli overlay su questa pagina si trovano nel anthos-service-mesh in GitHub. Questi file contengono personalizzazioni comuni configurazione. Potete utilizzare questi file così come sono oppure aggiungere se necessario.

Quando installi Cloud Service Mesh utilizzando lo script asmcli, puoi specificare uno o più file di overlay con --option o Opzioni --custom_overlay. Se non devi apportare modifiche al nel repository anthos-service-mesh, puoi usare --option e lo script recupera il file da GitHub per te. Altrimenti, puoi apportare modifiche al file dell'overlay, poi usa l'opzione --custom_overlay per e la passiamo al asmcli.

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

Come attivare le funzionalità facoltative

I seguenti esempi sono semplificati in modo da mostrare solo gli overlay personalizzati per attivare le funzionalità facoltative. Sostituisci OTHER_FLAGS con flag di installazione richiesti.

Il comando asmcli install offre due modi per abilitare una funzionalità facoltativa. La utilizzato dipende dalla necessità di apportare modifiche all'overlay .

  • Usa --option quando non devi apportare modifiche al file dell'overlay. Con --option, asmcli recupera il file dal repository GitHub per te, quindi devi avere una connessione a internet.

    ./asmcli install \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Sostituisci OPTION_NAME con l'opzione che vuoi attivare. Assicurati di omettere l'estensione .yaml e di includere solo il nome dell'overlay come iap-operator e attached-cluster. Per un elenco di opzioni, fai riferimento anthos-service-mesh pacchetto.

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

    ./asmcli install \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

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

YAML per le caratteristiche facoltative

Le sezioni seguenti forniscono il file YAML per abilitare opzioni facoltative e supportate le funzionalità di machine learning.

Modalità mTLS STRICT

La configurazione global.mtls.enabled è stata rimossa da IstioOperator RP per evitare problemi con gli upgrade e offrire un'installazione più flessibile. Per attivare il protocollo mTLS di STRICT: configurare un criterio di autenticazione peer.

Immagine proxy senza distro

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

La seguente configurazione abilita le immagini senza distrografia per l'intero Cloud Service Mesh. Una modifica al tipo di immagine richiede il riavvio di ogni pod e il reinserimento per avere effetto.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      image:
        imageType: distroless

L'immagine distroless non contiene file 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 esegui un comando curl, viene visualizzato il seguente errore:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec  "<container-id>"
OCI runtime exec failed: exec failed: unable to start container process: exec: "curl": executable file not found in $PATH: unknown

Se esegui un comando shell, viene visualizzato il seguente errore:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "sh": executable file not found in $PATH: unknown

Se hai bisogno di accedere a questi strumenti per pod specifici, 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, utilizza istioctl proxy-cmd, che non richiede un'immagine di base di debug.

Utilizzare un overlay personalizzato per il registro personalizzato

Puoi utilizzare un overlay personalizzato per i registri personalizzati, ad esempio se devi installare Cloud Service Mesh da un Container Registry personalizzato. Ad esempio:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  hub: {private_registry_url}

Di seguito è riportato un elenco di immagini per Cloud Service Mesh a cui è necessario eseguire il mirroring personalizzato Container Registry:

  • Installazione - gke.gcr.io/asm/install-cni:1.21.4-asm.5
  • Piano dati gestito - gke.gcr.io/asm/mdp:1.21.4-asm.5
  • Progetto pilota - gke.gcr.io/asm/pilot:1.21.4-asm.5
  • Proxyv2 - gke.gcr.io/asm/proxyv2:1.21.4-asm.5

Aggiungi immagini a un registro privato

Per eseguire il push delle immagini Cloud Service Mesh in un registro privato, completa quanto segue passaggi.

  1. Esegui il pull delle immagini Cloud Service Mesh:
    docker pull gke.gcr.io/asm/install-cni:1.21.4-asm.5
    docker pull gke.gcr.io/asm/mdp:1.21.4-asm.5
    docker pull gke.gcr.io/asm/pilot:1.21.4-asm.5
    docker pull gke.gcr.io/asm/proxyv2:1.21.4-asm.5
    
  2. Crea una variabile per l'URL del tuo registro privato:
    export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
    
    Sostituisci PRIVATE_REGISTRY_URL con il tuo registro privato URL.
  3. Contrassegna le immagini con l'URL del tuo registro privato:
    docker tag gke.gcr.io/asm/install-cni:1.21.4-asm.5 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.21.4-asm.5
    docker tag gke.gcr.io/asm/mdp:1.21.4-asm.5 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.21.4-asm.5
    docker tag gke.gcr.io/asm/pilot:1.21.4-asm.5 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.21.4-asm.5
    docker tag gke.gcr.io/asm/proxyv2:1.21.4-asm.5 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.21.4-asm.5
    
  4. Esegui il push delle immagini con tag nel tuo registro privato:
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.21.4-asm.5
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.21.4-asm.5
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.21.4-asm.5
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.21.4-asm.5
    
  5. (Facoltativo) Se utilizzi una servizio canonico, quindi aggiungi immagini di servizio canoniche nel tuo registro privato.
    1. Esegui il pull delle immagini dei servizi canonici di Cloud Service Mesh:
              docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker pull gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    2. Contrassegna le immagini con l'URL del tuo registro privato:
              docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 \
              ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker tag gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 \
              ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    3. Esegui il push delle immagini con tag nel tuo registro privato:
              docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/kube-rbac-proxy:v0.13.1
              docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              

Se puoi eseguire il pull delle immagini con tag dal tuo registro privato, la procedura è andata a buon fine.

Aumenta la durata dello svuotamento della terminazione

Per impostazione predefinita, Envoy attende cinque secondi (5s) per il completamento delle connessioni esistenti all'arresto di un pod.

Il pod terminationGracePeriodSeconds deve essere maggiore di terminationDrainDuration.

Per ulteriori informazioni, consulta la sezione sulle opzioni del mesh globale.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      terminationDrainDuration: 30s

Abilita log degli accessi

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

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

Cloud Trace

Cloud Trace è disponibile per le installazioni di Cloud Service Mesh nei seguenti paesi: piattaforme:

  • GKE su Google Cloud
  • di cluster GKE Enterprise on-premise Autorità di certificazione Cloud Service Mesh
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

Per ulteriori informazioni, vedi Accesso alle tracce.

In uscita tramite gateway in uscita

Ti consigliamo di installare injected (gateway inserito) come descritto in Installa ed esegui l'upgrade dei gateway.

Interfaccia di rete del container Istio

Il modo in cui abiliti Istio Container Network Interface (CNI) dipende e l'ambiente su cui è installato Cloud 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 i log sul traffico per le attività esterne a Google Cloud

Installazione di Cloud Service Mesh con Istio CA al di fuori dei report di Google Cloud a Prometheus per impostazione predefinita. Utilizza questa opzione per attivare la generazione di report sul traffico oppure sia Prometheus che Stackdriver, quindi puoi utilizzare dashboard di Cloud Service Mesh.

Solo Stackdriver

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: false
        stackdriver:
          enabled: true

Stackdriver e Prometheus

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: true
        stackdriver:
          enabled: true

Abilita un bilanciatore del carico interno

Ti consigliamo di installare injected (gateway inserito) come descritto in Installa ed esegui l'upgrade dei gateway per configurare un server su GKE. Quando configuri il servizio gateway, includi l'annotazione: networking.gke.io/load-balancer-type: "Internal"

Gestione dei certificati esterno nel gateway in entrata

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