Crear un clúster híbrido de Anthos alojado en Bare Metal en las VM de Compute Engine mediante Terraform

En este documento, se muestra cómo configurar VM en Compute Engine con Terraform para instalar y probar clústeres de Anthos alojados en un equipo físico con alta disponibilidad. Si deseas obtener información sobre cómo usar Google Cloud CLI para esto, consulta Prueba los clústeres de Anthos en equipos físicos en VM de Compute Engine.

Puedes probar clústeres de Anthos alojados en equipos físicos con rapidez y sin tener que preparar ningún hardware. Las secuencias de comandos de Terraform proporcionadas crean una red de VM en Compute Engine que se puede usar para ejecutar clústeres de Anthos alojados en equipos físicos. En este instructivo, usamos el modelo de implementación de clúster híbrido.

Completa los siguientes pasos para ejecutar un clúster de muestra:

  1. Ejecuta la secuencia de comandos de Terraform para configurar una red de VM en Compute Engine
  2. Implementa un clúster híbrido
  3. Verifica tu clúster

Antes de comenzar

La implementación requiere los siguientes recursos:

Configura la red de VM en Compute Engine

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

  • Seis VM para implementar el clúster híbrido:
    • Una VM de administrador que se usa para implementar el clúster híbrido en las otras máquinas.
    • Tres VM para los tres nodos de plano de control necesarios a fin de ejecutar el plano de control del clúster híbrido.
    • Dos VM para los dos nodos trabajadores que se necesitan a fin de ejecutar cargas de trabajo en el clúster híbrido
  • Una red VxLAN superpuesta entre todos los nodos para emular la conectividad L2.
  • Acceso SSH a los nodos control-plane y worker desde la VM de administrador

Infraestructura de equipos físicos en Google Cloud con VM de Compute Engine

Puedes cambiar la cantidad de nodos del clúster si agregas 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 para la muestra 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 las 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 muestra como directorio de trabajo de Terraform. Esto establece las opciones de configuración de la administración del estado de Terraform requeridas, de manera 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. En este paso, se ejecuta el plan en el proveedor determinado (en este caso, Google Cloud) para alcanzar el estado de recursos deseado:

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

Implementa el clúster híbrido

Una vez que se complete la ejecución de Terraform, estarás listo para implementar el clúster híbrido.

  1. Usa SSH para conectarte al host de administrador:

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

    Puedes ignorar cualquier mensaje sobre la actualización de la VM y completar este instructivo. Si planeas conservar las VM como un entorno de prueba, te recomendamos actualizar el SO o actualizar a la próxima versión 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 VM configuradas de Compute Engine:

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

Cuando ejecutas el comando bmctl, se comienza a configurar un clúster híbrido nuevo. Esto incluye realizar comprobaciones previas en los nodos, crear los clústeres de administrador y de usuario, y también registrar el clúster con Google Cloud mediante Connect. La configuración completa puede demorar hasta 15 minutos. Verás 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

Verifica el clúster e interactúa con él

Puedes encontrar el archivo kubeconfig de tu clúster en la máquina de administrador en el directorio bmctl-workspace. Para verificar tu implementación, completa los siguientes pasos.

  1. Si te desconectaste 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. Configura la variable de entorno KUBECONFIG con la ruta al archivo de configuración del clúster a fin de ejecutar comandos de kubectl en el clúster:

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

    Deberías ver los nodos del clúster impreso, de manera similar al siguiente resultado:

    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
    

Accede a tu clúster desde la consola de Google Cloud

Para observar tus cargas de trabajo en la consola de Google Cloud, debes acceder al clúster.

Para obtener instrucciones y más información sobre el acceso a tu clúster, consulta Acceso a un clúster desde la consola de Google Cloud.

Realiza una limpieza

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

Consola

Terraform

  • Cancela el registro del clúster antes de borrar todos los recursos que creó 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 borrar todos los recursos.
terraform destroy --auto-approve