Configura l'infrastruttura minima

Questa è la prima parte di una guida che illustra una piccola installazione proof of concept di Google Distributed Cloud con un singolo cluster utente.

Questo documento mostra come configurare ambienti vSphere e Google Cloud minimi per questa installazione e pianificare i tuoi indirizzi IP, mentre il follow-up Creazione di cluster di base mostra come creare una workstation di amministrazione, un cluster di amministrazione e un cluster utente.

L'infrastruttura che configuri 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

Panoramica della procedura

Di seguito sono riportati i passaggi principali necessari per questa configurazione:

  1. Configura l'ambiente. Assicurati di soddisfare i requisiti delle risorse. Viene fornita una configurazione di esempio per un host ESXi e un datastore vSphere che soddisfano i requisiti di questa installazione.
  2. Configura oggetti vSphere. I componenti di Google Distributed Cloud vengono eseguiti all'interno di una gerarchia di oggetti vSphere.
  3. Pianifica gli indirizzi IP. Google Distributed Cloud richiede che tu fornisca gli indirizzi IP per tutti i nodi, oltre agli indirizzi IP virtuali (VIP) per l'accesso come amministratore e utente al tuo deployment. Per questa configurazione utilizzerai indirizzi IP statici per i nodi del cluster. Forniamo alcuni esempi, anche se ti consigliamo di consultare il tuo amministratore di rete per scegliere gli indirizzi adatti per la tua rete.
  4. Configura le regole del firewall e del proxy
  5. Configura le risorse Google Cloud, tra cui un progetto Google Cloud che utilizzerai durante la configurazione e la gestione di Google Distributed Cloud e un account di servizio con le autorizzazioni necessarie per accedere e scaricare il software del componente Google Distributed Cloud.

1. Configura l'ambiente

Per questa installazione minima, puoi utilizzare un singolo host fisico che esegue ESXi.

  1. Assicurati che l'host disponga della seguente capacità minima di CPU, RAM e spazio di archiviazione:

    • 8 CPU fisiche con hyperthreading a 2,7 GHz abilitato
    • 80 gibibyte (GiB) di RAM
    • 470 GiB di spazio di archiviazione
  2. Assicurati di avere installato ESXi versione 7.0u2 o successiva.

  3. Assicurati di utilizzare vCenter Server versione 7.0u2 o successiva.

Host e datastore di esempio

Ecco un esempio di un host ESXi e un datastore vSphere che soddisfano i requisiti:

  • Configurazione 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 processore: 2
    • Versione ESXi: 7.0u2 o successiva
    • vCenter Server versione: 7.0u2 o successiva
    • Hyperthreading: abilitato
  • Configurazione Datastore:

    • Tipo: VMFS 6.82
    • Tipo di unità: SSD
    • Fornitore: DELL
    • Tipo di unità: logico
    • Livello RAID: RAID1

2. Configura oggetti vSphere

Configura i seguenti oggetti nel tuo ambiente vSphere:

Prendi nota dei nomi di data center, cluster, datastore e rete vSphere, che ti serviranno durante la configurazione della workstation di amministrazione in Creare 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 GKE on VMware:

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 una serie di indirizzi IP, tra cui:

  • Indirizzi IP per tutti i nodi
  • Indirizzi IP virtuali (VIP) per l'accesso ai componenti del piano di controllo, come i server API di Kubernetes, e alle applicazioni in esecuzione sui tuoi cluster utente
  • Intervalli CIDR per la comunicazione tra pod e servizi

Per questo motivo, una parte importante della configurazione di Google Distributed Cloud consiste nella pianificazione degli indirizzi IP e nell'assicurarsi che non si creino conflitti di indirizzo. Potrebbe essere necessario che l'amministratore di rete ti aiuti a trovare i valori adatti da configurare, anche per questa semplice installazione. Nel resto di questa sezione forniamo esempi illustrativi di valori utilizzabili per questa installazione in una rete ipotetica (i 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 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 piccola installazione, ti consigliamo di collocare la workstation di amministrazione, i nodi del cluster di amministrazione e i nodi del cluster utente sulla stessa VLAN nella rete vSphere. Ad esempio, supponiamo che tutti gli indirizzi IP nell'intervallo 172.16.20.0/24 siano instradati a una determinata VLAN. Inoltre, supponiamo che l'amministratore di rete abbia indicato che puoi utilizzare 172.16.20.49-172.16.20.69 per VM e indirizzi IP virtuali (VIP).

Il seguente diagramma illustra una VLAN con una workstation di amministrazione, un cluster di amministrazione e un cluster utente. Nota che non vengono mostrati i VIP associati a un nodo specifico in 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 nodo worker diverso potrebbe annunciare 172.16.20.65.

Indirizzi IP per un cluster di amministrazione e un cluster utente.
Indirizzi IP per un cluster di amministrazione e un cluster utente (fai clic per ingrandire)

Esempio di indirizzo IP: workstation di amministrazione

Per la workstation di amministrazione, questo esempio utilizza il primo indirizzo nell'intervallo fornito dall'amministratore di rete: 172.16.20.49.

Indirizzi IP di esempio: nodi cluster

La tabella seguente offre un esempio di come è possibile utilizzare gli indirizzi IP per i nodi 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 ulteriori informazioni, consulta Gestire gli indirizzi IP dei nodi.

Nome host VM Descrizione Indirizzo IP
admin-vm-1 Nodo del piano di controllo per il cluster di amministrazione. 172.16.20.50
admin-vm-2 Nodo del piano di controllo per il cluster di amministrazione. 172.16.20.51
admin-vm-3 Nodo del piano di controllo per il cluster di amministrazione. 172/16/20/52
user-vm-1 Nodo del piano di controllo 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 fornisce un esempio di come puoi specificare un VIP del piano di controllo 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 è possibile 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 piano di controllo.

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 di 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 in entrata. 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 accedere al deployment, devi specificare anche gli intervalli di indirizzi che possono essere utilizzati all'interno di ciascun cluster per il traffico nel 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. Queste vengono specificate come parte della configurazione del cluster, come vedrai nella parte successiva di questa guida.

Nell'ambito della pianificazione IP, decidi quali intervalli CIDR utilizzare per pod e servizi. A meno che tu non abbia un motivo per farlo, utilizza i seguenti intervalli predefiniti:

FinalitàIntervallo CIDR predefinito
Pod del cluster di amministrazione192.168.0.0/16
Pod del cluster utente192.168.0.0/16
Servizi del cluster di amministrazione10.96.232.0/24
Servizi del cluster utente10.96.0.0/20

I valori predefiniti indicano questi punti:

  • L'intervallo CIDR dei pod può essere lo stesso per più cluster.

  • L'intervallo CIDR del servizio di un cluster non deve sovrapporsi all'intervallo CIDR del servizio di qualsiasi altro cluster.

  • In genere hai bisogno di più pod rispetto ai servizi. Di conseguenza, per un dato cluster, probabilmente vorrai un intervallo CIDR pod più ampio dell'intervallo CIDR servizio. Ad esempio, l'intervallo di pod predefinito per un cluster utente ha 2^(32-16) = 2^16 indirizzi, mentre l'intervallo di servizi predefinito per un cluster utente ha solo 2^(32-20) = 2^12 indirizzi.

Evita sovrapposizioni

In alcuni casi potresti dover 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 ad alcun indirizzo esterno 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. Tutto il traffico inviato da un pod a un indirizzo in uno di questi intervalli verrà considerato nel 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 dei bilanciatori del carico

  • VIP utilizzati dai nodi del piano di controllo e dai bilanciatori del carico

  • Indirizzo IP di server vCenter, server DNS e server NTP

Ti consigliamo di utilizzare gli intervalli di indirizzi IP interni definiti dalla specifica RFC 1918 per gli intervalli di pod e servizi.

Ecco uno dei motivi per cui si consiglia di utilizzare indirizzi RFC 1918. Supponiamo che il tuo intervallo di pod o servizi contenga indirizzi IP esterni. Tutto il traffico inviato da un pod a uno di questi indirizzi esterni verrà trattato come traffico nel cluster e non raggiungerà la destinazione esterna.

Server DNS e gateway predefinito

Prima di creare i cluster di amministrazione e utente, devi conoscere anche 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 tua workstation di amministrazione, i nodi del cluster di amministrazione e i nodi del cluster utente si trovino 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 Google Distributed Cloud necessario, seguendo le regole proxy e firewall. Per eseguire questa attività, avrai bisogno degli indirizzi IP dei nodi cluster che hai identificato 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 progetti Google 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.

  1. Scegli un progetto Google Cloud esistente o creane uno nuovo.

  2. Prendi nota dell'ID progetto Google Cloud, perché sarà necessario in seguito.

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 proprietario del progetto (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 proprietario del progetto, tu o l'amministratore del progetto dovete garantire che il tuo Account Google disponga delle autorizzazioni necessarie.

I seguenti ruoli IAM consentono di creare un account di servizio, assegnargli ruoli IAM, abilitare le API e garantire che lo strumento gkeadm possa creare e gestire gli account di servizio per te nella seconda parte di questa configurazione:

  • resourcemanager.projectIamAdmin
  • serviceusage.serviceUsageAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

Per maggiori dettagli sulle autorizzazioni necessarie per concedere autonomamente i ruoli IAM, consulta Concessione, modifica e revoca dell'accesso alle risorse. Se non disponi di queste autorizzazioni, i ruoli devono essere concessi da un'altra persona della tua organizzazione.

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 Cloud
  • ACCOUNT: l'indirizzo email di identificazione del tuo Account Google

Configurare gli account di servizio

Il tuo progetto Google Cloud deve avere quattro account di servizio affinché Google Distributed Cloud possa utilizzare. In questo esercizio, due di questi account di servizio vengono generati automaticamente. Tuttavia, dovrai creare gli altri due account di servizio manualmente:

  • Connetti e registra l'account di servizio (generato automaticamente)
  • Account di servizio di monitoraggio dei log (generato automaticamente)
  • Account di servizio di audit logging (crea manualmente)
  • Account di servizio di accesso ai componenti (creazione manuale)

Account di servizio di audit logging

  1. Nel tuo progetto Google Cloud, crea un account di servizio che Google Distributed Cloud possa utilizzare per inviare audit log di Kubernetes dal tuo cluster a Cloud Audit Logs. Questo è chiamato account di servizio di audit logging.

    gcloud iam service-accounts create audit-logging-sa \
        --display-name "Audit Logging Service Account" \
        --project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.

  2. Ottieni l'indirizzo email dell'account di servizio di audit logging appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per il tuo account di servizio di audit logging:

    gcloud iam service-accounts keys create audit-logging-key.json \
        --iam-account SERVICE_ACCOUNT_EMAIL_AUDIT_LOGGING
    

    Sostituisci SERVICE_ACCOUNT_EMAIL_AUDIT_LOGGING con l'indirizzo email del tuo account di servizio di audit logging.

    Non è necessario concedere nessun ruolo all'account di servizio di audit logging.

Account di servizio di accesso ai componenti

  1. Nel tuo progetto Google Cloud, crea un account di servizio che Google Distributed Cloud possa utilizzare per scaricare il codice del componente del cluster per tuo conto da Container Registry. Si tratta del tuo account di servizio di accesso ai componenti.

    gcloud iam service-accounts create component-access-sa \
        --display-name "Component Access Service Account" \
        --project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.

  2. Recupera l'indirizzo email dell'account di servizio di accesso ai componenti appena creato:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crea una chiave JSON per il tuo 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_ACCESS con l'indirizzo email del tuo account di servizio di accesso ai componenti.

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

  1. Abilita le seguenti API di Google nel tuo progetto Google Cloud. In questo modo puoi utilizzare tutti i servizi Google Cloud necessari a 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.com
  2. Se è la prima volta che abiliti l'API GKE On-Prem (gkeonprem.googleapis.com) nel tuo progetto, devi inizializzare l'API. Per farlo, puoi chiamare 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

Crea cluster di base