Gérer des clusters d'utilisateur à l'aide de Terraform

Cette page s'adresse aux administrateurs de plates-formes.

Cette page explique comment gérer les clusters d'utilisateur à l'aide de Terraform.

Prerequisites

Vous devez disposer d'un compte ayant accès au cluster d'administrateur. Ce compte doit disposer des autorisations appropriées pour gérer les clusters d'utilisateur. Ce compte nécessite un sous-ensemble de l'accès administrateur de la plate-forme, ainsi que de l'accès "liste" sur customresourcedefinitions dans le groupe d'API apiextensions.k8s.io. Vous utiliserez ce compte pour configurer le fournisseur Terraform de Kubernetes afin qu'il puisse gérer les ressources liées au cluster d'utilisateur. Le compte doit disposer des autorisations spécifiques suivantes :

  • Accès complet aux espaces de noms pour les clusters d'utilisateur du cluster d'administrateur, par exemple, cluster-user-cluster2
  • Accès complet à clusters et nodepools dans baremetal.cluster.gke.io
  • Accès complet à bootstrapservicebindings, configmanagementfeaturespecs, configmanagementbindings, servicemeshfeaturespecs, servicemeshbindings dans managementcenter.anthos.cloud.google.com
  • Accès à list sur customresourcedefinitions dans apiextensions.k8s.io
  • Si vous devez installer Anthos Config Management et Anthos Service Mesh, vous devez également avoir accès au secret dans les espaces de noms du cluster d'utilisateur, dans le cluster d'administrateur, afin de pouvoir obtenir les identifiants pour vous connecter au cluster d'utilisateur.

Télécharger des scripts Terraform

Téléchargez le fichier tarball des scripts Terraform à partir de l'onglet Assistance de Anthos Management Center Console. Extrayez les scripts du fichier.

tar xvf terraform-scripts.tar.gz

Lancer Terraform et configurer l'authentification

Il existe de nombreuses façons de configurer le fournisseur Terraform pour Kubernetes afin qu'il s'authentifie avec l'API du cluster d'administrateur. Choisissez celui qui correspond le mieux à votre cas d'utilisation documenté dans la section Configuration des fournisseurs. Si vous ne disposez pas des autorisations nécessaires dans le cluster d'administrateur, contactez votre opérateur d'infrastructure.

cd cluster
terraform init

Remplacez (# Authentification TODO) par l'une des méthodes d'authentification dans la Configuration du fournisseur.

Créer un cluster d'utilisateur

  1. Spécifiez toutes les variables dans cluster/terraform.tfvars. Veillez à spécifier login_user_name s'il ne possède pas de droits racine. Exemple :

    admin_cluster_endpoint = "https://10.200.0.100:443"
    cluster_name      = "user-cluster2"
    control_plane_nodes = [
      { "address" = "10.200.0.26" },
      { "address" = "10.200.0.21" },
      { "address" = "10.200.0.22" },
    ]
    control_plane_vip = "10.200.0.110"
    nodepool_nodes = [
      { "address" = "10.200.0.23" },
      { "address" = "10.200.0.25" },
      { "address" = "10.200.0.24" },
    ]
    address_pools = [
      {
        "addresses" = ["10.200.0.111-10.200.0.119"]
        "name"      = "pool1"
      },
    ]
    bootstrap_service            = ["test-bootstrapservice", "test-bootstrapservice-2"]
    anthos_baremetal_version     = "1.9.0"
    
  2. Appliquer les modifications Une fois la commande exécutée, le cluster d'utilisateur est créé.

    terraform apply
    

Détruire un cluster d'utilisateur

Utilisez la commande suivante pour détruire un cluster d'utilisateur :

terraform destroy

Un temps d'attente est défini pour contrôler la destruction des ressources. Vous pouvez l'ajuster en mettant à jour la variable wait_duration. Le temps d'attente est dû à des fonctionnalités manquantes chez le fournisseur Kubernetes (consultez cette demande de fonctionnalité).

Lorsque la création d'un cluster d'utilisateur est en attente en raison de certains problèmes, n'utilisez pas terraform destroy. Nettoyez plutôt l'installation manuellement :

  1. Arrêtez la commande Terraform.

  2. Supprimez le cluster d'utilisateur de la console du centre de gestion.

  3. Supprimez le fichier terraform.tfstate :

Activer Anthos Config Management et Anthos Service Mesh

Pour activer Anthos Config Management et Anthos Service Mesh, procédez comme suit :

  1. Démarrez Terraform pour le projet Terraform features.

      cd features
      terraform init
    
  2. Configurez l'authentification sur le cluster d'administrateur.

  3. Placez la clé privée du dépôt git dans /etc/ssh-key/key.

  4. Définissez activate_acm et activate_asm sur "true", et définissez toutes les variables associées. Exemple :

    cluster_name                 = "user-cluster2"
    admin_cluster_endpoint       = "https://10.200.0.100:443"
    user_cluster_ca_certificate  = ""
    activate_acm                 = true
    version_acm                  = "1.7.1"
    enable_acm_policy_controller = true
    acm_git_repo = {
      git_repo_url    = "git@github.com:example/example.git"
      git_repo_branch = "main"
      git_policy_dir  = "."
      git_secret_type = "ssh"
    }
    activate_asm = true
    version_asm  = "1.9.6-asm.1"
    
  5. Appliquer les modifications

    terraform apply
    
  6. (Facultatif) Ajustez le temps d'attente pour Anthos Service Mesh si nécessaire. Pour ce faire, mettez à jour la variable wait_duration.

Désactiver Anthos Config Management et Anthos Service Mesh

Avant de supprimer Anthos Config Management, nous vous recommandons de supprimer toutes les ressources synchronisées par Anthos Config Management du cluster.

Supprimez le secret git-creds et config-management-system de tfstate. L'opérateur Anthos Config Management est chargé de supprimer les ressources du cluster d'utilisateur après la suppression de ConfigManagementBinding et ConfigManagementFeatureSpec. Anthos Config Management n'apparaît pas immédiatement comme désinstallé dans le centre de gestion. La suppression de l'opérateur peut prendre entre 5 et 10 minutes.

terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy

Problèmes connus

  • Actuellement, il n'est pas possible de mettre à jour un cluster. Lors du lancement d'une mise à jour, le fournisseur tente de supprimer les finaliseurs des ressources existantes en raison du problème 1378.

  • La commande de destruction sur le cluster d'utilisateur et Anthos Service Mesh repose sur un temps d'attente en raison du problème 1357. Vous devrez peut-être ajuster le temps d'attente en fonction de la taille de votre cluster.

  • Le cluster est présenté comme prêt à être utilisé dans Terraform plus rapidement que ce qui est affiché dans le centre de gestion (bloqué par la prise en charge des données de kubernetes_manifest par le fournisseur).

  • La suppression d'Anthos Config Management à l'aide de terraform destroy nécessite d'abord de supprimer les ressources de tfstate. Consultez la section Désactiver Anthos Config Management et Anthos Service Mesh pour en savoir plus. Anthos Config Management n'apparaît pas immédiatement comme non installé dans le centre de gestion. La suppression de l'opérateur peut prendre entre 5 et 10 minutes.

  • La commande terraform destroy supprime l'espace de noms du cluster d'utilisateur. Les administrateurs de plate-forme ne sont pas autorisés à supprimer des espaces de noms dans le cluster d'administrateur. Par conséquent, la commande peut échouer.

Limites

  • Le code actuel vous permet de créer un seul cluster d'utilisateur.

  • Le code actuel n'inclut pas la configuration d'OIDC. Cette partie nécessite des fonctionnalités de correctif sur le fournisseur Kubernetes sur la ressource kubernetes_manifest.

Étapes suivantes