Utilizza Terraform per creare un cluster di amministrazione per il software Google Distributed Cloud solo per
VMware se utilizzi già Terraform per gestire le risorse VMware on-premise
. Google Cloud Puoi anche creare un cluster di amministrazione utilizzando gkectl
o Google Cloud console.
Prima di iniziare
Assicurati di aver configurato la workstation di amministrazione e di poter accedere come descritto in Creare una workstation di amministrazione.
Assicurati che i file della chiave JSON per gli account di servizio si trovino sulla workstation di amministrazione.
Consulta il documento di pianificazione degli indirizzi IP. Assicurati di avere a disposizione un numero sufficiente di indirizzi IP per i tre nodi del control plane e un VIP del control plane. Se prevedi di creare cluster utente kubeception, devi avere a disposizione un numero sufficiente di indirizzi IP per i nodi del control plane di questi cluster utente.
Consulta 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.
Se utilizzi
gkectlper creare il cluster di amministrazione, decidi se vuoi utilizzare un registro pubblico o privato per i componenti di Google Distributed Cloud. Per informazioni sull'utilizzo di un registro Docker privato, consultaprivateRegistry. Né Terraform né la Google Cloud console supportano l'utilizzo di un registro Docker privato per i componenti di sistema.Decidi il tipo di sistema operativo che vuoi eseguire sui nodi del cluster di amministrazione.
Se la tua organizzazione richiede che il traffico in uscita passi attraverso un proxy server, 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 abilitati per impostazione predefinita. I controlli preflight lato server richiedono regole firewall aggiuntive. In Regole firewall per i cluster di amministrazione, cerca "Controlli preflight" e assicurati che tutte le regole firewall richieste siano configurate. I controlli preflight lato server vengono eseguiti sul cluster di bootstrap anziché localmente sulla workstation di amministrazione.
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, eseguono i controlli preflight e registrano il cluster di amministrazione nel parco dispositivi. Il cluster di bootstrap viene eliminato automaticamente dopo la creazione del cluster di amministrazione.
Di seguito sono riportati i passaggi di alto livello per la creazione di un cluster di amministrazione utilizzando Terraform:
Compila il file di configurazione. Utilizza la google_gkeonprem_vmware_admin_cluster e l'esempio seguente per creare il file di configurazione
main.tf.Crea un cluster di
bootstrap. Eseguigkectl register bootstrapper creare il cluster di bootstrap. Al termine della creazione del cluster di bootstrap, l'output ti informa che devi completare la configurazione del cluster di amministrazione. Il processo continua fino alla creazione del cluster di amministrazione.Crea un cluster di amministrazione. In un'altra finestra del terminale o su un altro computer che ha accesso all'API GKE On-Prem, esegui i comandi
terraformper creare un nuovo cluster di amministrazione come specificato nel file di configurazionemain.tfcompletato.
Compila il file di configurazione
L'esempio seguente mostra la creazione di un cluster di amministrazione ad alta disponibilità (HA) con tre nodi del control plane con MetalLB. Nella versione 1.28 e 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
google_gkeonprem_vmware_admin_cluster documentazione di riferimento. Per informazioni
sull'utilizzo di un registro privato per le immagini di sistema, consulta
Configurare un registro container privato.
Compila le variabili segnaposto nell'esempio seguente, quindi copialo e incollalo in main.tf. Se hai utilizzato gkeadm per creare la workstation di amministrazione, apri il file di configurazione della workstation di amministrazione in modo da poter copiare i valori dalla sezione vCenter nelle 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. La lunghezza massima del nome è di 20 caratteri.PROJECT_ID: l' Google Cloud ID progetto.REGION: la Google Cloud regione in cui vengono eseguite la GKE On-Prem API (gkeonprem.googleapis.com), il servizio Fleet (gkehub.googleapis.com) e il servizio Connect (gkeconnect.googleapis.com). Specificaus-west1o un'altra regione supportata.Il campo
locationcorrisponde al flag--locationnel 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 successive. La versione specificata qui deve corrispondere alla versione del bundle specificata nel flag--bundle-pathnel comandogkectl register bootstrap. 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 di amministrazione: utilizza il valore del
vCenter.credentials.addresscampo.Il campo
vcenter.addresscorrisponde al flag--vcenter-addressnel comandogkectl register bootstrap.
DATA_CENTER: il nome del tuo data center vCenter.File di configurazione della workstation di amministrazione: utilizza il valore del campo
vCenter.datacenter.Il campo
vcenter.datacentercorrisponde al flag--vcenter-datacenternel comandogkectl register bootstrap.
VCENTER_CLUSTER: il nome del tuo cluster vCenter.File di configurazione della workstation di amministrazione: utilizza il valore del campo
vCenter.cluster.Il campo
vcenter.clustercorrisponde al flag--vcenter-clusternel comandogkectl register bootstrap.
RESOURCE_POOL: il nome o il percorso del pool di risorse vCenter .File di configurazione della workstation di amministrazione: utilizza il valore del campo
vCenter.resourcePool.Il campo
vcenter.resource_poolcorrisponde al flag--vcenter-resource-poolnel 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 di amministrazione: utilizza il valore del campo
vCenter.datastore.Il campo
vcenter.datastorecorrisponde al flag--vcenter-datastorenel comandogkectl register bootstrap.
Se vuoi utilizzare una policy di archiviazione VM per i nodi del cluster, rimuovi il campo
vcenter.datastoree aggiungivcenter.storage_policy_nameinvece. Inoltre, aggiungi il flag--vcenter-storage-policyal comandogkectl register bootstrap. Devi specificare un valore pervcenter.datastoreovcenter.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 di amministrazione: utilizza il valore del campo
vCenter.folder.Il campo
vcenter.foldercorrisponde al flag--vcenter-foldernel comandogkectl register bootstrap.
CA_CERT_DATA: il certificato CA vCenter in formato PEM, ma con tutti i ritorni a capo sostituiti dalla stringa\n.Esegui il comando seguente per sostituire i ritorni a capo con
\n:awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCALSostituisci
CA_CERT_PATH_LOCALcon il percorso del certificato CA radice per il tuo server vCenter. Se hai utilizzatogkeadmper creare la workstation di amministrazione, puoi utilizzare il valore del campocaCertPathnel file di configurazione della workstation di amministrazione, ovvero il percorso sul computer locale.gkeadmha copiato il file del certificato CA nella workstation di amministrazione. Devi specificare il percorso della workstation di amministrazione nel flag--vcenter-ca-cert-pathnel comandogkectl register bootstrap.Copia l'output del comando precedente e incollalo nella variabile segnaposto
CA_CERT_DATA.
NETWORK: il nome della rete vCenter.File di configurazione della workstation di amministrazione: utilizza il valore del campo
vCenter.network.Il campo
network_config.vcenter_networkcorrisponde al flag--vcenter-networknel comandogkectl register bootstrap.
GATEWAY: l'indirizzo IP del gateway predefinito per la subnet che contiene i nodi del cluster del control plane.NETMASK: la maschera di rete 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 NTP (Network Time Protocol).Inserisci gli indirizzi IP e, facoltativamente, il nome host per i tre nodi del control plane nella sezione
control_plane_ip_block.ips. Se non inserisci un nome host, rimuovi i campihostnamedalla configurazione.NUM_CPUS: il numero di vCPU per ogni nodo del control plane nel cluster di amministrazione. Il valore minimo è 4.MEMORY: il numero di mebibyte di memoria per ogni nodo del control plane nel cluster di amministrazione. Il valore minimo è 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.
(Facoltativo) Configura un registro privato
Per impostazione predefinita, durante la creazione o l'upgrade del cluster, Google Distributed Cloud estrae le immagini di sistema
da gcr.io/gke-on-prem-release utilizzando l'
account di servizio di accesso ai componenti.
Facoltativamente, puoi fornire il tuo server di registro container in modo che le immagini di sistema vengano estratte dal tuo server di registro privato.
Per configurare un registro privato:
Aggiungi quanto segue al file di configurazione del cluster di amministrazione:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }Sostituisci quanto segue:
ADDRESS: l'indirizzo IP o il nome di dominio completo (FQDN) della macchina che esegue il registro privato.CA_CERT: i dati del certificato CA della chiave pubblica, ma con tutti i ritorni a capo sostituiti dalla stringa\n.
Esegui il comando seguente per sostituire i ritorni a capo con
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHSostituisci
PUBLIC_KEY_PATHcon il percorso della chiave pubblica.Copia l'output del comando precedente e incollalo nella variabile segnaposto
CA_CERT.
Se la tua rete si trova dietro un server proxy, aggiungi quanto segue:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }Sostituisci quanto segue:
PROXY_SERVER_ADDRESS: l'indirizzo HTTP del server proxy. Includi il numero di porta anche se è lo stesso della porta predefinita dello schema.BYPASS_LIST: un elenco separato da virgole di indirizzi IP, intervalli di indirizzi IP, nomi host e nomi di dominio che non devono passare attraverso il server proxy.
Esempio:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"Quando Google Distributed Cloud invia una richiesta a uno di questi indirizzi, host o domini, la richiesta bypassa il server proxy e viene inviata direttamente alla destinazione.
Per ulteriori informazioni sull'utilizzo di un registro privato, incluse le differenze tra i cluster normali e i cluster avanzati, consulta Configurare un registro container privato.
Verifica il file di configurazione e il piano
Nella directory in cui si trova main.tf, esegui i seguenti comandi:
Inizializza Terraform:
terraform initTerraform installa tutte le librerie necessarie, come il Google Cloud provider. Se necessario, correggi eventuali errori in
maint.tf.Crea il piano Terraform:
terraform plan -out tfplanEsamina 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 il nome utente e la password dell'account vCenter. Assicurati di avere le credenziali a portata di mano. 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 tramite SSH.
Esegui l'autenticazione con Google Cloud CLI:
gcloud auth login
Esegui il comando seguente per creare il cluster di bootstrap. Molti dei valori dei flag sono gli stessi dei campi
main.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 \ --admin-kubeconfig-out=KUBECONFIG_NAMESostituisci quanto segue con i percorsi della workstation di amministrazione:
CA_CERT_PATH: il percorso del certificato CA radice per il server vCenter.BUNDLE_PATH: il percorso del file del bundle. Se hai utilizzatogkeadmper 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 ai componenti.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 il account di servizio di logging e monitoraggio.CLOUD_AUDIT_SA_PATH: il percorso dell'account di servizio di audit logging. Se non hai creato un account di servizio di audit logging, specifica il percorso del file della chiave per l'account di servizio di logging e monitoraggio.KUBECONFIG_NAME: il nome del file kubeconfig creato dal comandogkectl register bootstrap. Se non specifichi questo flag, il comando crea il file con il nomekubeconfignella directory di lavoro corrente. Se esiste già un file denominatokubeconfig, il comando lo sovrascrive.
Modifica il comando in base alle esigenze per i seguenti flag:
- Se hai specificato una cartella in
main.tf, aggiungi il seguente flag:--vcenter-folder=FOLDER - Se hai specificato una policy di archiviazione VM in
main.tf, rimuovi--vcenter-datastoree aggiungi il seguente flag:--vcenter-storage-policy-name=STORAGE_POLICY_NAME Se la workstation di amministrazione si troverà su una rete dietro un server proxy, aggiungi i seguenti flag:
--proxy-url=PROXY_URL--no-proxy=NO_PROXY
Sostituisci quanto segue:
- PROXY_URL: l'URL del server proxy.
- NO_PROXY: il valore dei domini e degli indirizzi IP esclusi dal proxy, separati da virgole.
Se aggiungi un flag, assicurati di aggiungere il carattere barra rovesciata di continuazione della riga di comando (\).
Quando ti viene richiesto, inserisci (o copia e incolla) il nome utente vCenter. Il nome utente non viene visualizzato sullo schermo.
Quando ti viene richiesto, inserisci (o copia e incolla) la password vCenter. La password non viene visualizzata sullo schermo.
Il comando esegue numerose convalide. Una volta creato correttamente il cluster di bootstrap, gkectl visualizza un output simile al seguente, troncato per facilità di lettura:
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 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 riesce e dovrai eliminare il cluster di bootstrap utilizzando il comando seguente:
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 Google Cloud console nella pagina dei cluster GKE.
Connettiti al cluster di amministrazione
Il comando gkectl register bootstrap crea un file kubeconfig per il cluster di amministrazione sulla workstation di amministrazione. Se non hai specificato il
--admin-kubeconfig-out flag quando hai eseguito gkectl register bootstrap, il
comando crea un file kubeconfig denominato kubeconfig nella directory in
cui hai eseguito il comando.
Devi limitare l'accesso a questo kubeconfig perché contiene le credenziali di autenticazione per il cluster.
Inoltre, puoi eseguire comandi kubectl di sola lettura tramite il gateway connect.
Esegui il comando seguente su un computer su cui è installata gcloud CLI per ottenere una voce
kubeconfigche può accedere al cluster tramite il gateway connect.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDL'output è simile al seguente:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.Ora puoi eseguire comandi
kubectldi sola lettura tramite il gateway connect, ad esempio:kubectl get pods -ASe hai bisogno di privilegi amministrativi completi per il cluster di amministrazione, consulta Configurare il gateway connect.