Creare un cluster ibrido Google Distributed Cloud sulle VM Compute Engine utilizzando Terraform

Questo documento mostra come configurare le VM su Compute Engine con Terraform in modo da poter installare e provare Google Distributed Cloud in alta disponibilità (HA). Per informazioni su come utilizzare Google Cloud CLI per questo scopo, consulta Prova Google Distributed Cloud su VM Compute Engine.

Puoi provare Google Distributed Cloud rapidamente e senza doverti preparare hardware. Gli script Terraform forniti creano una rete di VM su Compute Engine che può essere utilizzata per eseguire Google Distributed Cloud. In questo tutorial sul deployment di un cluster ibrido un modello di machine learning.

Completa i seguenti passaggi per eseguire un cluster di esempio:

  1. Esegui lo script Terraform per configurare una rete di VM su Compute Engine
  2. Esegui il deployment di un cluster ibrido
  3. Verifica il cluster

Prima di iniziare

Il deployment richiede le seguenti risorse:

  • Una workstation con accesso a internet e i seguenti strumenti installati: Git Google Cloud CLI e Terraform (>= v0.15.5, < 1,2).
  • Un progetto Google Cloud.

    Vai alla selezione del progetto

  • Un account di servizio nel progetto che soddisfi uno dei seguenti requisiti: e il relativo file chiave scaricato nell'account workstation:

    1. L'account di servizio dispone delle autorizzazioni Proprietario
    2. L'account di servizio dispone sia delle autorizzazioni di editor che di amministratore IAM del progetto

    Vai a Service account

Configura la rete VM su Compute Engine

In questa sezione utilizzerai gli script Terraform del repository anthos-samples. Gli script configurano Compute Engine con le risorse seguenti:

  • Sei VM per il deployment del cluster ibrido:
    • Una VM di amministrazione utilizzata per eseguire il deployment del cluster ibrido sulle altre macchine.
    • Tre VM per i tre nodi del piano di controllo necessari per eseguire il cluster ibrido dal piano di controllo.
    • Due VM per i due nodi worker necessari per eseguire i carichi di lavoro nell'ambiente in un cluster Kubernetes.
  • Una VxLAN rete overlay tra tutti i nodi per emulare la connettività L2.
  • Accesso SSH ai nodi del piano di controllo e worker dalla VM amministratore.

Infrastruttura Bare Metal su Google Cloud con VM di Compute Engine

Puoi modificare il numero di nodi nel cluster aggiungendo nuovi nomi di nodi a la variabile Terraform instance_count:

###################################################################################
# The recommended instance count for High Availability (HA) is 3 for Control plane
# and 2 for Worker nodes.
###################################################################################
variable "instance_count" {
  description = "Number of instances to provision per layer (Control plane and Worker nodes) of the cluster"
  type        = map(any)
  default = {
    "controlplane" : 3
    "worker" : 2
  }
}

  1. Scarica gli script Terraform di esempio per anthos-bm-gcp-terraform:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. Aggiorna il file terraform.tfvars.sample in modo da includere variabili specifiche per il tuo ambiente:

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Rinomina il file terraform.tfvars.sample con il nome predefinito utilizzato da terraform per il file delle variabili:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Inizializza la directory di esempio come directory di lavoro di Terraform. Vengono configurate le configurazioni di gestione dello stato Terraform richieste, simili a git init:

    terraform init
    
  5. Creare un piano di esecuzione di Terraform. Questo passaggio confronta lo stato risorse, verifica gli script e crea un piano di esecuzione:

    terraform plan
    
  6. Applica le modifiche descritte nello script Terraform. Questo passaggio esegue sul provider specificato (in questo caso Google Cloud) per raggiungere lo stato delle risorse:

    terraform apply  # when prompted to confirm the Terraform plan, type 'Yes' and enter
    

Esegui il deployment del cluster ibrido

Al termine dell'esecuzione di Terraform, puoi eseguire il deployment dell'ibrido in un cluster Kubernetes.

  1. Utilizza SSH per connetterti all'host amministratore:

    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    

    Puoi ignorare gli eventuali messaggi relativi all'aggiornamento della VM e completare durante il tutorial. Se prevedi di mantenere le VM come ambiente di test, aggiornare il sistema operativo o eseguire l'upgrade alla release successiva come descritto Documentazione di Ubuntu.

  2. Esegui il seguente blocco di codice per creare l'ibrido cluster1 sulle VM di Compute Engine configurate:

    sudo ./run_initialization_checks.sh && \
    sudo bmctl create config -c cluster1 && \
    sudo cp ~/cluster1.yaml bmctl-workspace/cluster1 && \
    sudo bmctl create cluster -c cluster1
    

L'esecuzione del comando bmctl avvia la configurazione di un nuovo cluster ibrido. Questo include la creazione dei controlli preflight sui nodi, la creazione dell'amministratore e cluster e la registrazione del cluster con Google Cloud tramite Connect. L'intera configurazione può richiedere fino a 15 minuti. Vedrai l'output seguente come cluster in fase di creazione:

    Created config: bmctl-workspace/cluster1/cluster1.yaml
    Creating bootstrap cluster... OK
    Installing dependency components... OK
    Waiting for preflight check job to finish... OK
    - Validation Category: machines and network
            - [PASSED] 10.200.0.3
            - [PASSED] 10.200.0.4
            - [PASSED] 10.200.0.5
            - [PASSED] 10.200.0.6
            - [PASSED] 10.200.0.7
            - [PASSED] gcp
            - [PASSED] node-network
    Flushing logs... OK
    Applying resources for new cluster
    Waiting for cluster to become ready OK
    Writing kubeconfig file
    kubeconfig of created cluster is at bmctl-workspace/cluster1/cluster1-kubeconfig, please run
    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig get nodes
    to get cluster node status.
    Please restrict access to this file as it contains authentication credentials of your cluster.
    Waiting for node pools to become ready OK
    Moving admin cluster resources to the created admin cluster
    Flushing logs... OK
    Deleting bootstrap cluster... OK

Verifica e interagisci con il cluster

Puoi trovare il file kubeconfig del cluster sulla macchina di amministrazione nella Directory bmctl-workspace. Per verificare il deployment, completa quanto segue passaggi.

  1. Se hai eseguito la disconnessione dall'host amministratore, utilizza SSH per connetterti all'host:

    # You can copy the command from the output of the Terraform execution above
    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    
  2. Imposta la variabile di ambiente KUBECONFIG con il percorso della risorsa del cluster di configurazione per eseguire i comandi kubectl sul cluster:

    export CLUSTER_ID=cluster1
    export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
    kubectl get nodes
    

    Dovresti vedere i nodi del cluster stampati, in modo simile il seguente output:

    NAME          STATUS   ROLES    AGE   VERSION
    cluster1-abm-cp1-001   Ready    master   17m   v1.18.6-gke.6600
    cluster1-abm-cp2-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-cp3-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-w1-001    Ready    <none>   14m   v1.18.6-gke.6600
    cluster1-abm-w2-001    Ready    <none>   14m   v1.18.6-gke.6600
    

Accedi al cluster dalla console Google Cloud

Per osservare i carichi di lavoro nella console Google Cloud, devi accedere a in un cluster Kubernetes.

Per istruzioni e ulteriori informazioni sull'accesso al cluster, consulta Accedere a un cluster dalla console Google Cloud.

Esegui la pulizia

Puoi pulire la configurazione del cluster in due modi.

Console

Terraform

  • Annullare la registrazione del cluster prima di eliminare tutte le risorse create da Terraform.
# Use SSH to connect to the admin host
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE

# Reset the cluster
export CLUSTER_ID=cluster1
export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
sudo bmctl reset --cluster $CLUSTER_ID

# log out of the admin host
exit
  • Utilizzare Terraform per eliminare tutte le risorse.
terraform destroy --auto-approve