Créer un VPC et un cluster avec Terraform

Présentation

Terraform est un outil Open Source permettant de configurer des environnements cloud tels qu'AWS et d'y installer des logiciels tels que Kubernetes. Vous pouvez configurer votre environnement AWS et y créer vos clusters avec Terraform ou avec les instructions d'installation de GKE sur AWS.

Cette page explique comment utiliser Terraform pour configurer votre environnement AWS et installer un cluster à l'aide d'un exemple de configuration stocké sur GitHub. Pour utiliser ces scripts, vous devez maîtriser les principes de base de Terraform. En particulier, vous devez modifier les fichiers de configuration Terraform pour ajouter vos propres informations d'utilisateur et de projet et pour apporter les modifications souhaitées à la configuration de cluster par défaut.

Pour configurer votre environnement AWS et créer des clusters sans utiliser Terraform, consultez la page Présentation des prérequis AWS et les instructions pour créer un cluster.

Fonction des scripts

Ce script configure Terraform pour créer un VPC AWS et y déployer un cluster. Le VPC obtenu répond à toutes les conditions préalables GKE sur AWS et présente la même topologie de réseau que le VPC créé par les instructions de création manuelle de VPC de Google.

Le cluster créé par l'ensemble de scripts présente les caractéristiques suivantes :

  • Trois nœuds de plan de contrôle (un dans chacune des trois zones de disponibilité configurées) Ces nœuds sont de type t3.large.
  • Un pool de nœuds avec deux nœuds de type t3.large. Ce pool de nœuds est déployé dans la région us-east-1 d'AWS et peut procéder à un autoscaling jusqu'à cinq nœuds.

Modifier le VPC et le cluster par défaut

Vous pouvez modifier les caractéristiques du VPC et du cluster créés par les scripts Terraform en modifiant les fichiers Terraform appropriés.

  • Ajustez la région et les zones de disponibilité en modifiant le fichier variables.tf.
  • Modifiez le type d'instance AWS.
  • Modifiez les caractéristiques du VPC, y compris les sous-réseaux, les zones de disponibilité et l'équilibreur de charge, en modifiant les fichiers du sous-dossier modules/vpc.

Pour obtenir la liste des régions AWS contrôlées depuis une région Google Cloud spécifique et les versions Kubernetes associées, exécutez la commande suivante:

gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

Remplacez GOOGLE_CLOUD_REGION par le nom de la région Google Cloud à partir de laquelle vous souhaitez que GKE sur AWS contrôle votre cluster.

Prérequis

  1. Installez Google Cloud CLI avec les instructions d'installation de Google Cloud CLI. Si vous l'avez déjà installé, suivez ces instructions pour vous assurer que vous utilisez la version 412.0.0 ou une version ultérieure.

  2. Installez la CLI AWS à l'aide des instructions d'installation de la CLI AWS.

  3. Créez vos clés d'accès AWS.

  4. Configurez votre environnement AWS local à l'aide de la commande suivante :

    aws configure
    

Préparer Terraform

  1. Configurez l'authentification via Google Cloud CLI en exécutant les commandes suivantes :

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. Activez les services requis dans votre projet Google Cloud.

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com \
      opsconfigmonitoring.googleapis.com
    

    Remplacez GOOGLE_PROJECT_ID par l'ID de votre projet Google Cloud.

  3. Créez une copie locale du dépôt et accédez au dossier AWS :

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

Déployer GKE sur AWS

  1. Modifiez les lignes suivantes dans le fichier terraform.tfvars pour remplacer les valeurs par défaut :

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_users = ["GCP_ACCOUNT_EMAIL"]
    

    Remplacez les éléments suivants :

    • GOOGLE_PROJECT_ID : ID de votre projet Google. Vous le trouverez dans la partie gauche de la page du tableau de bord de la console Google Cloud.

    • ACCOUNT_EMAILS : liste des adresses e-mail, séparées par une virgule, qui pouvent se connecter aux clusters après sa création, par exemple "admin@example.com","operator@example.com". Au moins une adresse doit disposer d'un compte Google Cloud. Pour ajouter des fournisseurs d'identité supplémentaires à votre cluster, consultez la page Gérer l'identité avec GKE Identity Service.

  2. Initialisez et créez le plan Terraform :

    terraform init
    

    Terraform installe les bibliothèques nécessaires, telles que le fournisseur Google Cloud.

  3. Appliquez le plan Terraform pour créer le cluster et le cloud privé virtuel AWS :

    terraform apply
    

    Suivez les instructions pour commencer à créer un cluster.

L'installation prend environ 12 minutes. Lorsque Terraform a créé votre cloud privé virtuel et votre cluster AWS, il imprime des informations sur le cluster et crée un fichier nommé var.sh. Vous pouvez utiliser les valeurs de ce fichier si vous créez des pools de nœuds supplémentaires.

Pour vérifier que le cluster a bien été créé, attendez qu'il apparaisse sur la page Kubernetes Engine de la console Google Cloud dans votre projet Google Cloud.

Vous connecter à votre cluster

Pour vérifier la connectivité à votre cluster et récupérer ses détails, exécutez la commande suivante :

   gcloud container fleet memberships get-credentials CLUSTER_NAME
   kubectl get nodes

Remplacez CLUSTER_NAME par le nom de votre cluster. Vous trouverez le nom de votre cluster dans le fichier de sortie Terraform var.sh.

Le résultat inclut une liste des nœuds de votre cluster et leur état.

Supprimer le cluster et le cloud privé virtuel AWS

Avant de supprimer le cluster et le cloud privé virtuel AWS, vous devez supprimer tous les éléments suivants :

  • Tous les équilibreurs de charge AWS actifs dans le cloud privé virtuel AWS
  • Tous les pools de nœuds supplémentaires de votre cluster non créés avec Terraform
  • Tous les clusters supplémentaires dans le cloud privé virtuel AWS non créés avec Terraform

Pour supprimer le cluster et le cloud privé virtuel AWS que vous avez créés avec Terraform, exécutez la commande suivante :

terraform destroy

Terraform draine les charges de travail de vos nœuds, supprime votre pool de nœuds et votre cluster principaux, ainsi que votre cloud privé virtuel AWS.

Autoriser Cloud Logging et Cloud Monitoring

Si vous souhaitez activer Cloud Logging et Cloud Monitoring, vous devez ajouter une règle d'autorisation à votre projet Google Cloud après avoir créé un cluster.

Ajoutez une règle d'autorisation avec Google Cloud CLI :

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter

Remplacez PROJECT_ID par l'ID du projet.

Étapes suivantes

Pour en savoir plus sur les scripts Terraform GKE sur AWS, consultez