Questa è la prima parte di una guida che illustra una piccola installazione proof of concept di Google Distributed Cloud (solo software) per VMware con un singolo cluster utente. Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnologica. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti diGoogle Cloud , consulta Ruoli e attività comuni degli utenti GKE.
Questo documento mostra come configurare ambienti vSphere e Google Cloud minimi per questa installazione e pianificare gli indirizzi IP, mentre il documento successivo Crea cluster di base mostra come creare una workstation di amministrazione, un cluster di amministrazione e un cluster utente.
L'infrastruttura configurata utilizzando questa guida potrebbe non essere adatta alle tue esigenze di produzione e ai tuoi casi d'uso effettivi. Per saperne di più sulle installazioni di produzione, consulta la panoramica dell'installazione e le guide.
Prima di iniziare
Leggi la panoramica di Google Distributed Cloud solo software per VMware, che include una panoramica di ogni componente che installerai in questa configurazione.
Consulta le versioni supportate di vSphere.
Consulta i requisiti di licenza di vSphere. Per questa installazione minima, è sufficiente una licenza vSphere Standard.
Devi avere un'istanza in esecuzione di vCenter Server.
Devi disporre di un account utente vCenter con privilegi sufficienti. Prendi nota del nome utente e della password di questo account.
Assicurati di avere familiarità con alcuni concetti di base di Google Cloud , tra cui progetti, autorizzazioni IAM e service account. In caso contrario, consulta le seguenti guide per saperne di più:
Panoramica della procedura
Questi sono i passaggi principali di questa configurazione:
- Configura l'ambiente. Assicurati di soddisfare i requisiti delle risorse. Forniamo un esempio di configurazione per un host ESXi e un datastore vSphere che soddisfano i requisiti per questa installazione.
- Configura gli oggetti vSphere. I componenti di Google Distributed Cloud vengono eseguiti all'interno di una gerarchia di oggetti vSphere.
- Pianifica gli indirizzi IP. Google Distributed Cloud richiede di fornire indirizzi IP per tutti i nodi, oltre a indirizzi IP virtuali (VIP) per l'accesso di amministratori e utenti al deployment. Per questa configurazione, utilizzerai indirizzi IP statici per i nodi del cluster. Forniamo esempi, ma ti consigliamo di consultare l'amministratore di rete per scegliere gli indirizzi adatti alla tua rete.
- Configura le regole del firewall e del proxy
- Configura le risorse Google Cloud , tra cui un progetto Google Cloud che utilizzerai per configurare e gestire Google Distributed Cloud e un account di servizio con le autorizzazioni necessarie per accedere e scaricare il software dei componenti di Google Distributed Cloud.
1. Configura l'ambiente
Per questa installazione minima, puoi utilizzare un singolo host fisico che esegue ESXi.
Assicurati che l'host abbia i seguenti requisiti minimi di CPU, RAM e capacità di archiviazione:
- 8 CPU fisiche a 2,7 GHz con hyperthreading abilitato
- 80 gibibyte (GiB) di RAM
- 470 GiB di spazio di archiviazione
Assicurati di aver installato ESXi versione 7.0u2 o successiva.
Assicurati di utilizzare vCenter Server versione 7.0u2 o successiva.
Host e datastore di esempio
Ecco un esempio di un host ESXi e di un datastore vSphere che soddisfano i requisiti:
Configurazione dell'host ESXi:
- Produttore: Dell Inc.
- CPU fisiche: 8 CPU a 2,7 GHz
- Tipo di processore: CPU Intel(R) Xeon(R) Platinum 8168 a 2,70 GHz
- Socket del processore: 2
- Versione ESXi: 7.0u2 o successive
- Versione di vCenter Server: 7.0u2 o successive
- Hyperthreading: abilitato
Configurazione del datastore:
- Tipo: VMFS 6.82
- Tipo di unità: SSD
- Fornitore: DELL
- Tipo di unità: logica
- Livello RAID: RAID1
2. Configura gli oggetti vSphere
Configura i seguenti oggetti nel tuo ambiente vSphere:
Prendi nota dei nomi del data center, del cluster, del datastore e della rete vSphere, perché ti serviranno durante la configurazione della workstation di amministrazione in Crea cluster di base.
Se hai configurato un datastore vSAN, utilizza govc per creare una cartella nella directory datastore da utilizzare per il disco della macchina virtuale (VMDK) di Google Distributed Cloud:
govc datastore.mkdir -namespace=true data-disks
3. Pianifica gli indirizzi IP
Come hai visto nella panoramica di Google Distributed Cloud, un'installazione di Google Distributed Cloud richiede un numero di indirizzi IP, tra cui:
- Indirizzi IP per tutti i nodi
- Indirizzi IP virtuali (VIP) per l'accesso ai componenti del control plane, come i server API Kubernetes, e alle applicazioni in esecuzione nei cluster utente
- Intervalli CIDR per la comunicazione tra pod e servizi
Per questo motivo, una parte importante della configurazione di Google Distributed Cloud è la pianificazione degli indirizzi IP, inclusa la garanzia di non creare conflitti di indirizzamento. Potresti aver bisogno dell'aiuto dell'amministratore di rete per trovare i valori adatti da configurare, anche per questa semplice installazione. Nel resto di questa sezione forniamo esempi illustrativi di valori che funzionano per questa installazione in una rete ipotetica. I tuoi valori saranno diversi.
I cluster in questa installazione minima utilizzano il bilanciatore del carico MetalLB in bundle. Questo bilanciatore del carico viene eseguito sui nodi del cluster, quindi non sono necessarie VM aggiuntive per il bilanciamento del carico.
Google Distributed Cloud ti consente di scegliere se fornire indirizzi IP statici per i nodi del cluster o utilizzare un server DHCP. In questa semplice installazione, utilizzerai indirizzi IP statici.
VLAN di esempio
Per questa installazione di piccole dimensioni, ti consigliamo di inserire la workstation di amministrazione, i nodi del cluster di amministrazione e i nodi del cluster utente nella stessa VLAN della rete vSphere. Ad esempio, supponiamo che tutti gli indirizzi IP nell'intervallo 172.16.20.0/24 siano indirizzati a una determinata VLAN. Supponiamo inoltre che l'amministratore di rete ti dica che puoi utilizzare 172.16.20.49 - 172.16.20.69 per le VM e gli indirizzi IP virtuali (VIP).
Il seguente diagramma illustra una VLAN con una workstation di amministrazione, un cluster di amministrazione e un cluster utente. Tieni presente che i VIP non sono associati a nessun nodo specifico di un cluster. Questo perché il bilanciatore del carico MetalLB può scegliere quale nodo annuncia il VIP per un singolo servizio. Ad esempio, nel cluster utente, un nodo worker potrebbe annunciare 172.16.20.64 e un altro nodo worker potrebbe annunciare 172.16.20.65.
Esempio di indirizzo IP: workstation di amministrazione
Per la workstation di amministrazione, questo esempio utilizza il primo indirizzo dell'intervallo fornito dall'amministratore di rete: 172.16.20.49.
Indirizzi IP di esempio: nodi del cluster
La tabella seguente mostra un esempio di come gli indirizzi IP potrebbero essere utilizzati per i nodi del cluster. Tieni presente che la tabella mostra gli indirizzi di due nodi aggiuntivi: admin-vm-6 e user-vm-5. I nodi aggiuntivi sono necessari durante gli upgrade, gli aggiornamenti e la riparazione automatica del cluster. Per saperne di più, consulta Gestisci gli indirizzi IP dei nodi.
| Nome host della VM | Descrizione | Indirizzo IP |
|---|---|---|
| admin-vm-1 | Nodo del control plane per il cluster di amministrazione. | 172.16.20.50 |
| admin-vm-2 | Nodo del control plane per il cluster di amministrazione. | 172.16.20.51 |
| admin-vm-3 | Nodo del control plane per il cluster di amministrazione. | 172.16.20.52 |
| user-vm-1 | Nodo del control plane per il cluster utente. | 172.16.20.53 |
| user-vm-2 | Nodo worker del cluster utente | 172.16.20.54 |
| user-vm-3 | Nodo worker del cluster utente | 172.16.20.55 |
| user-vm-4 | Nodo worker del cluster utente | 172.16.20.56 |
| user-vm-5 | 172.16.20.57 |
Esempi di indirizzi IP: VIP per il cluster di amministrazione
La tabella seguente mostra un esempio di come specificare un VIP del control plane per il cluster di amministrazione.
| VIP | Descrizione | Indirizzo IP |
|---|---|---|
| VIP per il server API Kubernetes del cluster di amministrazione | Configurato sul bilanciatore del carico per il cluster di amministrazione. | 172.16.20.58 |
Esempi di indirizzi IP: VIP per il cluster utente
La tabella seguente fornisce un esempio di come specificare i VIP per il cluster utente.
Tieni presente che il VIP per il server API Kubernetes del cluster utente e il VIP in entrata si trovano entrambi nella stessa VLAN dei nodi worker e dei nodi del control plane.
| VIP | Descrizione | Indirizzo IP |
|---|---|---|
| VIP per il server API Kubernetes del cluster utente | Configurato sul bilanciatore del carico per il cluster di amministrazione. | 172.16.20.59 |
| VIP in entrata | Configurato sul bilanciatore del carico per il cluster utente. | 172.16.20.60 |
| VIP del servizio | Dieci indirizzi per i servizi di tipo LoadBalancer.Configurato in base alle esigenze sul bilanciatore del carico per il cluster utente. Tieni presente che questo intervallo include il VIP Ingress. Questo è un requisito per il bilanciatore del carico MetalLB. |
172.16.20.60 - 172.16.20.69 |
Indirizzi IP per pod e servizi
Oltre agli indirizzi IP per i nodi del cluster e per l'accesso al deployment, devi anche specificare gli intervalli di indirizzi che possono essere utilizzati all'interno di ogni cluster per il traffico interno al cluster.
Per farlo, devi specificare un intervallo CIDR da utilizzare per gli indirizzi IP dei pod e un altro intervallo CIDR da utilizzare per gli indirizzi ClusterIP dei servizi Kubernetes. Questi vengono specificati nell'ambito della configurazione del cluster, come vedrai nella parte successiva di questa guida.
Nell'ambito della pianificazione degli IP, decidi quali intervalli CIDR vuoi utilizzare per pod e servizi. A meno che tu non abbia un motivo per fare diversamente, utilizza i seguenti intervalli predefiniti:
| Finalità | Intervallo CIDR predefinito |
|---|---|
| Pod del cluster di amministrazione | 192.168.0.0/16 |
| Pod del cluster utente | 192.168.0.0/16 |
| Servizi del cluster di amministrazione | 10.96.232.0/24 |
| Servizi del cluster utente | 10.96.0.0/20 |
I valori predefiniti illustrano questi punti:
L'intervallo CIDR dei pod può essere lo stesso per più cluster.
L'intervallo CIDR dei servizi di un cluster non deve sovrapporsi all'intervallo CIDR dei servizi di un altro cluster.
In genere sono necessari più pod che servizi, quindi per un determinato cluster probabilmente vorrai un intervallo CIDR dei pod più grande dell'intervallo CIDR dei servizi. Ad esempio, l'intervallo di pod predefinito per un cluster utente ha 2^(32-16) = 2^16 indirizzi, ma l'intervallo di servizi predefinito per un cluster utente ha solo 2^(32-20) = 2^12 indirizzi.
Evita la sovrapposizione
In alcuni casi, potrebbe essere necessario utilizzare intervalli CIDR non predefiniti per evitare la sovrapposizione con gli indirizzi IP raggiungibili sulla tua rete. Gli intervalli di servizi e pod non devono sovrapporsi a indirizzi esterni al cluster che vuoi raggiungere dall'interno del cluster.
Ad esempio, supponiamo che l'intervallo di servizi sia 10.96.232.0/24 e l'intervallo di pod sia 192.168.0.0/16. Qualsiasi traffico inviato da un pod a un indirizzo in uno di questi intervalli verrà considerato interno al cluster e non raggiungerà alcuna destinazione esterna al cluster.
In particolare, gli intervalli di servizi e pod non devono sovrapporsi a:
Indirizzi IP dei nodi in qualsiasi cluster
Indirizzi IP utilizzati dalle macchine del bilanciatore del carico
VIP utilizzati dai nodi del control plane e dai bilanciatori del carico
Indirizzo IP dei server vCenter, dei server DNS e dei server NTP
Ti consigliamo di utilizzare gli intervalli di indirizzi IP interni definiti da RFC 1918 per gli intervalli di pod e servizi.
Questo è uno dei motivi per cui si consiglia di utilizzare gli indirizzi RFC 1918. Supponiamo che l'intervallo di pod o servizi contenga indirizzi IP esterni. Qualsiasi traffico inviato da un pod a uno di questi indirizzi esterni verrà trattato come traffico interno al cluster e non raggiungerà la destinazione esterna.
Server DNS e gateway predefinito
Prima di creare i cluster di amministrazione e utente, devi anche conoscere gli indirizzi IP di:
Un server DNS che può essere utilizzato dalla workstation di amministrazione e dai nodi del cluster
Un server NTP che può essere utilizzato dai nodi del cluster
L'indirizzo IP del gateway predefinito per la subnet che contiene la workstation di amministrazione e i nodi del cluster. Ad esempio, supponiamo che la workstation di amministrazione, i nodi del cluster di amministrazione e i nodi del cluster utente si trovino tutti nella subnet 172.16.20.0/24. L'indirizzo del gateway predefinito per la subnet potrebbe essere 172.16.20.1.
4. Configura il firewall e il proxy
Configura il firewall e il proxy per consentire il traffico necessario di Google Distributed Cloud, seguendo le regole del proxy e del firewall. Per eseguire questa attività, avrai bisogno degli indirizzi IP dei nodi del cluster identificati nella sezione precedente. Tieni presente che, poiché gli indirizzi IP dei cluster utente e di amministrazione non sono assegnati a nodi specifici, devi assicurarti che tutte le regole firewall pertinenti vengano applicate a tutti gli indirizzi IP di ciascun cluster.
5. Configura le risorse Google Cloud
I progettiGoogle Cloud sono la base per creare, abilitare e utilizzare tutti i servizi Google Cloud , inclusi quelli utilizzati per installare e gestire Google Distributed Cloud. Se non hai dimestichezza con i progetti Google Cloud , puoi trovare molte altre informazioni nella pagina Creazione e gestione dei progetti.
Scegli un progetto Google Cloud esistente o creane uno nuovo.
Prendi nota dell'ID progetto Google Cloud , perché ti servirà in un secondo momento.
Configura Google Cloud CLI
Google Cloud CLI è uno strumento a riga di comando che puoi utilizzare per lavorare con il tuo progetto. Segui le istruzioni riportate in Installazione di Google Cloud SDK per assicurarti di avere la versione più aggiornata.
Autorizzazioni obbligatorie
Se sei il Project Owner (ad esempio, se hai creato tu il progetto), disponi già di tutte le autorizzazioni necessarie per eseguire il resto di questa semplice installazione. Se non sei il Project Owner, tu o l'amministratore del progetto dovete assicurarvi che il tuo Account Google disponga delle autorizzazioni necessarie.
I seguenti ruoli IAM ti consentono di creare un account di servizio, assegnargli ruoli IAM, abilitare le API e assicurarti che lo strumento gkeadm possa creare e gestire i service account per te nella seconda parte di questa configurazione:
resourcemanager.projectIamAdminserviceusage.serviceUsageAdminiam.serviceAccountCreatoriam.serviceAccountKeyAdmin
Per informazioni dettagliate sulle autorizzazioni necessarie per concedere i ruoli IAM, consulta Concessione, modifica e revoca dell'accesso alle risorse. Se non disponi di queste autorizzazioni, un altro utente della tua organizzazione deve concederti i ruoli.
Per concedere i ruoli:
Linux e macOS
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/resourcemanager.projectIamAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/serviceusage.serviceUsageAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/iam.serviceAccountKeyAdmin"
Windows
gcloud projects add-iam-policy-binding PROJECT_ID ^
--member="user:ACCOUNT" ^
--role="roles/resourcemanager.projectIamAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID ^
--member="user:ACCOUNT" ^
--role="roles/serviceusage.serviceUsageAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID ^
--member="user:ACCOUNT" ^
--role="roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID ^
--member="user:ACCOUNT" ^
--role="roles/iam.serviceAccountKeyAdmin"
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo progetto Google CloudACCOUNT: l'indirizzo email identificativo del tuo Account Google
Configura i service account
Il tuo progetto Google Cloud deve avere quattro service account che Google Distributed Cloud può utilizzare. In questo esercizio, due di questi service account vengono generati automaticamente. Tuttavia, devi creare manualmente gli altri due service account:
- Account di servizio Connect-register (generato automaticamente)
- Account di servizio di logging-monitoring (generato automaticamente)
- Account di servizio di audit logging (creato manualmente)
- Account di servizio di accesso ai componenti (creato manualmente)
Account di servizio di audit logging
Nel tuo progetto Google Cloud , crea un account di servizio che Google Distributed Cloud può utilizzare per inviare gli audit log di Kubernetes dal tuo cluster a Cloud Audit Logs. Questo è l'account di servizio di audit logging.
gcloud iam service-accounts create audit-logging-sa \ --display-name "Audit Logging Service Account" \ --project PROJECT_IDSostituisci
PROJECT_IDcon l'ID del tuo progettoGoogle Cloud .Recupera l'indirizzo email del account di servizio di audit logging appena creato:
gcloud iam service-accounts list \ --project PROJECT_IDCrea una chiave JSON per il account di servizio di audit logging:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL_AUDIT_LOGGINGSostituisci
SERVICE_ACCOUNT_EMAIL_AUDIT_LOGGINGcon l'indirizzo email del tuo account di servizio di audit logging.Non è necessario concedere alcun ruolo al account di servizio di audit logging.
Account di servizio di accesso ai componenti
Nel tuo progetto Google Cloud , crea un account di servizio che Google Distributed Cloud può utilizzare per scaricare il codice dei componenti del cluster per tuo conto da Artifact Registry. Questo è chiamato service account di accesso ai componenti.
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_IDSostituisci
PROJECT_IDcon l'ID del tuo progettoGoogle Cloud .Recupera l'indirizzo email del account di servizio di accesso ai componenti appena creato:
gcloud iam service-accounts list \ --project PROJECT_IDCrea una chiave JSON per il account di servizio di accesso ai componenti:
gcloud iam service-accounts keys create component-access-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL_COMPONENT_ACCESS
Sostituisci
SERVICE_ACCOUNT_EMAIL_COMPONENT_ACCESScon l'indirizzo email del tuo account di servizio di accesso ai componenti.Aggiungi i seguenti ruoli IAM al tuo account di servizio di accesso ai componenti:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL_COMPONENT_ACCESS" \ --role "roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL_COMPONENT_ACCESS" \ --role "roles/iam.roleViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL_COMPONENT_ACCESS" \ --role "roles/iam.serviceAccountViewer"
Abilita le API di Google
Abilita le seguenti API di Google nel tuo progetto Google Cloud . In questo modo, puoi utilizzare tutti i servizi Google Cloud necessari per Google Distributed Cloud nel tuo progetto.
gcloud services enable --project PROJECT_ID \ anthos.googleapis.com \ anthosgke.googleapis.com \ anthosaudit.googleapis.com \ cloudresourcemanager.googleapis.com \ connectgateway.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ gkeonprem.googleapis.com \ kubernetesmetadata.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ opsconfigmonitoring.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ iam.googleapis.com \ storage.googleapis.comSe è la prima volta che abiliti l'API GKE On-Prem (
gkeonprem.googleapis.com) nel tuo progetto, devi inizializzare l'API. Puoi farlo chiamando un comando gcloud CLI che mostra le versioni disponibili che puoi utilizzare per creare un cluster utente:gcloud container vmware clusters query-version-config \ --project=PROJECT_ID \ --location="us-central1"Passaggi successivi