Crear un clúster híbrido de Google Distributed Cloud en VMs de Compute Engine con Terraform

En este documento se explica cómo configurar máquinas virtuales en Compute Engine con Terraform para que puedas instalar y probar Google Distributed Cloud en modo de alta disponibilidad. Para obtener información sobre cómo usar la CLI de Google Cloud para ello, consulta Probar Google Distributed Cloud en VMs de Compute Engine.

Puedes probar Google Distributed Cloud rápidamente y sin tener que preparar ningún hardware. Las secuencias de comandos de Terraform proporcionadas crean una red de máquinas virtuales en Compute Engine que se puede usar para ejecutar Google Distributed Cloud. En este tutorial, usaremos el modelo de despliegue de clúster híbrido.

Sigue estos pasos para poner en marcha un clúster de ejemplo:

  1. Ejecuta la secuencia de comandos de Terraform para configurar una red de VMs en Compute Engine
  2. Desplegar un clúster híbrido
  3. Verificar el clúster

Antes de empezar

La implementación requiere los siguientes recursos:

Configurar la red de la VM en Compute Engine

En esta sección, utilizarás las secuencias de comandos de Terraform del repositorio anthos-samples. Las secuencias de comandos configuran Compute Engine con los siguientes recursos:

  • Seis VMs para desplegar el clúster híbrido:
    • Una VM de administrador que se usa para desplegar el clúster híbrido en las demás máquinas.
    • Tres VMs para los tres nodos del plano de control necesarios para ejecutar el plano de control del clúster híbrido.
    • Dos VMs para los dos nodos de trabajador necesarios para ejecutar cargas de trabajo en el clúster híbrido.
  • Una VxLAN red superpuesta entre todos los nodos para emular la conectividad de nivel 2.
  • Acceso SSH a los nodos plano de control y worker desde la VM de administrador.

Infraestructura Bare Metal en Google Cloud con VMs de Compute Engine

Puedes cambiar el número de nodos del clúster añadiendo nombres de nodos nuevos a la variable de 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. Descarga las secuencias de comandos de Terraform del ejemplo anthos-bm-gcp-terraform:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. Actualiza el archivo terraform.tfvars.sample para incluir variables específicas de tu entorno:

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Cambia el nombre del archivo terraform.tfvars.sample al nombre predeterminado que usa Terraform para el archivo de variables:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Inicializa el directorio de ejemplo como directorio de trabajo de Terraform. De esta forma, se configuran las opciones de gestión de estado de Terraform necesarias, de forma similar a git init:

    terraform init
    
  5. Crea un plan de ejecución de Terraform. En este paso se compara el estado de los recursos, se verifican las secuencias de comandos y se crea un plan de ejecución:

    terraform plan
    
  6. Aplica los cambios descritos en la secuencia de comandos de Terraform. Este paso ejecuta el plan en el proveedor indicado (en este caso, Google Cloud) para alcanzar el estado de los recursos de destino:

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

Desplegar el clúster híbrido

Una vez que se haya completado la ejecución de Terraform, podrás implementar el clúster híbrido.

  1. Usa SSH para conectarte al host de administración:

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

    Puedes ignorar los mensajes sobre la actualización de la máquina virtual y completar este tutorial. Si tienes previsto mantener las VMs como entorno de pruebas, puede que quieras actualizar el SO o cambiar a la siguiente versión, tal como se describe en la documentación de Ubuntu.

  2. Ejecuta el siguiente bloque de código para crear el clúster híbrido cluster1 en las máquinas virtuales de Compute Engine configuradas:

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

Al ejecutar el comando bmctl, se inicia la configuración de un nuevo clúster híbrido. Esto incluye realizar comprobaciones previas en los nodos, crear los clústeres de administrador y de usuario, y registrar el clúster en Google Cloud con el agente de Connect. Todo el proceso de configuración puede tardar hasta 15 minutos. Verá el siguiente resultado mientras se crea el clúster:

    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

Verificar e interactuar con el clúster

Puedes encontrar el archivo kubeconfig de tu clúster en el directorio bmctl-workspace del equipo de administración. Para verificar tu implementación, sigue estos pasos.

  1. Si te has desconectado del host de administrador, usa SSH para conectarte al 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. Define la variable de entorno KUBECONFIG con la ruta al archivo de configuración del clúster para ejecutar comandos kubectl en el clúster:

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

    Deberían aparecer los nodos del clúster, de forma similar a la siguiente salida:

    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
    

Inicia sesión en tu clúster desde la Google Cloud consola

Para observar tus cargas de trabajo en la Google Cloud consola, debes iniciar sesión en el clúster.

Para obtener instrucciones y más información sobre cómo iniciar sesión en tu clúster, consulta Trabajar con clústeres desde la consola Google Cloud .

Limpieza

Puedes limpiar la configuración del clúster de dos formas.

Consola

Terraform

  • Anula el registro del clúster antes de eliminar todos los recursos creados por 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
  • Usa Terraform para eliminar todos los recursos.
terraform destroy --auto-approve