Questa pagina mostra come creare un cluster di amministrazione per Google Distributed Cloud. Il cluster di amministrazione gestisce i cluster utente che eseguono i tuoi carichi di lavoro. Se vuoi utilizzare i domini di topologia, consulta Creare un cluster amministrativo da utilizzare con i domini di topologia.
Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnica. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività utente comuni di GKE Enterprise.
Per maggiori dettagli sul cluster di amministrazione, consulta la panoramica dell'installazione.
Prima di iniziare
Assicurati di aver configurato e di poter accedere alla tua workstation di amministrazione come descritto in Creare una workstation di amministrazione.
Consulta il documento relativo alla pianificazione degli indirizzi IP. Assicurati di disporre di indirizzi IP sufficienti per i tre nodi del piano di controllo e un VIP del piano di controllo. Se prevedi di creare cluster utente kubeception, devi disporre di indirizzi IP sufficienti per i nodi del piano di controllo di questi cluster utente.
Esamina la panoramica del bilanciamento del carico e rivedi la tua decisione sul tipo di bilanciatore del carico che vuoi utilizzare. Per i bilanciatori del carico manuali, devi configurare il bilanciatore del carico prima di creare il cluster di amministrazione.
Consulta la sezione
privateRegistry
e decidi se utilizzare un registry pubblico o privato per i componenti di Google Distributed Cloud.Esamina in anticipo il campo osImageType e decidi quale tipo di sistema operativo vuoi eseguire sui nodi del cluster amministrativo.
Se la tua organizzazione richiede che il traffico in uscita passi attraverso un server proxy, assicurati di inserire nella lista consentita le API richieste e l'indirizzo di Artifact Registry.
Nella versione 1.29 e successive, i controlli preflight lato server sono attivati per impostazione predefinita. I controlli preliminari lato server richiedono regole firewall aggiuntive. In Regole firewall per i cluster di amministrazione, cerca "Controlli preliminari" e assicurati che tutte le regole firewall richieste siano configurate. I controlli preliminari lato server vengono eseguiti sul cluster di bootstrap anziché localmente sulla workstation di amministrazione.
Crea un cluster di amministrazione con lo strumento che preferisci
Questa sezione illustra i passaggi per creare un cluster di amministrazione utilizzando gkectl
e Terraform.
gkectl
Panoramica della procedura
Di seguito sono riportati i passaggi principali per creare un cluster di amministrazione:
- Compila i file di configurazione.
- Specifica i dettagli del nuovo cluster di amministrazione completando e convalidando un file di configurazione del cluster di amministrazione, un file di configurazione delle credenziali e, eventualmente, un file di blocco IP.
- Importa le immagini del sistema operativo in vSphere e carica le immagini dei container nel registry privato, se applicabile.
- Esegui
gkectl prepare
.
- Crea un cluster di amministrazione.
- Utilizza
gkectl
per creare un nuovo cluster di amministrazione come specificato nei file di configurazione completati. Quando Google Distributed Cloud crea un cluster di amministrazione, esegue il deployment di un cluster Kubernetes in Docker (kind) per ospitare temporaneamente i controller Kubernetes necessari per creare il cluster di amministrazione. Questo cluster transitorio è chiamato cluster di bootstrap. I cluster utente vengono creati e sottoposti ad upgrade dall'amministratore che li gestisce senza l'utilizzo di un cluster di bootstrap.
- Verifica che il cluster di amministrazione sia in esecuzione.
- Utilizza
kubectl
per visualizzare i nodi del cluster.
Al termine di questa procedura, avrai un cluster di amministrazione in esecuzione che potrai utilizzare per creare e gestire i cluster utente.
Se utilizzi Controlli di servizio VPC, potresti visualizzare errori quando esegui alcuni comandi gkectl
, ad esempio "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Per evitare questi errori, aggiungi il parametro --skip-validation-gcp
ai comandi.
Compila il file di configurazione
Assicurati che la workstation di amministrazione disponga della versione richiesta di
gkectl
. In genere, utilizzi la stessa versione digkectl
di quella che verrà impiegata al momento della creazione del cluster. Specifica la versione del cluster nelgkeOnPremVersion
campo del file di configurazione del cluster. Durante la creazione del cluster vengono applicate le seguenti regole di versione:La versione minore di
gkectl
non può essere precedente alla versione minore del cluster. Ad esempio, non è consentito creare un cluster 1.30 utilizzandogkectl
versione 1.29. Le versioni con patch non contano. Ad esempio, puoi utilizzare la versione 1.29.0-gke.1456 digkectl
per creare un cluster con una versione della patch superiore, ad esempio 1.29.1000-gke.94.La versione minore
gkectl
non può essere più di due versioni minori superiore alla versione del cluster. Ad esempio, se stai creando un cluster 1.28, la versionegkectl
può essere 1.29 o 1.30. Tuttavia, non puoi utilizzare la versione 1.31 digkectl
perché è tre versioni secondarie più recente della versione del cluster.
Se necessario, consulta la sezione Scaricare
gkectl
per ottenere una versione supportata digkectl
.
Se hai utilizzato gkeadm
per creare la tua workstation di amministrazione, è stato generato un file di configurazione denominato admin-cluster.yaml
.
Se non hai utilizzato gkeadm
per creare la workstation di amministrazione, generaadmin-cluster.yaml
eseguendo questo comando sulla workstation di amministrazione:
gkectl create-config admin
Questo file di configurazione serve per creare il cluster di amministrazione.
Acquisisci familiarità con il file di configurazione esaminando il documento relativo al file di configurazione del cluster di amministrazione. Ti consigliamo di tenere aperto questo documento in una scheda o una finestra separata, poiché lo consulterai durante l'esecuzione dei passaggi che seguono.
name
Se vuoi specificare un nome per il cluster amministrativo, compila il campo
name
.
bundlePath
Il bundle è un file compresso che contiene i componenti del cluster. È incluso con la workstation di amministrazione. Questo campo è già compilato.
vCenter
I campi di questa sezione sono già compilati con i valori inseriti quando hai creato la workstation di amministrazione.
enableAdvancedCluster
Se vuoi attivare la funzionalità di anteprima del cluster avanzato, imposta enableAdvancedCluster
su true
.
Tieni presenti le seguenti limitazioni dell'anteprima avanzata del cluster:
- Puoi attivare il cluster avanzato al momento della creazione solo per i nuovi cluster 1.31.
- Una volta attivato il cluster avanzato, non potrai eseguire l'upgrade del cluster alla versione 1.32. Attiva il cluster avanzato solo in un ambiente di test.
network
Compila la sezione network.controlPlaneIPBlock
e la sezione network.hostConfig
. Imposta anche adminMaster.replicas
su 3
.
I campi network.podCIDR e network.serviceCIDR hanno valori precompilati che puoi lasciare invariati, a meno che non entro in conflitto con gli indirizzi già in uso nella tua rete. Kubernetes utilizza questi intervalli per assegnare indirizzi IP ai pod e ai servizi nel cluster.
Compila il resto dei campi nella sezione della rete del file di configurazione se necessario.
loadBalancer
Metti da parte un VIP per il server API Kubernetes del tuo cluster di amministrazione. Fornisci il tuo VIP come valore per loadBalancer.vips.controlPlaneVIP
Per ulteriori informazioni, consulta VIP nella sottorete del cluster di amministrazione.
Decidi il tipo di bilanciamento del carico che vuoi utilizzare. Le opzioni sono:
Bilanciamento del carico in bundle MetalLB. Imposta
loadBalancer.kind
su"MetalLB"
.Bilanciamento del carico manuale. Imposta
loadBalancer.kind
su"ManualLB"
e rimuovi la sezionemanualLB
.
Per ulteriori informazioni sulle opzioni di bilanciamento del carico, consulta la Panoramica del bilanciamento del carico.
antiAffinityGroups
Imposta antiAffinityGroups.enabled
su true
o false
in base alle tue preferenze.
Utilizza questo campo per specificare se vuoi che Google Distributed Cloud crei regole anti-affinità Distributed Resource Scheduler (DRS) di VMware per i nodi del cluster amministrativo, in modo che vengano distribuiti su almeno tre host fisici nel tuo data center.
adminMaster
Se vuoi specificare la CPU e la memoria per i nodi del piano di controllo del cluster amministrativo, compila i campi cpus
e memoryMB
nella sezione adminMaster
.
I cluster di amministrazione devono avere tre nodi del control plane. Imposta il campo replicas
nella sezione adminMaster
su 3
.
proxy
Se la rete su cui si trovano i nodi del cluster di amministrazione è protetta da un server proxy, compila la sezione proxy
.
privateRegistry
Decidi dove conservare le immagini container per i componenti di Google Distributed Cloud. Le opzioni sono:
Artifact Registry
Il tuo registro Docker privato.
Se vuoi utilizzare il tuo registro privato, compila la sezione
privateRegistry
.
componentAccessServiceAccountKeyPath
Google Distributed Cloud utilizza il tuo account di servizio di accesso ai componenti per scaricare i componenti del cluster da Artifact Registry. Questo campo contiene il percorso di un file di chiavi JSON per l'account di servizio di accesso al componente.
Questo campo è già compilato.
gkeConnect
Registra il cluster di amministrazione
in un Google Cloud parco risorse compilando la sezione
gkeConnect
. Se includi le sezioni stackdriver
e cloudAuditLogging
nel
file di configurazione, l'ID in gkeConnect.projectID
deve essere uguale all'ID
impostato in stackdriver.projectID
e cloudAuditLogging.projectID
. Se gli ID progetto non sono uguali, la creazione del cluster non va a buon fine.
In 1.28 e versioni successive, puoi facoltativamente specificare una regione in cui vengono eseguiti i servizi Fleet e Connect in gkeConnect.location
. Se non includi questo campo,
il cluster utilizza le istanze globali di questi servizi.
Se includi gkeConnect.location
, la regione specificata deve essere uguale a quella configurata in cloudAuditLogging.clusterLocation
, stackdriver.clusterLocation
e gkeOnPremAPI.location
. Se le regioni non sono uguali, la creazione del cluster non va a buon fine.
gkeOnPremAPI
Se l'API GKE On-Prem è abilitata nel tuo progetto Google Cloud, tutti i cluster del progetto vengono registrati nell'API GKE On-Prem automaticamente nella regione configurata in stackdriver.clusterLocation
.
La regione gkeOnPremAPI.location
deve essere uguale a quella specificata in cloudAuditLogging.clusterLocation
, gkeConnect.location
e stackdriver.clusterLocation
. Se le regioni non sono uguali, la creazione del cluster non va a buon fine.
Se vuoi registrare tutti i cluster del progetto nell'API GKE On-Prem, assicurati di svolgere i passaggi descritti in Prima di iniziare per attivare e utilizzare l'API GKE On-Prem nel progetto.
Se non vuoi registrare il cluster nell'API GKE On-Prem, includi questa sezione e imposta
gkeOnPremAPI.enabled
sufalse
. Se non vuoi registrare cluster nel progetto, disattivagkeonprem.googleapis.com
(il nome del servizio per l'API GKE On-Prem) nel progetto. Per istruzioni, vedi Disattivare i servizi.
stackdriver
Se vuoi attivare
Cloud Logging e Cloud Monitoring
per il tuo cluster, compila la sezione
stackdriver
.
Questa sezione è obbligatoria per impostazione predefinita. In altre parole, se non compili questa sezione, devi includere il flag --skip-validation-stackdriver
quando esegui gkectl create admin
.
Tieni presente i seguenti requisiti:
Se attivi il cluster avanzato, devi specificare lo stesso percorso in
cloudAuditLogging.serviceAccountKeyPath
estackdriver.serviceAccountKeyPath
.L'ID in
stackdriver.projectID
deve essere uguale all'ID ingkeConnect.projectID
ecloudAuditLogging.projectID
.La Google Cloud regione impostata in
stackdriver.clusterLocation
deve essere la stessa della regione impostata incloudAuditLogging.clusterLocation
egkeConnect.location
. Inoltre, segkeOnPremAPI.enabled
ètrue
, deve essere impostata la stessa regione ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.
cloudAuditLogging
Se vuoi integrare gli audit log del server API Kubernetes del tuo cluster con gli audit log di Cloud, compila la sezione cloudAuditLogging
.
Tieni presente i seguenti requisiti:
Se attivi il cluster avanzato, devi specificare lo stesso percorso in
cloudAuditLogging.serviceAccountKeyPath
estackdriver.serviceAccountKeyPath
.L'ID in
cloudAuditLogging.projectID
deve essere uguale all'ID ingkeConnect.projectID
estackdriver.projectID
.La Google Cloud regione impostata in
cloudAuditLogging.clusterLocation
deve essere la stessa impostata instackdriver.clusterLocation
egkeConnect.location
(se il campo è incluso nel file di configurazione). Inoltre, segkeOnPremAPI.enabled
ètrue
, deve essere impostata la stessa regione ingkeOnPremAPI.location
.
Se gli ID progetto e le regioni non sono uguali, la creazione del cluster non va a buon fine.
clusterBackup
Se vuoi attivare il
backup del cluster di amministrazione,
imposta
clusterBackup.datastore
sul
datastore vSphere
dove vuoi salvare i backup del cluster.
Se attivi il cluster avanzato, rimuovi questa sezione. Il backup del cluster amministrativo su un datastore vSphere non è supportato.
autoRepair
Se vuoi
abilitare la riparazione automatica dei nodi
per il tuo cluster di amministrazione, imposta
autoRepair.enabled
su true
.
secretsEncryption
Se vuoi attivare la crittografia dei secret sempre attiva, compila la sezione secretsEncryption
.
Se attivi il cluster avanzato, imposta secretsEncryption.enabled
su false
.
La crittografia dei secret sempre attiva non è supportata.
osImageType
Decidi il tipo di immagine del sistema operativo da utilizzare per i nodi del cluster di amministrazione e compila la sezione osImageType
di conseguenza.
Se attivi il cluster avanzato, imposta osImageType
su ubuntu_cgroupv2
o
ubuntu_containerd
.
Esempio di file di configurazione compilati
Di seguito è riportato un esempio di file di configurazione del cluster di amministrazione compilato. La configurazione attiva alcune, ma non tutte, le funzionalità disponibili.
vc-01-admin-cluster.yaml
apiVersion: v1 kind: AdminCluster name: "gke-admin-01" bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.0-gke.1-full.tgz" vCenter: address: "vc01.example" datacenter: "vc-01" cluster: "vc01-workloads-1" resourcePool: "vc-01-pool-1" datastore: "vc01-datastore-1" caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem"" credentials: fileRef: path: "credential.yaml" entry: "vCenter" network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16" vCenter: networkName: "vc01-net-1" controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.20.59" kind: "MetalLB" antiAffinityGroups: enabled: true adminMaster: cpus: 4 memoryMB: 16384 replicas: 3 componentAccessServiceAccountKeyPath: "sa-key.json" gkeConnect: projectID: "my-project-123" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" disableVsphereResourceMetrics: false clusterBackup: datastore: "vc-01-datastore-bu" autoRepair: enabled: true osImageType: "ubuntu_containerd"
Convalida il file di configurazione
Dopo aver compilato il file di configurazione del cluster di amministrazione, eseguigkectl check-config
per verificare che il file sia valido:
gkectl check-config --config ADMIN_CLUSTER_CONFIG
Sostituisci ADMIN_CLUSTER_CONFIG con il percorso del file di configurazione del cluster di amministrazione.
Se il comando restituisce messaggi di errore, correggi i problemi e convalida nuovamente il file.
Se vuoi saltare le convalide più dispendiose in termini di tempo, passa il flag --fast
.
Per saltare le singole convalide, utilizza i flag --skip-validation-xxx
. Per approfondire il comando check-config
, consulta Eseguire i controlli preflight.
Scaricare le immagini del sistema operativo
Esegui gkectl prepare
per inizializzare l'ambiente vSphere:
gkectl prepare --config ADMIN_CLUSTER_CONFIG
Il comando gkectl prepare
esegue le seguenti attività preparatorie:
Importa le immagini del sistema operativo in vSphere e le contrassegna come modelli VM.
Se utilizzi un registry Docker privato, esegui il push delle immagini del contenitore nel tuo registry.
Facoltativamente, convalida le attestazioni di compilazione delle immagini container, verificando così che le immagini siano state create e firmate da Google e siano pronte per il deployment.
Crea il cluster di amministrazione
Crea il cluster di amministrazione:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Se utilizzi Controlli di servizio VPC, potresti visualizzare errori quando esegui alcuni comandi gkectl
, ad esempio "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Per evitare questi errori, aggiungi il parametro --skip-validation-gcp
ai comandi.
Riprendi la creazione del cluster di amministrazione dopo un errore
Se la creazione del cluster di amministrazione non riesce o viene annullata, puoi eseguire di nuovo il comando create
:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Individua il file kubeconfig del cluster di amministrazione
Il comando gkectl create admin
crea un file kubeconfig denominato
kubeconfig
nella directory corrente. Ti servirà questo file kubeconfig
in un secondo momento per interagire con il cluster di amministrazione.
Il file kubeconfig contiene il nome del cluster di amministrazione. Per visualizzare il nome del cluster, puoi eseguire:
kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG
L'output mostra il nome del cluster. Ad esempio:
NAME gke-admin-tqk8x
Se vuoi, puoi modificare il nome e la posizione del file kubeconfig.
Gestire il file checkpoint.yaml
Questa sezione si applica solo ai cluster di amministrazione non HA. Il file checkpoint.yaml
non viene utilizzato per la creazione di cluster di amministrazione HA.
Quando hai eseguito il comando gkectl create admin
per creare il cluster amministrativo, è stato creato un file di checkpoint nella stessa cartella del datastore del disco di dati del cluster amministrativo. Per impostazione predefinita, questo file ha il nome
DATA_DISK_NAME‑checkpoint.yaml
. Se la lunghezza di DATA_DISK_NAME è maggiore o uguale a 245 caratteri, a causa del limite di vSphere per la lunghezza del nome file, il nome è DATA_DISK_NAME.yaml
.
Questo file contiene lo stato e le credenziali del cluster amministrativo e viene utilizzato per gli upgrade futuri. Non eliminare questo file, a meno che non stia seguendo la procedura per eliminare un cluster di amministrazione.
Se hai attivato la crittografia delle VM nella tua istanza di vCenter Server, devi disporre del privilegio Cryptographic operations.Direct Access prima di creare o eseguire l'upgrade del tuo cluster amministrativo. In caso contrario, il checkpoint non verrà caricato. Se non riesci a ottenere questo privilegio, puoi disattivare il caricamento del file checkpoint utilizzando il flag nascosto --disable-checkpoint
quando esegui un comando pertinente.
Il file checkpoint.yaml
viene aggiornato automaticamente quando esegui il comando gkectl upgrade admin
o un comando gkectl update
che interessa il cluster amministrativo.
Verificare che il cluster di amministrazione sia in esecuzione
Verifica che il cluster di amministrazione sia in esecuzione:
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Sostituisci ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione.
L'output mostra i nodi del cluster di amministrazione. Ad esempio:
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
Eseguire il backup dei file
Ti consigliamo di eseguire il backup del file kubeconfig del cluster di amministrazione. In altre parole, copia il file kubeconfig dalla workstation di amministrazione in un'altra posizione. In questo modo, se perdi l'accesso alla stazione di lavoro di amministrazione o se il file kubeconfig sulla stazione di lavoro di amministrazione viene eliminato per errore, avrai comunque accesso al cluster di amministrazione.
Ti consigliamo inoltre di eseguire il backup della chiave SSH privata per il cluster di amministrazione. Se perdi l'accesso al cluster di amministrazione, puoi comunque utilizzare SSH per connetterti ai nodi del cluster di amministrazione. In questo modo potrai risolvere e esaminare eventuali problemi di connettività con il cluster di amministrazione.
Estrai la chiave SSH dal cluster di amministrazione in un file denominato
admin-cluster-ssh-key
:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \ -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key
Ora puoi eseguire il backup di admin-cluster-ssh-key
in un'altra posizione a tua scelta.
Criteri RBAC
Quando compili la
sezione gkeConnect
nel file di configurazione del cluster di amministrazione, il cluster viene registrato nel
parco risorse durante la creazione o l'aggiornamento. Per attivare la funzionalità di gestione del parco risorse, Google Cloud esegue il deployment dell'agente Connect e crea un account di servizio Google che rappresenta il progetto a cui è registrato il cluster.
L'agente Connect stabilisce una connessione con l'account di servizio per gestire le richieste al server API Kubernetes del cluster. In questo modo puoi accedere alle funzionalità di gestione dei cluster e dei carichi di lavoro in Google Cloud, incluso l'accesso alla console Google Cloud, che ti consente di interagire con il tuo cluster.
Il server API Kubernetes del cluster di amministrazione deve essere in grado di autorizzare le richieste dell'agente Connect. Per garantire questo, nell'account di servizio sono configurati i seguenti criteri di controllo degli accessi basato sui ruoli (RBAC):
Un regolamento sull'inganno che autorizza l'agente Connect a inviare richieste al server dell'API Kubernetes per conto dell'account di servizio.
Un criterio di autorizzazione che specifica le operazioni consentite su altre risorse Kubernetes.
L'account di servizio e i criteri RBAC sono necessari per gestire il ciclo di vita dei cluster utente nella console Google Cloud.
Terraform
Panoramica della procedura
Prima di creare il cluster di amministrazione, devi eseguire il comando
gkectl register bootstrap
sulla workstation di amministrazione. Questo comando esegue il deployment di un cluster Kubernetes in Docker (kind) sulla workstation di amministrazione. Questo cluster di bootstrap ospita i controller Kubernetes necessari per creare il cluster di amministrazione. Quando crei il cluster di amministrazione, i controller sul cluster di bootstrap eseguono il provisioning dei nodi, i controlli preflight e la registrazione del cluster di amministrazione nel parco risorse. Il cluster di bootstrap viene eliminato automaticamente dopo la creazione del cluster di amministrazione.
Di seguito sono riportati i passaggi di alto livello per creare un cluster di amministrazione utilizzando Terraform:
- Compila il file di configurazione.
- Utilizza la risorsa
google_gkeonprem_vmware_admin_cluster e l'esempio che segue per creare il file di configurazione
main.tf
.
- Crea un cluster
bootstrap
. - Esegui
gkectl register bootstrap
per creare il cluster di bootstrap. Al termine della creazione del cluster di bootstrap, l'output ti comunica di completare la configurazione del cluster di amministrazione. Il processo continua a essere eseguito fino alla creazione del cluster amministrativo.
- Crea un cluster
- Crea un cluster di amministrazione.
- In un'altra finestra del terminale o su un altro computer con accesso all'API GKE On-Prem, esegui i comandi
terraform
per creare un nuovo cluster di amministrazione come specificato nel file di configurazionemain.tf
completato.
Compila il file di configurazione
L'esempio seguente mostra la creazione di un cluster amministrativo ad alta disponibilità (HA) con tre nodi del piano di controllo con MetalLB. In 1.28 e versioni successive, i nuovi cluster di amministrazione devono essere ad alta disponibilità. A causa di questo requisito, devi impostare control_plane_node.replicas
su 3. Per ulteriori informazioni e altri esempi, consulta la documentazione di riferimento di google_gkeonprem_vmware_admin_cluster
.
Compila le variabili segnaposto nel seguente esempio, quindi copia e incolla
in main.tf
. Se hai utilizzato gkeadm
per creare la workstation amministrativa, apri il file di configurazione della workstation amministrativa in modo da poter copiare i valori dalla sezione vCenter
alle variabili segnaposto corrispondenti.
resource "google_gkeonprem_vmware_admin_cluster" "admin-cluster-metallb" { provider = google-beta name = "ADMIN_CLUSTER_NAME" project = "PROJECT_ID" location = "REGION" description = "DESCRIPTION" bootstrap_cluster_membership = "projects/PROJECT_ID/locations/REGION/memberships/bootstrap-ADMIN_CLUSTER_NAME" on_prem_version = "VERSION" image_type = "IMAGE_TYPE" vcenter { address = "VCENTER_ADDRESS" datacenter = "DATA_CENTER" cluster = "VCENTER_CLUSTER" resource_pool = "RESOURCE_POOL" datastore = "DATASTORE" ca_cert_data = "CA_CERT_DATA" } network_config { service_address_cidr_blocks = ["10.96.232.0/24"] pod_address_cidr_blocks = ["192.168.0.0/16"] vcenter_network = "NETWORK" dhcp_ip_config { enabled = true } host_config { dns_servers = ["DNS_SERVERS"] ntp_servers = ["NTP_SERVERS"] } ha_control_plane_config { control_plane_ip_block { gateway = "GATEWAY" netmask = "NETMASK" ips { hostname = "CONTROL_PLANE_HOST_1" ip = "CONTROL_PLANE_NODE_IP_1" } ips { hostname = "CONTROL_PLANE_HOST_2" ip = "CONTROL_PLANE_NODE_IP_2" } ips { hostname = "CONTROL_PLANE_HOST_3" ip = "CONTROL_PLANE_NODE_IP_3" } } } } control_plane_node { cpus = NUM_CPUS memory = MEMORY replicas = 3 } load_balancer { vip_config { control_plane_vip = "CONTROL_PLANE_VIP" } metal_lb_config { enabled = true } } }
Sostituisci quanto segue:
ADMIN_CLUSTER_NAME
: il nome del cluster di amministrazione.PROJECT_ID
: l' Google Cloud ID progetto.REGION
: la Google Cloud regione in cui vengono eseguite l'API GKE On-Prem (gkeonprem.googleapis.com
), il servizio Fleet (gkehub.googleapis.com
) e il servizio Connect (gkeconnect.googleapis.com
). Specificaus-west1
o un'altra regione supportata.Il campo
location
corrisponde al flag--location
nel comandogkectl register bootstrap
.DESCRIPTION
: una descrizione del cluster di amministrazione.VERSION
: la versione di Google Distributed Cloud per il cluster. La creazione di un cluster utilizzando Terraform è supportata solo nelle versioni 1.28 e superiori. Per un elenco delle versioni, consulta Versioni di Google Distributed Cloud.IMAGE_TYPE
: il tipo di immagine del sistema operativo da eseguire sui nodi del cluster di amministrazione. Specifica uno dei seguenti valori: "ubuntu_containerd
", "cos
", "ubuntu_cgv2
" o "cos_cgv2
".VCENTER_ADDRESS
: l'indirizzo del server vCenter.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.credentials.address
.Il campo
vcenter.address
corrisponde al flag--vcenter-address
nel comandogkectl register bootstrap
.
DATA_CENTER
: il nome del data center vCenter.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.datacenter
.Il campo
vcenter.datacenter
corrisponde al flag--vcenter-datacenter
nel comandogkectl register bootstrap
.
VCENTER_CLUSTER
: il nome del cluster vCenter.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.cluster
.Il campo
vcenter.cluster
corrisponde al flag--vcenter-cluster
nel comandogkectl register bootstrap
.
RESOURCE_POOL
: il nome o il percorso del pool di risorse vCenter.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.resourcePool
.Il campo
vcenter.resource_pool
corrisponde al--vcenter-resource-pool
nel comandogkectl register bootstrap
.
DATASTORE
: il nome del datastore vCenter. Il valore specificato deve essere un nome, non un percorso. Se devi inserire un percorso, aggiungi il seguente campo:folder = "FOLDER"
File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.datastore
.Il campo
vcenter.datastore
corrisponde al flag--vcenter-datastore
nel comandogkectl register bootstrap
.
Se vuoi utilizzare un criterio di archiviazione delle VM per i nodi del cluster, rimuovi il campo
vcenter.datastore
e aggiungivcenter.storage_policy_name
. Inoltre, aggiungi il flag--vcenter-storage-policy
al comandogkectl register bootstrap
. Devi specificare un valore pervcenter.datastore
ovcenter.storage_policy_name
, ma non per entrambi.FOLDER
: il nome della cartella vCenter in cui si troveranno le VM del cluster. Se non utilizzi una cartella, rimuovi questo campo.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.folder
.Il campo
vcenter.folder
corrisponde al flag--vcenter-folder
nel comandogkectl register bootstrap
.
CA_CERT_DATA
: inserisci il certificato CA vCenter in formato PEM. Per ottenere i dati del certificato CA:Esegui questo comando:
cat CA_CERT_PATH_LOCAL | tr '\n' '\\n'
Sostituisci
CA_CERT_PATH_LOCAL
con il percorso del certificato CA radice per il vCenter Server. Se hai utilizzatogkeadm
per creare la workstation amministrativa, puoi utilizzare il valore del campocaCertPath
nel file di configurazione della workstation amministrativa, ovvero il percorso sul computer locale.gkeadm
hai copiato il file del certificato CA nella tua workstation di amministrazione. Devi specificare il percorso della workstation di amministrazione nel flag--vcenter-ca-cert-path
del comandogkectl register bootstrap
.Copia il certificato generato dal comando precedente e incollalo in un editor di testo. Sostituisci tutte le istanze del carattere barra verticale (/) con un carattere di nuova riga (\n).
Copia il certificato modificato e incollalo nella variabile segnaposto
CA_CERT_DATA
.
NETWORK
: inserisci il nome della rete vCenter.File di configurazione della workstation amministrativa: utilizza il valore del campo
vCenter.network
.Il campo
network_config.vcenter_network
corrisponde al--vcenter-network
nel comandogkectl register bootstrap
.
GATEWAY
: l'indirizzo IP del gateway predefinito per la sottorete che contiene i nodi del cluster del control plane.NETMASK
: la subnet mask per la subnet che contiene i nodi del cluster del control plane.DNS_SERVERS
: l'indirizzo IP del server DNS.NTP_SERVERS
: l'indirizzo IP del server di ora (NTP).Inserisci gli indirizzi IP e, facoltativamente, il nome host per i tre nodi del piano di controllo nella sezione
control_plane_ip_block.ips
. Se non inserisci un nome host, rimuovi i campihostname
dalla configurazione.NUM_CPUS: il numero di vCPU per ciascun nodo del control plane nel cluster di amministrazione. Deve essere di almeno 4.
MEMORY: numero di mebibyte di memoria per ogni node del piano di controllo nel cluster di amministrazione. Deve essere pari ad almeno 8192, ma consigliamo 16384.
CONTROL_PLANE_VIP
: l'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API Kubernetes del cluster di amministrazione.
Verifica il file di configurazione e il piano
Nella directory in cui si trova main.tf
, esegui i seguenti comandi:
Inizializza Terraform:
terraform init
Terraform installa le librerie necessarie, ad esempio il provider Google Cloud . Correggi eventuali errori in
maint.tf
, se necessario.Crea il piano Terraform:
terraform plan -out tfplan
Esamina la configurazione e apporta le modifiche necessarie.
Prima di applicare il piano, devi prima creare il cluster di bootstrap come descritto nella sezione successiva.
Crea il cluster di bootstrap
Quando esegui il comando gkectl register bootstrap
, ti viene chiesto di inserire il nome utente e la password dell'account vCenter. Assicurati di disporre delle credenziali. Se hai utilizzato gkeadm
per creare la workstation di amministrazione, il nome utente e la password si trovano nel file credential.yaml
.
Accedi alla workstation di amministrazione utilizzando SSH.
Esegui l'autenticazione con Google Cloud CLI:
gcloud auth login
Esegui il comando seguente per creare il cluster di bootstrap. Molti dei valori di
main.tf
sono gli stessi dei campimain.tf
. Tieni presente, tuttavia, che il comando accetta valori aggiuntivi che devi specificare nelle variabili segnaposto fornite.gkectl register bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --vcenter-address=VCENTER_ADDRESS \ --vcenter-datacenter=DATA_CENTER \ --vcenter-cluster=VCENTER_CLUSTER \ --vcenter-resource-pool=RESOURCE_POOL \ --vcenter-datastore=DATASTORE \ --vcenter-network=NETWORK \ --vcenter-ca-cert-path=CA_CERT_PATH \ --bundle-path=BUNDLE_PATH \ --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH
Sostituisci quanto segue con i percorsi della workstation di amministrazione:
CA_CERT_PATH
: il percorso del certificato CA radice per il tuo server vCenter.BUNDLE_PATH
: il percorso del file del pacchetto. Se hai utilizzatogkeadm
per creare la workstation di amministrazione, il file del bundle si trova in/var/lib/gke/bundles/
. Il nome del file dipende dalla versione di Google Distributed Cloud, ad esempiogke-onprem-vsphere-1.31.0-gke.889-full.tgz
.COMPONENT_ACCESS_SA_PATH
: il percorso del file della chiave per l'account di servizio di accesso del componente.CONNECT_REGISTER_SA_PATH
: il percorso del file della chiave per l'account di servizio connect-register.LOG_MON_SA_PATH
: il percorso del file della chiave per l'account di servizio di monitoraggio e logging.CLOUD_AUDIT_SA_PATH
: il percorso dell'account di servizio per la registrazione dei controlli. Se non hai creato un account di servizio per il logging di controllo, specifica il percorso del file della chiave per l'account di servizio di monitoraggio del logging.
Modifica il comando in base alle necessità per i seguenti flag:
- Se hai specificato una cartella in
main.tf
, aggiungi il seguente flag:--vcenter-folder=FOLDER
- Se hai specificato un criterio di archiviazione VM in
main.tf
, rimuovi--vcenter-datastore
e aggiungi il seguente flag:--vcenter-storage-policy-name=STORAGE_POLICY_NAME
Se aggiungi un flag, assicurati di aggiungere il carattere barra di continuazione della riga di comando (\).
Quando richiesto, inserisci (o copia e incolla) il nome utente vCenter. Il nome utente non viene ripetuto sullo schermo.
Quando richiesto, inserisci (o copia e incolla) la password di vCenter. La password non viene ripetuta sullo schermo.
Il comando esegue numerose convalide. Dopo che gkectl
ha creato correttamente il cluster di bootstrap, viene visualizzato un output simile al seguente, che è troncato per leggibilità:
Running workstation validations - Validation Category: Workstation - [SUCCESS] Workstation OS - [SUCCESS] Workstation Hardware - [SUCCESS] Workstation Package - [SUCCESS] Workstation NTP - [SUCCESS] Workstation Docker ... All validation results were SUCCESS. Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz ... Successfully created and registered the bootstrap cluster ... Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
Il processo continua a essere eseguito fino alla creazione del cluster di amministrazione.
Se esci dal comando gkectl register bootstrap
prima della creazione del cluster di amministrazione, la creazione del cluster di amministrazione non va a buon fine e dovrai eliminare il cluster di bootstrap utilizzando il seguente comando:
gkectl delete bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
Crea il cluster di amministrazione
Applica il piano Terraform per creare il cluster di amministrazione:
terraform apply "tfplan"
La creazione del cluster di amministrazione richiede circa 15 minuti o più. Puoi visualizzare il cluster nella console Google Cloud nella pagina Cluster GKE.
Risoluzione dei problemi
Consulta la sezione Risoluzione dei problemi relativi alla creazione e all'upgrade dei cluster.