Questa guida spiega come eseguire un'installazione pulita della versione di Anthos Service Mesh
1.6.14-asm.2 su un cluster GKE su VMware esistente. 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 sul tuo cluster per il profilo di configurazione asm-multicloud
.
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 seguenti requisiti prima di iniziare la configurazione.
Requisiti
Devi avere una sottoscrizione ad Anthos. In alternativa, per GKE Enterprise è disponibile l'opzione di fatturazione con pagamento a consumo solo su Google Cloud. Per ulteriori informazioni, consulta la guida ai prezzi di GKE Enterprise.
Verifica che il cluster utente su cui installi Anthos Service Mesh abbia almeno 4 vCPU, 15 GB di memoria e 4 repliche.
Devi assegnare un nome alle porte di servizio utilizzando la 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.Verifica 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
L'output corretto ha il seguente aspetto:
1.4.0-gke.13 (git-b39331512)
Se non hai installato
gkectl
, vedi Download di GKE on-prem.
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.
- Lo strumento a riga di comando
curl
. - Google Cloud CLI.
Dopo aver installato gcloud CLI:
Esegui l'autenticazione con gcloud CLI:
gcloud auth login
Aggiorna i componenti:
gcloud components update
Installa
kubectl
:gcloud components install kubectl
Se vuoi eseguire il deployment e testare l'installazione con l'applicazione di esempio Online Boutique, installa
kpt
:gcloud components install kpt
Cambia il contesto nel tuo cluster utente (se necessario):
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
Download del file di installazione in corso...
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
install/kubernetes/operator/profiles
.
- Applicazioni di esempio nella directory
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
install/kubernetes/operator/profiles
.
- Applicazioni di esempio nella directory
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
install/kubernetes/operator/profiles
.
- Applicazioni di esempio nella directory
-
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.6.14-asm.2
-
Per praticità, aggiungi gli strumenti nella directory
/bin
al tuo PERCORSO:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
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
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 aistiod
un'etichetta di revisione nel formatoistio.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 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.
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 in esecuzione:
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.
Prima di eseguire il deployment dei carichi di lavoro, configura 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, configura 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.
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:
Configura la modalità di bilanciamento del carico integrata
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.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
Salva il file.
Configura la 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
:
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 ...
Esponi queste porte tramite il bilanciatore del carico.
Ad esempio, la porta di servizio denominata
http2
haport
80 enodePort
31380. Supponi che gli indirizzi dei nodi per il cluster utente siano192.168.0.10
,192.168.0.11
e192.168.0.12
e che il VIP del bilanciatore del carico sia203.0.113.1
.Configura il bilanciatore del carico in modo che il traffico inviato a
203.0.113.1:80
venga inoltrato a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puoi selezionare le porte di servizio che vuoi esporre su questo VIP.