Créer un cluster hybride Google Distributed Cloud Virtual pour Bare Metal sur des VM Compute Engine à l'aide de Terraform

Ce document explique comment configurer des VM sur Compute Engine avec Terraform pour pouvoir installer et essayer GKE sur une solution Bare Metal en mode haute disponibilité. Pour découvrir comment utiliser la Google Cloud CLI, consultez la page Essayer GKE sur une solution Bare Metal sur des VM Compute Engine.

Vous pouvez essayer GKE sur une solution Bare Metal rapidement, sans avoir à préparer de matériel. Les scripts Terraform fournis créent un réseau de VM sur Compute Engine permettant d'exécuter GKE sur une solution Bare Metal. Dans ce tutoriel, nous utilisons le modèle de déploiement de cluster hybride.

Pour cela, procédez comme suit :

  1. Exécuter le script Terraform pour configurer un réseau de VM sur Compute Engine.
  2. Déployer un cluster hybride
  3. Vérifiez le cluster.

Avant de commencer

Le déploiement nécessite les ressources suivantes :

Configurer le réseau de VM sur Compute Engine

Dans cette section, vous allez utiliser les scripts Terraform du dépôt anthos-samples. Les scripts permettent de configurer Compute Engine avec les ressources suivantes :

  • Six VM pour déployer le cluster hybride :
    • Une VM d'administration utilisée pour déployer le cluster hybride sur les autres machines.
    • Trois VM pour les trois nœuds du plan de contrôle nécessaires à l'exécution du plan de contrôle du cluster hybride.
    • Deux VM pour les deux nœuds de calcul nécessaires à l'exécution de charges de travail sur le cluster hybride.
  • Un réseau superposé VxLAN entre tous les nœuds pour émuler la connectivité L2.
  • Un accès SSH aux nœuds du plan de contrôle et aux nœuds de calcul à partir de la VM d'administration.

Infrastructure Bare Metal sur Google Cloud à l'aide de VM Compute Engine

Vous pouvez modifier le nombre de nœuds du cluster en ajoutant des noms à la variable 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. Téléchargez les scripts Terraform pour l'exemple anthos-bm-gcp-terraform :

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. Mettez à jour le fichier terraform.tfvars.sample pour inclure des variables spécifiques à votre environnement :

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Renommez le fichier terraform.tfvars.sample avec le nom par défaut utilisé par Terraform pour le fichier de variables :

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Initialisez l'exemple de répertoire en tant que répertoire de travail Terraform. Cela configure les configurations requises pour la gestion de l'état Terraform, semblables à git init :

    terraform init
    
  5. Créez un plan d'exécution Terraform. Cette étape compare l'état des ressources, vérifie les scripts et crée un plan d'exécution :

    terraform plan
    
  6. Appliquez les modifications décrites dans le script Terraform. Cette étape exécute le plan sur le fournisseur donné (dans ce cas, Google Cloud) pour atteindre l'état souhaité des ressources :

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

Déployer le cluster hybride

Une fois l'exécution de Terraform terminée, vous êtes prêt à déployer le cluster hybride.

  1. Utilisez SSH pour vous connecter à l'hôte administrateur :

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

    Vous pouvez ignorer tous les messages concernant la mise à jour de la VM et suivre ce tutoriel. Si vous prévoyez de conserver les VM en tant qu'environnement de test, vous pouvez mettre à jour le système d'exploitation ou passer à la version suivante, comme décrit dans la documentation Ubuntu.

  2. Exécutez le bloc de code suivant pour créer le cluster hybride cluster1 sur les VM Compute Engine configurées :

    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'exécution de la commande bmctl lance la configuration d'un nouveau cluster hybride. Cela inclut l'exécution de vérifications préliminaires sur les nœuds, la création des clusters d'administrateur et d'utilisateur, ainsi que l'enregistrement du cluster auprès de Google Cloud à l'aide de Connect. L'installation peut prendre jusqu'à 15 minutes. Le résultat suivant s'affiche lors de la création du cluster :

    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

Vérifier et interagir avec le cluster

Vous trouverez le fichier kubeconfig de votre cluster sur la machine d'administration, dans le répertoire bmctl-workspace. Pour vérifier votre déploiement, procédez comme suit.

  1. Si vous vous êtes déconnecté de l'hôte administrateur, utilisez SSH pour vous connecter à l'hôte.

    # 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. Définissez la variable d'environnement KUBECONFIG avec le chemin d'accès au fichier de configuration du cluster pour exécuter les commandes kubectl sur le cluster :

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

    Le nombre de nœuds du cluster doit s'afficher, avec un résultat semblable à celui-ci:

    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
    

Se connecter à votre cluster depuis la console Google Cloud

Pour observer vos charges de travail dans la console Google Cloud, vous devez vous connecter au cluster.

Pour obtenir des instructions et des informations sur la connexion à votre cluster, consultez la section Se connecter à un cluster depuis la console Google Cloud.

Effectuer un nettoyage

Vous pouvez nettoyer la configuration du cluster de deux manières.

Console

Terraform

  • Annulez l'enregistrement du cluster avant de supprimer toutes les ressources créées par 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
  • Utilisez Terraform pour supprimer toutes les ressources.
terraform destroy --auto-approve