Questa pagina è la seconda parte di una guida che illustra l'utilizzo di Google Distributed Cloud (solo software) su bare metal (in precedenza noto come Google Distributed Cloud Virtual, precedentemente noto come cluster Anthos su bare metal) per creare una piccola installazione proof-of-concept di cluster GKE sull'hardware bare metal. La prima parte, Configura l'infrastruttura minima, mostra come configurare l'hardware, pianificare gli indirizzi IP e configurare l'infrastruttura Google Cloud necessaria. Questo documento si basa sulla configurazione e sulla pianificazione della sezione precedente e mostra come creare un cluster di amministrazione e un cluster utente. A questo punto puoi creare un servizio e un ingress.
Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. 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.
Questa guida ti aiuta a creare un'installazione minima di Google Distributed Cloud. Questa installazione minima potrebbe non essere adatta alle tue esigenze di produzione effettive e ai tuoi casi d'uso. Per informazioni sulle installazioni di produzione, consulta le guide all'installazione.
Prima di iniziare
Assicurati di aver configurato l'hardware e pianificato gli indirizzi IP come descritto nella parte precedente di questa guida, Configurare l'infrastruttura minima. In alternativa, utilizza lo strumento di pianificazione dei requisiti di rete nella sezione Prerequisiti del flusso Crea un cluster di amministrazione bare metal nella console Google Cloud .
Se vuoi utilizzare Terraform per creare il cluster utente, devi disporre di Terraform sulla workstation di amministrazione o su un altro computer.
Assicurati di aver installato i componenti più recenti di Google Cloud CLI:
gcloud components update
Per attivare e utilizzare l'API GKE On-Prem:
Abilita l'API nel tuo progetto:
gcloud services enable \ --project PROJECT_ID \ gkeonprem.googleapis.com
Sostituisci
PROJECT_ID
con l'ID progetto del tuo progetto host del parco veicoli.Se viene visualizzato un errore
PERMISSION_DENIED
, controlla di nuovo l'ID progetto che hai inserito. Se l'ID progetto è corretto, eseguigcloud auth login
per accedere a Google Cloud CLI con l'account che ha accesso al progetto.Se è la prima volta che abiliti l'API GKE On-Prem 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:
gcloud container bare-metal clusters query-version-config \ --project=PROJECT_ID \ --location="us-central1"
Panoramica della procedura
La creazione di cluster di base prevede i seguenti passaggi principali:
Raccogli le informazioni utilizzate per specificare la configurazione dei cluster.
Crea un cluster di amministrazione per gestire il cluster utente.
Crea un cluster utente in grado di eseguire i carichi di lavoro.
1. Raccogliere informazioni
Utilizza le informazioni che hai preparato in Configurare l'infrastruttura minima o dallo strumento di pianificazione della rete per compilare ogni segnaposto nella tabella seguente. I segnaposto corrispondono ai valori dei campi nei file di configurazione del cluster per l'installazione minima di un cluster di amministrazione e un cluster utente. Alcuni segnaposto sono impostati sui valori precompilati del file di configurazione del cluster generato, ma tutti i segnaposto sono modificabili.
Informazioni di base sul cluster | |
Il nome del cluster di amministrazione che stai creando. La posizione e la denominazione degli artefatti del cluster sulla workstation di amministrazione si basano sul nome del cluster. Lo spazio dei nomi del cluster deriva dal nome del cluster. | ADMIN_CLUSTER_NAME |
Il nome del cluster utente che stai creando. La posizione e la denominazione degli artefatti del cluster sulla workstation di amministrazione si basano sul nome del cluster. Lo spazio dei nomi del cluster deriva dal nome del cluster. | USER_CLUSTER_NAME |
La versione di bmctl che hai scaricato nella prima parte
di questa guida. |
CLUSTER_VERSION |
Dati dell'account | |
Il percorso del file della chiave privata SSH sulla workstation di amministrazione. Per
impostazione predefinita, il percorso è/home/USERNAME/.ssh/id_rsa . |
SSH_PRIVATE_KEY_PATH |
L'ID del Google Cloud progetto che vuoi utilizzare per connettere il cluster a Google Cloud e visualizzare log e metriche. Questo progetto è anche chiamato progetto host del parco risorse. | PROJECT_ID |
L'indirizzo email associato al tuo Google Cloud
account. Ad esempio: alex@example.com . |
GOOGLE_ACCOUNT_EMAIL |
Indirizzi IP della macchina nodo | |
Un indirizzo IP per il nodo del control plane del cluster di amministrazione. | ADMIN_CP_NODE_IP |
Un indirizzo IP per il nodo del control plane del cluster utente. | USER_CP_NODE_IP |
Un indirizzo IP per il nodo worker del cluster utente. | USER_WORKER_NODE_IP |
Indirizzi VIP | |
VIP per il server API Kubernetes del cluster di amministrazione. | ADMIN_CP_VIP |
VIP per il server API Kubernetes del cluster utente. | USER_CP_VIP |
Un VIP da utilizzare come indirizzo esterno per il proxy Ingress. | USER_INGRESS_VIP |
Intervallo di dieci indirizzi IP da utilizzare come indirizzi IP esterni per i servizi di tipo LoadBalancer. Tieni presente che questo intervallo include il VIP in entrata, che è richiesto da MetalLB. Nessun altro indirizzo IP può sovrapporsi a questo intervallo. | START_IP-END_IP |
CIDR pod e servizi | |
Intervallo di indirizzi IP nella notazione a blocchi CIDR da utilizzare per i pod nel
cluster di amministrazione. Il valore iniziale consigliato, precompilato nel file di configurazione del cluster generato, è 192.168.0.0/16 . |
192.168.0.0/16 |
Intervallo di indirizzi IP nella notazione del blocco CIDR da utilizzare per i servizi sul
cluster di amministrazione. Il valore iniziale consigliato, precompilato nel file di configurazione del cluster generato, è 10.96.0.0/20 . |
10.96.0.0/20 |
Intervallo di indirizzi IP nella notazione a blocchi CIDR da utilizzare per i pod sul
cluster utente. Il valore iniziale consigliato, precompilato nel file di configurazione del cluster generato e valore predefinito nella console, è 192.168.0.0/16 . |
192.168.0.0/16 |
Intervallo di indirizzi IP nella notazione del blocco CIDR da utilizzare per i servizi sul
cluster utente. Il valore iniziale consigliato, precompilato nel file di configurazione del cluster generato e valore predefinito nella console, è 10.96.0.0/20 . |
10.96.0.0/20 |
2. Crea un cluster di amministrazione
I seguenti passaggi creano un cluster di amministrazione per un'installazione minima di cluster di amministrazione e utente. Prima di procedere, assicurati di aver fornito i valori per ogni segnaposto nella tabella della sezione precedente Raccogli informazioni.
Quando l'API GKE On-Prem (gkeonprem.googleapis.com
) è abilitata per il tuo progetto, i cluster appena creati vengono registrati automaticamente con l'API.
La registrazione avviene anche quando
spec.gkeOnPremAPI
non è specificato nel file di configurazione del cluster. La registrazione con questa API ospitata daGoogle Cloudti consente di gestire il ciclo di vita del cluster utilizzando la consoleGoogle Cloud o gcloud CLI.
Per disattivare la registrazione automatica, rimuovi il commento dalla sezione spec.gkeOnPremAPI
nel file di configurazione del cluster e imposta spec.gkeOnPremAPI.enabled
su false
prima di creare il cluster. Il campo spec.gkeOnPremAPI.enabled
è modificabile,
quindi puoi annullare la registrazione del cluster in qualsiasi momento dopo la creazione.
Per creare un cluster di amministrazione per l'installazione minima:
Imposta le credenziali predefinite che Google Distributed Cloud può utilizzare per creare il cluster con il seguente comando:
gcloud auth application-default login
Per generare un file di configurazione del cluster, esegui questo comando dalla directory
/baremetal
sulla workstation di amministrazione:bmctl create config -c ADMIN_CLUSTER_NAME \ --enable-apis --create-service-accounts --project-id=PROJECT_ID
Verifica il file di configurazione del cluster di amministrazione:
Il seguente file di configurazione del cluster è compilato con i valori che hai inserito nella tabella di pianificazione nella sezione precedente. Oltre ai valori inseriti, tieni presente le seguenti differenze rispetto al file di configurazione generato:
- I commenti sono stati rimossi da questo esempio per migliorare la leggibilità.
- La specifica
NodePool
è stata rimossa. I nodi worker non sono consentiti per un cluster di amministrazione.
gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: ADMIN_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: ADMIN_CP_VIP clusterOperations: projectID: PROJECT_ID location: us-central1 storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1
Sostituisci i contenuti del file di configurazione generato sulla workstation amministrativa con i contenuti dell'esempio precedente.
Apri il file generato,
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml
e sostituisci i contenuti con quelli dell'esempio che hai verificato nel passaggio precedente.Per creare il cluster di amministrazione, esegui questo comando dalla directory
/baremetal
sulla workstation di amministrazione:bmctl create cluster -c ADMIN_CLUSTER_NAME
Il comando
bmctl
mostra l'output sullo schermo mentre esegue i controlli preliminari e crea il cluster. Le informazioni dettagliate vengono scritte nei log nella cartellabaremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log
della workstation di amministrazione.La creazione del cluster può richiedere diversi minuti.
Verifica che il cluster sia stato creato e sia in esecuzione:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ get nodes
Se il cluster è in esecuzione, la risposta è simile alla seguente:
NAME STATUS ROLES AGE VERSION node-01 Ready control-plane 16h v1.25.7-gke.1000
Per concedere al tuo account utente il ruolo Kubernetes
clusterrole/cluster-admin
sul cluster, esegui il seguente comandogcloud
:gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \ --apply
L'output di questo comando è simile al seguente, che è troncato per facilitare la lettura:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var> Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
Tra le altre cose, le norme RBAC ti consentono di accedere al cluster nella consoleGoogle Cloud per visualizzare ulteriori dettagli sul cluster.
3. Creazione di un cluster utente
I passaggi seguenti creano un cluster utente per un'installazione minima di cluster di amministrazione e cluster utente. Prima di procedere, assicurati di aver fornito valori per ogni segnaposto nella tabella della sezione precedente Raccogli informazioni.
Per creare un cluster utente per l'installazione minima:
bmctl
Quando l'API GKE On-Prem (gkeonprem.googleapis.com
) è abilitata per il tuo progetto, i cluster appena creati vengono registrati automaticamente con l'API.
La registrazione avviene anche quando
spec.gkeOnPremAPI
non è specificato nel file di configurazione del cluster. Quando il cluster è
registrato con questa API ospitata da Google Cloud, puoi utilizzare la console Google Cloud
o gcloud CLI per gestire il ciclo di vita del cluster.
Per disattivare la registrazione automatica, rimuovi il commento dalla sezione spec.gkeOnPremAPI
nel file di configurazione del cluster e imposta spec.gkeOnPremAPI.enabled
su false
prima di creare il cluster. Il campo spec.gkeOnPremAPI.enabled
è
modificabile, quindi puoi annullare la registrazione del cluster in qualsiasi momento dopo la sua creazione.
Genera un file di configurazione del cluster:
bmctl create config -c USER_CLUSTER_NAME \ --project-id=PROJECT_ID
Verifica il file di configurazione del cluster utente:
Il seguente file di configurazione del cluster è compilato con i valori che hai inserito in precedenza nella tabella di pianificazione. Oltre ai valori che hai inserito, tieni presente le seguenti differenze rispetto al file di configurazione generato:
- I commenti sono stati rimossi da questo esempio per migliorare la leggibilità.
- Il tipo di cluster,
spec.type
, è stato impostato suuser
. - Il campo
spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts
è stato aggiunto per concedereclusterrole/cluster-admin
al tuo account. Tra le altre cose, questo campo ti consente di accedere al cluster nella consoleGoogle Cloud per visualizzare ulteriori dettagli sul cluster.
--- apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME spec: type: user profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: USER_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: USER_CP_VIP ingressVIP: USER_INGRESS_VIP addressPools: - name: pool1 addresses: - START_IP-END_IP clusterOperations: projectID: PROJECT_ID location: us-central1 clusterSecurity: authorization: clusterAdmin: gcpAccounts: - GOOGLE_ACCOUNT_EMAIL storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-USER_CLUSTER_NAME spec: clusterName: USER_CLUSTER_NAME nodes: - address: USER_WORKER_NODE_IP
Sostituisci i contenuti del file di configurazione generato sulla workstation amministrativa con i contenuti dell'esempio precedente.
Apri il file generato,
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml
e sostituisci i contenuti con quelli dell'esempio che hai verificato nel passaggio precedente.Crea il cluster utente:
bmctl create cluster -c USER_CLUSTER_NAME \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
Il comando
bmctl
mostra l'output sullo schermo mentre esegue i controlli preliminari e crea il cluster. Le informazioni dettagliate vengono scritte nei log nella cartellabaremetal/bmctl-workspace/USER_CLUSTER_NAME/log
della workstation di amministrazione.La creazione del cluster può richiedere diversi minuti.
Verifica che il cluster sia stato creato e sia in esecuzione:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \ get nodes
Se il cluster è in esecuzione, la risposta è simile alla seguente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Console
Per creare un cluster utente nella console:
Nella console, vai alla pagina Crea un cluster bare metal.
Assicurati che nell'elenco dei progetti sia selezionato
PROJECT_ID
. Google CloudFai clic su Crea cluster.
Nella finestra di dialogo, fai clic su On-premise.
Accanto a Bare metal, fai clic su Configura. Viene visualizzata la pagina Prerequisiti.
Nella sezione Scegli il tipo di cluster, seleziona Crea un cluster utente per un cluster di amministrazione esistente.
Fai clic su Avanti.
Impostazioni di base del cluster
Inserisci
USER_CLUSTER_NAME
come nome del cluster di utenti o utilizza il nome predefinito.Assicurati che sia selezionato il cluster di amministrazione appena creato.
In Posizione API Google Cloud, seleziona us-central1.
In Versione di Google Distributed Cloud, seleziona
CLUSTER_VERSION
o utilizza il valore predefinito. Puoi utilizzare i valori predefiniti per le altre impostazioni di questa pagina.Fai clic su Networking nella barra di navigazione a sinistra.
Networking
Nella sezione Control plane, inserisci quanto segue nel campo IP nodo del control plane 1:
USER_CP_NODE_IP
Nella sezione Bilanciatore del carico, utilizza il bilanciatore del carico predefinito, In bundle con MetalLB.
Vai alla sezione Nuovo pool di indirizzi. Inserisci l'intervallo di indirizzi IP nel campo Intervallo di indirizzi IP 1:
10.200.0.51-10.200.0.70
Fai clic su Fine.
Nella sezione IP virtuali, inserisci l'indirizzo IP per il VIP del control plane:
USER_CP_VIP
Inserisci l'indirizzo IP per il VIP in entrata:
USER_INGRESS_VIP
Nella sezione CIDR servizi e pod, se non hai modificato i CIDR servizi e pod nel pianificatore, puoi utilizzare i valori predefiniti.
Se hai modificato i CIDR, inserisci quelli che vuoi utilizzare:
- CIDR servizio:
10.96.0.0/20
- CIDR pod:
192.168.0.0/16
Fai clic su default-pool nella barra di navigazione a sinistra.
Crea un node pool
Il cluster deve avere almeno un pool di nodi per i nodi worker. Un pool di nodi è un modello per i gruppi di nodi worker creati in questo cluster.
Inserisci l'indirizzo IP del nodo worker del cluster utente nel campo Indirizzo 1 dei nodi:
USER_WORKER_NODE_IP
Crea il cluster
Fai clic su Verifica e crea per creare il cluster di utenti.
La creazione del cluster utente richiede almeno 15 minuti. La console mostra i messaggi di stato durante la verifica delle impostazioni e la creazione del cluster.
Se si verifica un problema con la configurazione, la console visualizza un messaggio di errore che dovrebbe essere abbastanza chiaro da consentirti di risolvere il problema di configurazione e riprovare a creare il cluster.
Per visualizzare ulteriori informazioni sulla procedura di creazione, fai clic su Mostra dettagli per visualizzare un riquadro laterale. Fai clic su
per chiudere il riquadro dei dettagli.Quando il cluster viene creato, viene visualizzato Stato cluster: in esecuzione.
Dopo aver creato il cluster, fai clic su
Cluster per tornare alla pagina Cluster.
Interfaccia a riga di comando gcloud
Questa sezione mostra come creare un cluster utente e un pool di nodi utilizzando gcloud CLI.
Esegui questo comando per creare un cluster utente:
gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=PROJECT_ID \ --admin-cluster-membership-location=global \ --version=CLUSTER_VERSION \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \ --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \ --control-plane-vip=USER_CP_VIP \ --control-plane-load-balancer-port=443 \ --ingress-vip=USER_INGRESS_VIP \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
L'output del comando è simile al seguente:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
Nell'output di esempio, la stringa
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
è l'OPERATION_ID
dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione con il seguente comando:gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
La creazione del cluster richiede circa 15 minuti o più. Durante la creazione del cluster, puoi eseguire di tanto in tanto il comando precedente per ottenere lo stato attuale.
Quando il cluster viene creato, viene visualizzato un output simile al seguente:
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
Dopo aver creato il cluster, esegui questo comando per creare un pool di nodi sul cluster appena creato.
gcloud container bare-metal node-pools create node-pool-1 \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --node-configs node-ip=USER_WORKER_NODE_IP
Per ulteriori informazioni e altri esempi, consulta le seguenti risorse:
Terraform
Questa sezione mostra come creare un cluster utente e un pool di nodi utilizzando Terraform.
Crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione
.tf
. In questa guida, il file si chiamamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Verifica la risorsa Terraform del cluster utente:
Il seguente esempio di risorsa Terraform è compilato con i valori che hai inserito nella tabella di pianificazione nella sezione precedente.
resource "google_gkeonprem_bare_metal_cluster" "cluster-basic" { provider = google-beta name = "USER_CLUSTER_NAME" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME" bare_metal_version = "CLUSTER_VERSION" network_config { island_mode_cidr { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] } } control_plane { control_plane_node_pool_config { node_pool_config { labels = {} operating_system = "LINUX" node_configs { labels = {} node_ip = "USER_CP_NODE_IP" } } } } load_balancer { port_config { control_plane_load_balancer_port = 443 } vip_config { control_plane_vip = "USER_CP_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "pool1" addresses = [ "START_IP-END_IP" ] avoid_buggy_ips = true manual_assign = true } } } storage { lvp_share_config { lvp_config { path = "/mnt/localpv-share" storage_class = "local-shared" } shared_path_pv_count = 5 } lvp_node_mounts_config { path = "/mnt/localpv-disk" storage_class = "local-disks" } } security_config { authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } } } resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" { provider = google-beta name = "node-pool-1" bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name project = "PROJECT_ID" location = "us-central1" node_pool_config { operating_system = "LINUX" node_configs { node_ip = "USER_WORKER_NODE_IP" } } }
Copia la risorsa Terraform in
main.tf
e salva il file.Inizializza e crea il piano Terraform:
terraform init
Terraform installa tutte le librerie necessarie, ad esempio il provider Google Cloud .
Esamina la configurazione e apporta modifiche, se necessario:
terraform plan
Applica il piano Terraform per creare il cluster utente:
terraform apply
Quando richiesto, inserisci
yes
.Per creare il cluster utente di base e il pool di nodi sono necessari circa 15 minuti (o più, a seconda della rete).
Per creare un file kubeconfig per il cluster utente, esegui questo comando sulla workstation di amministrazione:
bmctl get credentials --cluster USER_CLUSTER_NAME \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
L'output del comando mostra il nome del file kubeconfig per il cluster utente, ad esempio:
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
Il valore
TIMESTAMP
nel nome file indica la data e l'ora di creazione del file.Poiché questo file contiene le credenziali di autenticazione per il tuo cluster, devi archiviarlo in una posizione sicura con accesso limitato.
Verifica che il cluster sia stato creato e sia in esecuzione:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \ get nodes
Se il cluster è in esecuzione, la risposta è simile alla seguente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Per ulteriori informazioni e altri esempi, consulta le seguenti risorse:
Connettiti al cluster utente
Indipendentemente dallo strumento utilizzato per creare il cluster utente, al tuo indirizzo email vengono concessi i criteri di controllo dell'accesso basato su ruoli (RBAC) che ti consentono di connetterti al cluster con privilegi amministrativi completi. Il punto in cui viene specificato il tuo indirizzo email dipende dallo strumento:
bmctl
: il tuo indirizzo email è incluso nella sezioneclusterSecurity
del file di configurazione utente di esempio.Terraform: il tuo indirizzo email è incluso nella sezione
security_config
della risorsagoogle_gkeonprem_bare_metal_cluster
di esempio.La console: in qualità di creatore del cluster, il tuo indirizzo email viene incluso automaticamente nella pagina Impostazioni di base del cluster nella sezione Autorizzazione.
Anche se viene specificato solo il tuo indirizzo email, puoi includere altri indirizzi email per concedere l'accesso amministrativo al cluster ad altri utenti.
Le policy RBAC concesse al tuo indirizzo email svolgono le seguenti operazioni:
Concederti il ruolo Kubernetes
clusterrole/cluster-admin
sul cluster.Consente di accedere al cluster nella console Google Cloud utilizzando la tua identità Google. Puoi visualizzare il cluster nella pagina Cluster GKE della console.
Consente di eseguire comandi
kubectl
sul computer locale utilizzando il file kubeconfig del gateway di connessione.
Per ottenere il file kubeconfig del gateway di connessione, esegui questi comandi dal computer locale:
Ottieni la voce kubeconfig che può accedere al cluster tramite il gateway di connessione.
gcloud container fleet memberships get-credentials USER_CLUSTER_NAME \ --project=PROJECT_ID
L'output è simile al seguente:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
Ora puoi eseguire i comandi
kubectl
tramite il gateway di connessione:kubectl get nodes
L'output è simile al seguente:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Molti comandi
kubectl
richiedono il file kubeconfig per il cluster di amministrazione. Dovrai eseguire questi comandi sulla workstation di amministrazione.
Passaggi successivi
Scopri di più su:
- Risorsa Terraform
google_gkeonprem_bare_metal_cluster
- Il gateway di connessione
- Risorsa Terraform