Installazione di Anthos Service Mesh on-premise

Questa guida spiega come eseguire un'installazione pulita della versione di Anthos Service Mesh 1.5.10-asm.2 su GKE su VMware. Se hai installato una versione precedente di Anthos Service Mesh, consulta Upgrade di Anthos Service Mesh su GKE su VMware.

L'installazione abilita le funzionalità supportate su GKE su VMware.

Informazioni sui componenti del piano di controllo

GKE su VMware include i seguenti componenti Istio preinstallati:

  • Citadel è installato nello spazio dei nomi kube-system.
  • Il progetto pilota e il gateway Ingress Istio sono installati nello spazio dei nomi gke-system.

GKE su VMware utilizza questi componenti per abilitare il traffico in entrata e per proteggere le comunicazioni tra i componenti controllati da Google. Se hai bisogno solo della funzionalità Ingress, non è necessario installare il sistema operativo Istio o Anthos Service Mesh. Per ulteriori informazioni sulla configurazione del traffico in entrata, consulta Attivazione del traffico in entrata.

Quando installi Anthos Service Mesh, i relativi componenti vengono installati nello spazio dei nomi istio-system. Poiché i componenti di Anthos Service Mesh si trovano in uno spazio dei nomi diverso, non sono in conflitto con i componenti Istio preinstallati in GKE su VMware.

Prima di iniziare

Esamina i requisiti e le limitazioni seguenti prima di iniziare la configurazione.

Requisiti

  • Devi disporre di una licenza di prova o di un abbonamento GKE Enterprise. Per maggiori dettagli, consulta la guida ai prezzi di GKE Enterprise.

  • Assicurati che il cluster utente su cui installi Anthos Service Mesh abbia almeno 4 vCPU, 15 GB di memoria e 4 repliche.

  • Per essere incluse nel mesh di servizi, è necessario assegnare un nome alle porte di servizio, che deve includere il protocollo della porta nella seguente sintassi: name: protocol[-suffix] dove le parentesi quadre indicano un suffisso facoltativo che deve iniziare con un trattino. Per maggiori informazioni, consulta Denominazione delle porte dei servizi.

  • Assicurati che la versione del cluster sia elencata in Ambienti supportati. Per verificare la versione del cluster, puoi utilizzare lo strumento a riga di comando gkectl.

    gkectl version
    

    Viene visualizzato un output simile al seguente:

    1.2.0-gke.6 (git-0912663b0)
    

    Se non hai installato gkectl, vedi Download di GKE on-prem.

Limitazioni

È supportata una sola installazione di Anthos Service Mesh per progetto Google Cloud. Non sono supportati più deployment mesh in un singolo progetto.

Configurazione dell'ambiente

Sulla macchina locale, installa e inizializza Google Cloud CLI.

Se hai già installato gcloud CLI:

  1. Esegui l'autenticazione con gcloud CLI:

    gcloud auth login
    
  2. Aggiorna i componenti:

    gcloud components update
    
  3. Installa kubectl:

    gcloud components install kubectl
    
  4. Ottieni l'ID del progetto in cui è stato creato il cluster:

    gcloud

    gcloud projects list

    Console

    1. Nella console Google Cloud, vai alla pagina Dashboard:

      Vai alla pagina Dashboard

    2. Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, seleziona il tuo progetto. L'ID progetto viene visualizzato nella scheda Informazioni sul progetto della dashboard del progetto.

  5. Imposta l'ID progetto predefinito per Google Cloud CLI:

    gcloud config set project PROJECT_ID

Impostazione di credenziali e autorizzazioni

  1. Assicurati di avere kubectl per il cluster utente GKE su VMware in cui vuoi installare Anthos Service Mesh. Tieni presente che puoi installare Anthos Service Mesh solo su un cluster utente, non su un cluster di amministrazione.
  2. Concedi all'utente corrente le autorizzazioni di amministratore del cluster. Devi disporre delle seguenti autorizzazioni per creare le regole di controllo dell'accesso basato sui ruoli (RBAC) necessarie per Anthos Service Mesh:
    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

    Se viene visualizzato l'errore "cluster-admin-binding" already exists, puoi tranquillamente ignorarlo e continuare con l'associazione cluster-admin-binding esistente.

Preparazione all'installazione di Anthos Service Mesh

    Linux

  1. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz
  2. Scarica il file della firma e utilizza openssl per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK

  3. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.5.10-asm.2-linux.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.5.10-asm.2 che contiene:

    • Applicazioni di esempio in samples
    • I seguenti strumenti nella directory bin:
      • istioctl: utilizzi istioctl per installare Anthos Service Mesh.
      • asmctl: utilizzi asmctl per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente, asmctl non è supportato su GKE su VMware).

  4. Mac OS

  5. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz
  6. Scarica il file della firma e utilizza openssl per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK

  7. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.5.10-asm.2-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.5.10-asm.2 che contiene:

    • Applicazioni di esempio in samples
    • I seguenti strumenti nella directory bin:
      • istioctl: utilizzi istioctl per installare Anthos Service Mesh.
      • asmctl: utilizzi asmctl per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente, asmctl non è supportato su GKE su VMware).

  8. Windows

  9. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip
  10. Scarica il file della firma e utilizza openssl per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK

  11. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:
    tar xzf istio-1.5.10-asm.2-win.zip

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.5.10-asm.2 che contiene:

    • Applicazioni di esempio in samples
    • I seguenti strumenti nella directory bin:
      • istioctl: utilizzi istioctl per installare Anthos Service Mesh.
      • asmctl: utilizzi asmctl per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente, asmctl non è supportato su GKE su VMware).

  12. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
    cd istio-1.5.10-asm.2
  13. Per praticità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH

Crea lo spazio dei nomi istio-system

Crea uno spazio dei nomi denominato istio-system per i componenti del piano di controllo:

kubectl create namespace istio-system

Installazione di Anthos Service Mesh

Questa sezione spiega come installare Anthos Service Mesh e abilitare le funzionalità predefinite supportate elencate nella pagina Funzionalità supportate. Per informazioni sull'abilitazione delle funzionalità facoltative supportate, consulta Attivazione delle funzionalità facoltative.

Per installare Anthos Service Mesh:

Scegli uno dei seguenti comandi per configurare Anthos Service Mesh in modalità di autenticazione PERMISSIVE mTLS (mutual TLS) o STRICT in modalità mTLS.

mTLS PERMISSIVO

istioctl manifest apply --set profile=asm-onprem

mTLS STRETTA

istioctl manifest apply --set profile=asm-onprem \
  --set values.global.mtls.enabled=true

Controlla i componenti del piano di controllo

Verifica che i pod del piano di controllo in istio-system siano attivi:

kubectl get pod -n istio-system

L'output previsto è simile al seguente:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-ingressgateway-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Inserimento di proxy sidecar

Anthos Service Mesh utilizza i proxy sidecar per migliorare la sicurezza, l'affidabilità e l'osservabilità della rete. Con Anthos Service Mesh, queste funzioni vengono astratte dal container principale dell'applicazione e implementate in un proxy out-of-process comune, fornito come container separato nello stesso pod.

Tutti i carichi di lavoro in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh devono avere inserito o aggiornato il proxy sidecar in modo che abbia la versione attuale di Anthos Service Mesh. Prima di eseguire il deployment di nuovi carichi di lavoro, assicurati di configurare l'inserimento del proxy sidecar in modo che Anthos Service Mesh possa monitorare e proteggere il traffico.

Puoi abilitare l'inserimento automatico di sidecar con un solo comando, ad esempio:

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

dove NAMESPACE è il nome dello spazio dei nomi per i servizi della tua applicazione oppure default se non hai creato esplicitamente uno spazio dei nomi.

Per maggiori informazioni, consulta Inserimento di proxy sidecar.

Configurazione di un indirizzo IP esterno

L'installazione predefinita di Anthos Service Mesh presuppone che venga allocato automaticamente un indirizzo IP esterno per i servizi LoadBalancer. Questo non è vero in GKE su VMware. Per questo motivo, devi allocare manualmente un indirizzo IP per la risorsa gateway in entrata di Anthos Service Mesh.

Per configurare un indirizzo IP esterno, segui una delle sezioni seguenti, a seconda della modalità di bilanciamento del carico del cluster:

Modalità di bilanciamento del carico integrata

  1. Apri la configurazione del servizio istio-ingressgateway:

    kubectl edit svc -n istio-system istio-ingressgateway
    

    La configurazione per il servizio istio-ingressgateway si apre nell'editor di testo predefinito della shell.

  2. Nel file, aggiungi la seguente riga sotto il blocco della specifica (spec):

    loadBalancerIP: <your static external IP address>
    

    Ad esempio:

    spec:
     loadBalancerIP: 203.0.113.1
    
  3. Salva il file.

Modalità di bilanciamento del carico manuale

Per esporre un servizio di tipo NodePort con un VIP sul bilanciatore del carico selezionato, devi prima individuare i valori nodePort:

  1. Visualizza la configurazione del servizio istio-ingressgateway nella tua shell:

    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    

    Viene visualizzata ogni porta per i gateway di Anthos Service Mesh. L'output del comando è simile al seguente:

     ...
     ports:
     - name: status-port
       nodePort: 30391
       port: 15020
       protocol: TCP
       targetPort: 15020
     - name: http2
       nodePort: 31380
       port: 80
       protocol: TCP
       targetPort: 80
     - name: https
       nodePort: 31390
       port: 443
       protocol: TCP
       targetPort: 443
     - name: tcp
       nodePort: 31400
       port: 31400
       protocol: TCP
       targetPort: 31400
     - name: https-kiali
       nodePort: 31073
       port: 15029
       protocol: TCP
       targetPort: 15029
     - name: https-prometheus
       nodePort: 30253
       port: 15030
       protocol: TCP
       targetPort: 15030
     - name: https-grafana
       nodePort: 30050
       port: 15031
       protocol: TCP
       targetPort: 15031
     - name: https-tracing
       nodePort: 31204
       port: 15032
       protocol: TCP
       targetPort: 15032
     - name: tls
       nodePort: 30158
       port: 15443
       protocol: TCP
       targetPort: 15443
     ...
    
  2. Esponi queste porte tramite il bilanciatore del carico.

    Ad esempio, la porta di servizio denominata http2 ha port 80 e nodePort 31380. Supponi che gli indirizzi dei nodi per il cluster utente siano 192.168.0.10, 192.168.0.11 e 192.168.0.12 e che il VIP del bilanciatore del carico sia 203.0.113.1.

    Configura il bilanciatore del carico in modo che il traffico inviato a 203.0.113.1:80 venga inoltrato a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puoi selezionare le porte di servizio che vuoi esporre su questo VIP.

Che cosa succede dopo?