Questa guida spiega come installare Anthos Service Mesh versione 1.9.8-asm.6 su GKE su AWS.
Con Anthos Service Mesh, il gateway Ingress Istio è preinstallato. Tuttavia, se preferisci utilizzare un controller Ingress, puoi utilizzare Anthos Service Mesh per configurare una risorsa Kubernetes Ingress. Questa guida mostra come installare Anthos Service Mesh e, facoltativamente, configurare una risorsa Kubernetes Ingress.
Prima di iniziare
Prima di iniziare l'installazione di Anthos Service Mesh, assicurati di aver eseguito le seguenti attività:
- Installa un servizio di gestione.
- Crea un cluster utente.
- Configura il networking AWS.
- Esamina i requisiti e le limitazioni seguenti prima di iniziare la configurazione.
Requisiti
Assicurati che il cluster utente su cui installi Anthos Service Mesh abbia almeno 4 vCPU, 15 GB di memoria e 4 nodi.
Consulta la pagina relativa all'assegnazione di nomi alle porte dei servizi prima di eseguire il deployment dei carichi di lavoro.
Assicurati che la versione del tuo cluster sia elencata in Piattaforme supportate.
Limitazioni
A un progetto Google Cloud è possibile associare un solo mesh.
Configura l'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.
- Lo strumento a riga di comando
curl
. - Google Cloud CLI.
Dopo l'installazione di Google Cloud CLI:
Esegui l'autenticazione con Google Cloud CLI:
gcloud auth login
Aggiorna i componenti:
gcloud components update
Installa
kubectl
:gcloud components install kubectl
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)"
Cambia il contesto nel tuo cluster utente:
kubectl config use-context CLUSTER_NAME
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
Scarica il file di installazione
Linux
Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz
Scarica il file della firma e utilizza
openssl
per verificare la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig istio-1.9.8-asm.6-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
L'output previsto è:
Verified OK
.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.9.8-asm.6-linux-amd64.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.9.8-asm.6
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.9.8-asm.6
Mac OS
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.9.8-asm.6-osx.tar.gz
Scarica il file della firma e utilizza
openssl
per verificare la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.9.8-asm.6-osx.tar.gz.1.sig istio-1.9.8-asm.6-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
L'output previsto è:
Verified OK
.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.9.8-asm.6-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.9.8-asm.6
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.9.8-asm.6
Windows
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.9.8-asm.6-win.zip
Scarica il file della firma e utilizza
openssl
per verificare la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip.1.sig openssl dgst -verify - -signature istio-1.9.8-asm.6-win.zip.1.sig istio-1.9.8-asm.6-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
L'output previsto è:
Verified OK
.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.9.8-asm.6-win.zip
Il comando crea una directory di installazione nella directory di lavoro corrente denominata
istio-1.9.8-asm.6
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.9.8-asm.6
Installazione di Anthos Service Mesh
Questa sezione spiega come installare Anthos Service Mesh sul tuo cluster utente, in modo da abilitare le funzionalità predefinite supportate elencate nella pagina Funzionalità supportate per il profilo asm-multicloud
. Puoi scegliere di abilitare Ingress per la subnet pubblica
o quella privata.
Pubblico
Se necessario, passa alla directory
istio-1.9.8-asm.6
. Il clientistioctl
dipende dalla versione. Assicurati di utilizzare la versione presente nella directoryistio-1.9.8-asm.6/bin
.Esegui questo comando per installare Anthos Service Mesh. Se vuoi abilitare una funzionalità facoltativa supportata, includi
-f
e il nome del file YAML nella riga di comando seguente. Per ulteriori informazioni, consulta Attivazione delle funzionalità facoltative.Installa Anthos Service Mesh:
bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --set revision=asm-198-6
L'argomento
--set revision
aggiunge aistiod
un'etichetta di revisione nel formatoistio.io/rev=asm-198-6
. L'etichetta di revisione viene utilizzata dal webhook automatico dell'iniettore sidecar per associare i sidecar inseriti a una determinata revisioneistiod
. Per abilitare l'inserimento automatico dell'inserimento automatico per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta suistiod
.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.
Privato
Di seguito, aggiungi l'annotazione service.beta.kubernetes.io/aws-load-balancer-internal
a tutti i servizi creati da Anthos Service Mesh. Se è presente questa annotazione,
GKE su AWS crea servizi Ingress privati.
Se necessario, passa alla directory
istio-1.9.8-asm.6
. Il clientistioctl
dipende dalla versione. Assicurati di utilizzare la versione presente nella directoryistio-1.9.8-asm.6/bin
.Salva il seguente file YAML in un file denominato
istio-operator-internal-lb.yaml
:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - enabled: true k8s: serviceAnnotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" name: istio-ingressgateway
Esegui questo comando per installare Anthos Service Mesh. Se vuoi abilitare una funzionalità facoltativa supportata, includi
-f
e il nome del file YAML nella riga di comando seguente. Per ulteriori informazioni, consulta Attivazione delle funzionalità facoltative.bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --set revision=asm-198-6 \ -f istio-operator-internal-lb.yaml
L'argomento
--set revision
aggiunge aistiod
un'etichetta di revisione nel formatoistio.io/rev=asm-198-6
. L'etichetta di revisione viene utilizzata dal webhook automatico dell'iniettore sidecar per associare i sidecar inseriti a una determinata revisioneistiod
. Per abilitare l'inserimento automatico dell'inserimento automatico per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda all'etichetta suistiod
.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.
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
Ora hai installato il piano di controllo Anthos Service Mesh con il gateway Ingress preinstallato. Se hai bisogno solo della funzionalità in entrata utilizzando un controller Ingress, puoi installare le applicazioni nel tuo cluster. Consulta Creazione di un deployment di esempio, che mostra come configurare una risorsa Ingress.
Se vuoi sfruttare tutte le funzionalità fornite da Anthos Service Mesh, continua con la fase successiva dell'installazione per inserire i proxy sidecar e riavviare i tuoi carichi di lavoro.
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.
L'installazione non è completa finché non attivi l'inserimento automatico del proxy sidecar (inserimento automatico) e riavvii i pod per qualsiasi carico di lavoro in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh.
Per abilitare l'inserimento automatico, etichetta gli spazi dei nomi con l'etichetta di revisione
che è stata impostata il giorno istiod
al momento dell'installazione di Anthos Service Mesh. L'etichetta di revisione viene utilizzata dal webhook iniettore sidecar per associare i file collaterali inseriti a una determinata revisione istiod
. Dopo aver aggiunto l'etichetta, tutti i pod esistenti nello spazio dei nomi devono essere riavviati per poter inserire i file collaterali.
Prima di eseguire il deployment di nuovi carichi di lavoro in un nuovo spazio dei nomi, assicurati di configurare l'inserimento automatico in modo che Anthos Service Mesh possa monitorare e proteggere il traffico.
Per abilitare l'inserimento automatico:
Utilizza il seguente comando per individuare l'etichetta di revisione su
istiod
:kubectl -n istio-system get pods -l app=istiod --show-labels
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-198-6-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-198-6-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
Nell'output, sotto la colonna
LABELS
, prendi nota del valore dell'etichetta di revisioneistiod
, che segue il prefissoistio.io/rev=
. In questo esempio, il valore èasm-198-6
.Applica l'etichetta di revisione e rimuovi l'etichetta
istio-injection
, se esistente. Nel seguente comando,NAMESPACE
è il nome dello spazio dei nomi in cui vuoi abilitare l'inserimento automatico eREVISION
è l'etichetta di revisione che hai annotato nel passaggio precedente.kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Puoi ignorare il messaggio
"istio-injection not found"
nell'output. Ciò significa che lo spazio dei nomi non aveva in precedenza l'etichettaistio-injection
, cosa che dovresti aspettarti nelle nuove installazioni di Anthos Service Mesh o nei nuovi deployment. Poiché l'inserimento automatica non riesce se uno spazio dei nomi contiene sia l'etichettaistio-injection
sia l'etichetta di revisione, tutti i comandikubectl label
nella documentazione di Anthos Service Mesh comprendono la rimozione dell'etichettaistio-injection
.Se i carichi di lavoro erano in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh, riavvia i pod per attivare la reiniezione.
La modalità di riavvio dei pod dipende dall'applicazione e dall'ambiente in cui si trova il cluster. Ad esempio, nell'ambiente di gestione temporanea potresti semplicemente eliminare tutti i pod, il che comporta il riavvio. Tuttavia, nell'ambiente di produzione potresti avere un processo che implementa un deployment blu/verde in modo da poter riavviare i pod in modo sicuro ed evitare interruzioni del traffico.
Puoi utilizzare
kubectl
per eseguire un riavvio in sequenza:kubectl rollout restart deployment -n NAMESPACE
Verifica che i pod siano configurati in modo da puntare alla nuova versione di
istiod
.kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Accesso al gateway Ingress
Anthos Service Mesh fornisce un gateway Ingress 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 o il nome host e la porta del bilanciatore del carico esterno che può essere utilizzato da
istio-ingressgateway
.L'applicazione deve definire una risorsa gateway e VirtualService, in modo simile all'applicazione di esempio Online Boutique
frontend-gateway.yaml
.
Per ottenere l'indirizzo esterno di istio-ingressgateway
:
Crea la variabile di ambiente
INGRESS_HOST
:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
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}')
Per eseguire il test, esegui il deployment di un'applicazione di esempio, ad esempio Online Boutique.
Per accedere all'applicazione sul browser, utilizza il valore
$INGRESS_HOST:$INGRESS_PORT
nell'URL.
Passaggi successivi
- Crea un deployment di esempio su GKE su AWS.