Déployer un cluster Azure Kubernetes Service (AKS) prêt pour la production à l’aide de Terraform avec un module vérifié Azure (AVM)

Azure modules vérifiés (AVMs) sont des modules IaC (Infrastructure as Code) prédéfinis et réutilisables développés et gérés par Microsoft pour Bicep et Terraform. Les machines virtuelles virtuelles sont conçues pour vous aider à déployer des ressources Azure de manière cohérente et fiable, en suivant les meilleures pratiques et les normes de conformité.

Dans cet article, vous allez apprendre à déployer un cluster AKS prêt pour la production à l’aide de Terraform avec un module vérifié Azure (AVM).

Pour plus d’informations sur les modules vérifiés (AVM), consultez Azure Verified Modules.

Prerequisites

  • Un abonnement actif Azure. Si vous n'avez pas d'abonnement Azure, créez un compte free avant de commencer.

  • Définissez votre contexte d’abonnement à l’aide de la az account set commande. Par exemple:

    az account set --subscription "00000000-0000-0000-0000-000000000000"
    
  • Azure CLI installé et configuré. Recherchez votre version à l’aide de la az --version commande. Si vous devez installer ou mettre à niveau, consultez Installer Azure CLI.

  • kubectl installé. Vous pouvez l’installer localement à l’aide de la az aks install-cli commande.

  • Terraform installé localement. Pour obtenir des instructions d’installation, consultez Installer Terraform.

Comprendre la configuration Terraform

Le module Terraform implémente un cluster AKS prêt pour la production avec les fonctionnalités suivantes :

  • Pools de nœuds alignés sur les zones dans les différentes zones de disponibilité : nous implémentons des zones de disponibilité avec l'autoscaler du cluster, en utilisant un seul pool de nœuds pour chaque zone. Le balance_similar_node_groups paramètre permet une distribution équilibrée des nœuds entre les zones pour la scalabilité et la haute disponibilité.
  • Mises à niveau automatiques d’AKS : nous appliquons le patch canal de mise à niveau et activez les mises à niveau automatiques de l’image du système d’exploitation de nœud pour vous assurer que le cluster reste up-to-date avec les derniers correctifs et fonctionnalités de sécurité.
  • Azure mise en réseau de superposition CNI : nous utilisons Azure mise en réseau de superposition CNI pour fournir des fonctionnalités de mise en réseau avancées, notamment la gestion des adresses IP (IPAM) et l’application des stratégies réseau.
  • Point de terminaison de l’API KubernetesPrivate et authentification Microsoft Entra : nous maintenons l’API Kubernetes sécurisée en la plaçant dans un réseau privé, autorisez l’authentification à l’aide de Microsoft Entra ID et désactivez les comptes locaux (facultatif).
  • Apportez votre propre réseau virtuel (BYO) et exigez une identité managée affectée par l’utilisateur : nous vous permettent d’apporter votre propre réseau virtuel et d’exiger une identité managée affectée par l’utilisateur pour le cluster AKS afin d’améliorer la sécurité et le contrôle des ressources réseau et d’identité. Vous pouvez utiliser la même identité managée sur plusieurs clusters pour une gestion cohérente des identités.

Créer le fichier de configuration Terraform

Les fichiers de configuration Terraform définissent l’infrastructure que Terraform crée et gère.

  1. Créez un fichier nommé main.tf et ajoutez le code suivant pour définir la version Terraform et spécifier le fournisseur Azure :

    terraform {
    required_version = ">= 1.0"
    required_providers {
      azurerm = {
        source  = "hashicorp/azurerm"
        version = "~> 4.0"
      }
     }
    }
    provider "azurerm" {
     features {}
    }
    
  2. Ajoutez le code suivant à main.tf pour créer un groupe de ressources Azure. N’hésitez pas à modifier le nom et l’emplacement du groupe de ressources en fonction des besoins.

    resource "azurerm_resource_group" "aks" {
     name     = "rg-aksprod-demo"
     location = "eastus"
    }
    

Créer le réseau virtuel (VNet) et le sous-réseau

Ajoutez le code suivant pour main.tf créer un réseau virtuel (VNet) et un sous-réseau pour le cluster AKS :

resource "azurerm_virtual_network" "aks" {
 name                = "vnet-aksprod-demo"
 location            = azurerm_resource_group.aks.location
 resource_group_name = azurerm_resource_group.aks.name
 address_space       = ["10.31.0.0/16"]
}
resource "azurerm_subnet" "aks_nodes" {
 name                 = "snet-aks-nodes"
 resource_group_name  = azurerm_resource_group.aks.name
 virtual_network_name = azurerm_virtual_network.aks.name
 address_prefixes     = ["10.31.0.0/17"]
}

Créer le cluster AKS prêt pour la production

Ajoutez le code suivant à main.tf pour créer un cluster AKS prêt pour la production à l'aide de l'AVM :

module "aks_production" {
 source  = "Azure/avm-ptn-aks-production/azurerm"
 version = "0.5.0"
 name                = "aksprod-demo"
 location            = azurerm_resource_group.aks.location
 resource_group_name = azurerm_resource_group.aks.name
 network = {
   node_subnet_id = azurerm_subnet.aks_nodes.id
   pod_cidr       = "192.168.0.0/16"
 }
}

Initialisez Terraform

Initialisez Terraform dans le répertoire contenant votre main.tf fichier à l’aide de la terraform init commande. Cette commande télécharge le fournisseur Azure requis pour gérer les ressources Azure avec Terraform.

terraform init

Valider la configuration Terraform

Validez la configuration Terraform à l’aide de la terraform validate commande. Cette commande vérifie la syntaxe et la cohérence interne des fichiers de configuration Terraform.

terraform validate

Vous pouvez rencontrer des avertissements liés aux arguments obsolètes. Ces avertissements proviennent de la machine virtuelle AVM et n’empêchent pas le déploiement.

Créer un plan d’exécution Terraform

Créez un plan d’exécution Terraform à l’aide de la commande terraform plan. Cette commande vous montre les ressources que Terraform créera ou modifiera dans votre abonnement Azure.

terraform plan

Appliquer la configuration Terraform

Après avoir examiné et confirmé le plan d’exécution, appliquez la configuration Terraform à l’aide de la terraform apply commande. Cette commande crée ou modifie les ressources définies dans votre fichier main.tf dans votre abonnement Azure.

terraform apply

Se connecter au cluster AKS

  1. Configurez kubectl pour vous connecter à votre cluster Kubernetes à l’aide de la commande az aks get-credentials. Cette commande télécharge les informations d’identification et configure l’interface CLI Kubernetes pour les utiliser.

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. Vérifiez la connexion à votre cluster à l’aide de la commande [kubectl get][kubectl-get]. Cette commande renvoie la liste des nœuds de cluster.

    kubectl get nodes
    

Pour plus d’informations sur AVM, consultez la documentation Azure Verified Modules (AVM).