Installazione di Anthos Service Mesh sui cluster collegati

Questa guida spiega come eseguire un'installazione pulita della versione di Anthos Service Mesh 1.6.14-asm.2 sui cluster collegati a GKE Enterprise. Utilizza questa guida per installare Anthos Service Mesh nei seguenti ambienti:

  • Amazon Elastic Kubernetes Service (Amazon EKS) sulla versione Kubernetes 1.16
  • Microsoft Azure Kubernetes Service (Microsoft AKS) sulla versione di Kubernetes 1.16

L'installazione abilita le funzionalità supportate sul tuo cluster per il profilo di configurazione asm-multicloud.

Prima di iniziare

Requisiti

  • Il cluster utente su cui installi Anthos Service Mesh ha almeno 4 vCPU, 15 GB di memoria e 4 repliche.

  • Nel cluster non è installato Anthos Service Mesh o Istio open source.

  • 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.

Limitazioni

A un progetto Google Cloud è possibile associare un solo mesh.

Configurazione dell'ambiente

Devi disporre dei seguenti strumenti sulla macchina da 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.

Dopo l'installazione di Google Cloud CLI:

  1. Esegui l'autenticazione con Google Cloud CLI:

    gcloud auth login
    
  2. Aggiorna i componenti:

    gcloud components update
    
  3. Installa kubectl:

    gcloud components install kubectl
    
  4. Installa la versione richiesta di kpt:

       curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2
       chmod +x kpt_0_39_2
       alias kpt="$(readlink -f kpt_0_39_2)"
    
  5. Cambia il contesto nel tuo cluster utente:

    kubectl config use-context CLUSTER_NAME
  6. Concedi le autorizzazioni di amministratore del cluster al tuo account utente (l'indirizzo email di accesso a Google Cloud). Devi disporre di queste autorizzazioni per creare le regole di controllo dell'controllo dell'accesso basato sui ruoli (RBAC) necessarie per Anthos Service Mesh:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

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.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz

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

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.

  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.6.14-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.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-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.6.14-asm.2-osx.tar.gz

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

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.

  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.6.14-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.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-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.6.14-asm.2-win.zip

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

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.

  12. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
    cd istio-1.6.14-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

Configura il webhook di convalida

Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.

Copia il seguente file YAML in un file denominato istiod-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: istiod
  namespace: istio-system
  labels:
    istio.io/rev: asm-1614-2
    app: istiod
    istio: pilot
    release: istio
spec:
  ports:
    - port: 15010
      name: grpc-xds # plaintext
      protocol: TCP
    - port: 15012
      name: https-dns # mTLS with k8s-signed cert
      protocol: TCP
    - port: 443
      name: https-webhook # validation and injection
      targetPort: 15017
      protocol: TCP
    - port: 15014
      name: http-monitoring # prometheus stats
      protocol: TCP
  selector:
    app: istiod
    istio.io/rev: asm-1614-2

Installazione di Anthos Service Mesh

  1. Esegui questo comando per installare Anthos Service Mesh utilizzando il profilo asm-multicloud. Se vuoi abilitare una funzionalità facoltativa supportata, includi -f e il nome del file YAML nella riga di comando seguente. Per saperne di più, consulta Attivazione delle funzionalità facoltative.

    istioctl install \
      --set profile=asm-multicloud \
      --set revision=asm-1614-2
    

    L'argomento --set revision aggiunge a istiod un'etichetta di revisione nel formato istio.io/rev=asm-1614-2. L'etichetta di revisione viene utilizzata dal webhook automatico dell'iniettore sidecar per associare i sidecar inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico dell'inserimento automatico per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta su istiod.

  2. Configura il webhook di convalida in modo che possa individuare il servizio istiod con l'etichetta di revisione:

    kubectl apply -f istiod-service.yaml
    

    Questo comando crea una voce di servizio che consente al webhook di convalida di controllare automaticamente le configurazioni prima che vengano applicate.

Il TLS (mTLS automatico) automatico è abilitato per impostazione predefinita. Con la crittografia automatica mTLS, un proxy sidecar client rileva automaticamente se il server ha un file collaterale. Il client collaterale invia mTLS ai carichi di lavoro con file collaterali e invia traffico di testo normale ai carichi di lavoro senza file collaterali.

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-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Se l'output del comando mostra che uno o più componenti non sono in stato Running, consulta la sezione Risoluzione dei problemi di GKE Enterprise sui cluster collegati per uno script che puoi eseguire per ottenere dettagli sui componenti.

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.

Prima di eseguire il deployment dei carichi di lavoro, assicurati di configurare l'inserimento del proxy sidecar in modo che Anthos Service Mesh possa monitorare e proteggere il traffico.

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.

Per abilitare l'inserimento automatica del file collaterale, etichetta gli spazi dei nomi con la stessa revisione che hai impostato su istiod. Esegui questo comando per mostrare le etichette su istiod:

kubectl -n istio-system get pods -l app=istiod --show-labels

Conferma che l'etichetta di revisione, istio.io/rev=asm-1614-2, si trovi nell'output. Si tratta dell'etichetta che utilizzi per abilitare l'inserimento automatico. Puoi abilitare l'inserimento automatico con un solo comando, ad esempio:

kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --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.

Deployment di un'applicazione di esempio

Anthos Service Mesh fornisce un gateway in entrata preconfigurato, istio-ingressgateway, che puoi utilizzare per gestire il traffico in entrata verso le applicazioni in esecuzione sul tuo mesh di servizi. Per rendere le applicazioni accessibili dall'esterno del cluster, (ad esempio da un browser):

  • Devi ottenere l'indirizzo IP esterno di istio-ingressgateway.

  • L'applicazione deve definire una risorsa gateway e VirtualService, in modo simile all'applicazione di esempio Online Boutique frontend-gateway.yaml.

Per eseguire il deployment e l'esecuzione dell'applicazione di esempio

  1. Scarica l'esempio:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    microservices-demo
    
  2. Attiva l'inserimento automatico del file collaterale:

    kubectl label namespace default istio-injection=enabled
    
  3. Esegui il deployment dell'esempio nel cluster:

    kubectl apply -f microservices-demo
    

Per ottenere l'indirizzo IP esterno di istio-ingressgateway:

  1. Crea la variabile di ambiente della chiave host:

    Microsoft AKS

      export HOST_KEY="ip"
    

    Amazon EKS

      export HOST_KEY="hostname"
    
  2. Crea la variabile di ambiente INGRESS_HOST:

    export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].'"$HOST_KEY"'}')
    
  3. Crea la variabile di ambiente INGRESS_PORT:

    export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    
  4. Visita l'applicazione sul tuo browser. Nel seguente URL, sostituisci EXTERNAL_IP con $INGRESS_HOST:$INGRESS_PORT:

    http://EXTERNAL_IP/

Al termine dell'esplorazione, rimuovi l'esempio:

kubectl delete -f microservices-demo