Partager via


Créer des clusters Kubernetes à l’aide de Bicep

Cet article explique comment créer des clusters Kubernetes dans Azure Local à l’aide de Bicep. Le flux de travail s’articule de la façon suivante :

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

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 Local Azure 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. Vérifiez que vous disposez de la dernière version d’Azure CLI sur votre machine de développement. Vous pouvez également mettre à niveau votre version d’Azure CLI à l’aide az upgradede .

  3. Téléchargez et installez kubectl sur votre ordinateur de développement. L’outil en ligne de commande Kubernetes, kubectl, vous permet d’exécuter des commandes sur des clusters Kubernetes. Vous pouvez utiliser kubectl pour déployer des applications, inspecter et gérer des ressources de cluster et afficher les journaux.

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 az sshkey create commande Azure CLI ou de la ssh-keygen commande :

    # Create an SSH key pair using Azure CLI
    az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
    

    Vous pouvez également créer une paire de clés SSH à l’aide ssh-keygende :

    ssh-keygen -t rsa -b 4096
    

Pour plus d’informations sur la création de clés SSH, consultez Créer et gérer les clés SSH pour l’authentification dans Azure.

Mettre à jour et passer en revue les scripts Bicep

Cette section présente le paramètre Bicep et les fichiers de modèle. Ces fichiers sont également disponibles dans un modèle de démarrage rapide Azure.

Fichier de paramètres Bicep : aksarc.bicepparam

using 'main.bicep'
param aksClusterName = 'aksarc-bicep-new'
param aksControlPlaneIP = 'x.x.x.x'
param sshPublicKey = 'ssh_public_key'
param hciLogicalNetworkName = 'lnet_name'
param hciCustomLocationName = 'cl_name'
param aksNodePoolOSType = 'Linux'
param aksNodePoolNodeCount = 1

Fichier de modèle Bicep : main.bicep

@description('The name of AKS Arc cluster resource')
param aksClusterName string
param location string = 'eastus'

// Default to 1 node CP
@description('The name of AKS Arc cluster control plane IP, provide this parameter during deployment')
param aksControlPlaneIP string
param aksControlPlaneNodeSize string = 'Standard_A4_v2'
param aksControlPlaneNodeCount int = 1

// Default to 1 node NP
param aksNodePoolName string = 'nodepool1'
param aksNodePoolNodeSize string = 'Standard_A4_v2'
param aksNodePoolNodeCount int = 1
@allowed(['Linux', 'Windows'])
param aksNodePoolOSType string = 'Linux'

@description('SSH public key used for cluster creation, provide this parameter during deployment')
param sshPublicKey string

// Build LNet ID from LNet name
@description('The name of LNet resource, provide this parameter during deployment')
param hciLogicalNetworkName string
resource logicalNetwork 'Microsoft.AzureStackHCI/logicalNetworks@2023-09-01-preview' existing = {
  name: hciLogicalNetworkName
}

// Build custom location ID from custom location name
@description('The name of custom location resource, provide this parameter during deployment')
param hciCustomLocationName string
var customLocationId = resourceId('Microsoft.ExtendedLocation/customLocations', hciCustomLocationName) 

// Create the connected cluster. This is the Arc representation of the AKS cluster, used to create a Managed Identity for the provisioned cluster.
resource connectedCluster 'Microsoft.Kubernetes/ConnectedClusters@2024-01-01' = {
  location: location
  name: aksClusterName
  identity: {
    type: 'SystemAssigned'
  }
  kind: 'ProvisionedCluster'
  properties: {
    agentPublicKeyCertificate: ''
    aadProfile: {
      enableAzureRBAC: false
    }
  }
}

// Create the provisioned cluster instance. This is the actual AKS cluster and provisioned on your Azure Local cluster via the Arc Resource Bridge.
resource provisionedClusterInstance 'Microsoft.HybridContainerService/provisionedClusterInstances@2024-01-01' = {
  name: 'default'
  scope: connectedCluster
  extendedLocation: {
    type: 'CustomLocation'
    name: customLocationId
  }
  properties: {
    linuxProfile: {
      ssh: {
        publicKeys: [
          {
            keyData: sshPublicKey
          }
        ]
      }
    }
    controlPlane: {
      count: aksControlPlaneNodeCount
      controlPlaneEndpoint: {
        hostIP: aksControlPlaneIP
      }
      vmSize: aksControlPlaneNodeSize
    }
    networkProfile: {
      loadBalancerProfile: {
        count: 0
      }
      networkPolicy: 'calico'
    }
    agentPoolProfiles: [
      {
        name: aksNodePoolName
        count: aksNodePoolNodeCount
        vmSize: aksNodePoolNodeSize
        osType: aksNodePoolOSType
      }
    ]
    cloudProviderProfile: {
      infraNetworkProfile: {
        vnetSubnetIds: [
          logicalNetwork.id
        ]
      }
    }
    storageProfile: {
      nfsCsiDriver: {
        enabled: true
      }
      smbCsiDriver: {
        enabled: true
      }
    }
  }
}

La ressource Microsoft.HybridContainerService/provisionedClusterInstances est définie dans le fichier Bicep. Si vous souhaitez explorer d’autres propriétés, consultez la référence de l’API.

Déployer le fichier Bicep

  1. Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.

  2. Mettez à jour les paramètres définis dans aksarc.bicepparam et enregistrez-le sur votre ordinateur local.

  3. Déployez le fichier Bicep à l’aide d’Azure CLI :

    az deployment group create --name BicepDeployment --resource-group myResourceGroupName --template-file main.bicep –-parameters aksarc.bicepparam
    

Valider le déploiement Bicep et se connecter au cluster

Vous pouvez maintenant vous connecter à votre cluster Kubernetes en exécutant la az connectedk8s proxy commande à 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

Créer des clusters Kubernetes à l’aide d’Azure CLI