Partager via


Créer des clusters Kubernetes à l’aide de Terraform (préversion)

Cet article explique comment créer des clusters Kubernetes dans Azure Local à l’aide de Terraform et du module vérifié Azure. Le flux de travail est le suivant :

  • Créez une paire de clés SSH.
  • Créez un cluster Kubernetes dans Azure Local 23H2 à l’aide de Terraform. Par défaut, le cluster est connecté à Azure Arc.
  • Validez le déploiement et connectez-vous au cluster.

Important

Ces fonctionnalités en préversion sont disponibles en libre-service, en mode opt-in. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Azure Kubernetes Service, activé par les préversions d’Azure Arc, est partiellement couvert par le support client sur une base optimale.

Avant de commencer

Avant de commencer, vérifiez que les conditions préalables suivantes sont remplies :

  1. Obtenez les détails suivants auprès de votre administrateur d’infrastructure local :
    • ID d’abonnement Azure : ID d’abonnement Azure qui utilise Azure Local pour le déploiement et l’inscription.
    • Nom ou ID d’emplacement personnalisé : ID Azure Resource Manager de l’emplacement personnalisé. L’emplacement personnalisé est configuré pendant le déploiement du cluster local Azure. Votre administrateur d’infrastructure doit vous donner l’ID Resource Manager de l’emplacement personnalisé. Ce paramètre est requis pour créer des clusters Kubernetes. Vous pouvez également obtenir l’ID Resource Manager à l’aide az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvde , si l’administrateur de l’infrastructure fournit un nom d’emplacement personnalisé et un nom de groupe de ressources.
    • Nom ou ID de réseau logique : ID Azure Resource Manager du réseau logique Azure Stack HCI créé en suivant ces étapes. Votre administrateur doit vous donner l’ID du réseau logique. Ce paramètre est requis pour créer des clusters Kubernetes. Vous pouvez également obtenir l’ID Azure Resource Manager à l’aide az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv du groupe de ressources dans lequel le réseau logique a été créé.
  2. Assurez-vous que GitHub, la dernière version d’Azure CLI et le client Terraform sont installés sur votre machine de développement.
  3. Téléchargez et installez kubectl sur votre ordinateur de développement.

Création d’une paire de clés SSH

Pour créer une paire de clés SSH (identique à Azure AKS), procédez comme suit :

  1. Ouvrez une session Cloud Shell dans votre navigateur.

  2. Créez une paire de clés SSH à l’aide de la commande az sshkey create , à partir du portail ou de la ssh-keygen commande :

    az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
    

    or

    ssh-keygen -t rsa -b 4096 
    
  3. Récupérez la valeur de votre clé publique à partir d’Azure ou de votre ordinateur local sous /.ssh/id_rsa.pub.

Connexion à Azure

Terraform prend en charge seulement l’authentification auprès d’Azure avec Azure CLI. L’authentification à l’aide d’Azure PowerShell n’est pas prise en charge. Par conséquent, pendant que vous pouvez utiliser le module Azure PowerShell lors de votre travail Terraform, vous devez d’abord vous authentifier auprès d’Azure.

Implémenter le code Terraform

  1. Créez un répertoire que vous pouvez utiliser pour tester l’exemple de code Terraform, et définissez-le comme votre répertoire actuel.

  2. Dans le même répertoire, créez un fichier nommé providers.tf et collez le code suivant :

    terraform { 
     required_version = "~> 1.5" 
     required_providers { 
       azapi = { 
         source  = "azure/azapi" 
         version = "~> 1.13" 
       } 
       azurerm = { 
        source  = "hashicorp/azurerm" 
        version = "~> 3.74" 
       } 
      }
     }
    
     provider "azurerm" { 
     features { 
      resource_group { 
       prevent_deletion_if_contains_resources = false 
      } 
     } 
    }
    
  3. Créez un autre fichier nommé main.tf qui pointe vers le module AVM AKS Arc le plus récent, puis insérez le code suivant. Vous pouvez lire la description et l’entrée du module et ajouter des paramètres facultatifs si nécessaire :

    module "aks_arc" { 
    # Make sure to use the latest AVM module version
    source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" 
    version = "0.5.0" 
    
    # Make sure to provide all required parameters  
    resource_group_id = "<Resource_Group>" 
    location = "<Region>" 
    name = "<Cluster_Name>" 
    logical_network_id = "<LNet_ID>" 
    custom_location_id = "<CustomLocation_ID>" 
    agent_pool_profiles = [{count=1}] 
    
    # Optional parameters 
    ssh_public_key =  "Your_SSH_Key" 
    enable_workload_identity = true 
    enable_oidc_issuer = true 
    rbac_admin_group_object_ids = "" 
    }
    

Initialiser Terraform

Exécutez terraform init pour initialiser le déploiement Terraform. Veillez à utiliser l’indicateur -upgrade pour mettre à niveau les plug-ins de fournisseur nécessaires vers la dernière version :

terraform init -upgrade

Créer un plan d’exécution Terraform et appliquer le plan

Exécutez le plan terraform pour créer un plan d’exécution, puis exécutez terraform pour appliquer le fichier de sortie à votre infrastructure cloud :

terraform plan -out main.tfplan 
terraform apply main.tfplan 

La commande s’exécute, puis retourne la réussite après l’approvisionnement de la ressource.

Valider le déploiement et se connecter au cluster

Vous pouvez maintenant vous connecter à votre cluster Kubernetes en s’exécutant az connectedk8s proxy à partir de votre ordinateur de développement. Vous pouvez également utiliser kubectl pour afficher l’état du nœud et du pod. Suivez les mêmes étapes que celles décrites dans Se connecter au cluster Kubernetes.

Étapes suivantes

Se connecter au cluster Kubernetes