Démarrage rapide : découvrir comment créer un cluster Azure Nexus Kubernetes en tirant parti d’Azure CLI

  • Déployer un cluster Azure Nexus Kubernetes en utilisant Azure CLI.

Avant de commencer

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

  • Installez la dernière version des extensions Azure CLI nécessaires.

  • Cet article nécessite la version 2.49.0 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

  • Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié dans lequel les ressources doivent être facturées avec la commande az account.

  • Reportez-vous à la table SKU des machines virtuelles dans la section référence pour obtenir la liste des références SKU de machine virtuelle prises en charge.

  • Consultez les versions de Kubernetes prises en charge pour obtenir la liste des versions de Kubernetes prises en charge.

  • Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un groupe logique dans lequel des ressources Azure sont déployées et gérées. Lorsque vous créez un groupe de ressources, vous êtes invité à spécifier un emplacement. Cet emplacement est l'emplacement de stockage des métadonnées de votre groupe de ressources et l'endroit où vos ressources s'exécutent dans Azure si vous ne spécifiez pas une autre région lors de la création de la ressource. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.

    az group create --name myResourceGroup --location eastus
    

    L’exemple de sortie suivant montre la création réussie du groupe de ressources :

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Pour déployer un fichier Bicep ou un modèle ARM, vous devez disposer d’un accès en écriture aux ressources que vous déployez et un accès à toutes les opérations sur le type de ressource Microsoft.Resources/deployments. Par exemple, pour le déploiement d’un cluster, vous avez besoin des autorisations Microsoft.NetworkCloud/kubernetesclusters/write et Microsoft.Resources/deployments/*. Pour obtenir la liste des rôles et autorisations, consultez Rôles intégrés Azure.

  • Vous devez avoir l’ID de ressource custom location de votre cluster Azure Operator Nexus.

  • Vous devez créer différents réseaux en fonction de vos besoins de charge de travail spécifiques. Il est également indispensable de disposer des adresses IP appropriées pour vos charges de travail. Pour veiller à une implémentation fluide, il est recommandé de consulter les équipes de support pertinentes pour obtenir de l’aide.

  • Ce guide de démarrage rapide suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS (Azure Kubernetes Service).

Créer un cluster Azure Nexus Kubernetes

L’exemple suivant crée un cluster nommé myNexusK8sCluster dans le groupe de ressources myResourceGroup de l’emplacement eastus.

Avant l’exécution des commandes, vous devez définir plusieurs variables pour définir la configuration de votre cluster. Voici les variables que vous devez définir, ainsi que certaines valeurs par défaut que vous pouvez utiliser pour certaines variables :

Variable Description
LOCATION Région Azure où vous souhaitez créer votre cluster.
RESOURCE_GROUP Nom du groupe de ressources Azure où vous souhaitez créer le cluster.
SUBSCRIPTION_ID ID de votre abonnement Azure.
CUSTOM_LOCATION Cet argument spécifie un emplacement personnalisé de l’instance Nexus.
CSN_ARM_ID L’ID CSN est l’identificateur unique du réseau de services cloud que vous souhaitez utiliser.
CNI_ARM_ID L’ID CNI est l’identificateur unique de l’interface réseau à utiliser par le runtime de conteneur.
AAD_ADMIN_GROUP_OBJECT_ID ID d’objet du groupe Microsoft Entra qui doit disposer de privilèges d’administrateur sur le cluster.
CLUSTER_NAME Nom que vous souhaitez donner à votre cluster Nexus Kubernetes.
K8S_VERSION Version de Kubernetes que vous souhaitez utiliser.
ADMIN_USERNAME Nom d’utilisateur de l’administrateur de cluster.
SSH_PUBLIC_KEY Clé publique SSH utilisée pour sécuriser la communication avec le cluster.
CONTROL_PLANE_COUNT Nombre de nœuds du plan de contrôle pour le cluster.
CONTROL_PLANE_VM_SIZE Type de machine virtuelle pour les nœuds du plan de contrôle.
INITIAL_AGENT_POOL_NAME Nom du pool d’agents initial.
INITIAL_AGENT_POOL_COUNT Nombre de nœuds dans le pool d’agents initial.
INITIAL_AGENT_POOL_VM_SIZE Taille de la machine virtuelle pour le pool d’agents initial.
POD_CIDR Plage réseau pour les pods Kubernetes dans le cluster, en notation CIDR.
SERVICE_CIDR Plage réseau pour les services Kubernetes dans le cluster, en notation CIDR.
DNS_SERVICE_IP Adresse IP du service DNS Kubernetes.

Une fois ces variables définies, vous pouvez exécuter la commande Azure CLI pour créer le cluster. Ajoutez l’indicateur --debug à la fin pour fournir une sortie plus détaillée à des fins de résolution des problèmes.

Pour définir ces variables, utilisez les commandes set suivantes et remplacez les exemples de valeurs par vos valeurs préférées. Vous pouvez également utiliser les valeurs par défaut pour certaines variables, comme illustré dans l’exemple suivant :

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Important

Il est indispensable de remplacer les espaces réservés pour CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID et AAD_ADMIN_GROUP_OBJECT_ID par vos valeurs réelles avant d’exécuter ces commandes.

Après avoir défini ces variables, vous pouvez créer le cluster Kubernetes en exécutant la commande Azure CLI suivante :

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

S’il n’y a pas suffisamment de capacité pour déployer les nœuds de cluster demandés, un message d’erreur s’affiche. Toutefois, ce message ne fournit aucun détail sur la capacité disponible. Il indique que la création du cluster ne peut pas se poursuivre en raison d’une capacité insuffisante.

Remarque

Le calcul de capacité prend en compte l’ensemble du cluster de plateforme, au lieu d’être limité aux racks individuels. Par conséquent, si un pool d’agents est créé dans une zone (où un rack correspond à une zone) qui a une capacité insuffisante, mais qu’une autre zone a suffisamment de capacité, la création du cluster se poursuit, mais finit par expirer. Cette approche de la vérification de la capacité est intéressante seulement si aucune zone spécifique n’est spécifiée pendant la création du cluster ou du pool d’agents.

Au bout de quelques minutes, la commande se termine et retourne des informations sur le cluster. Pour obtenir des options plus avancées, consultez Démarrage rapide : déployer un cluster Azure Nexus Kubernetes en utilisant Bicep.

Vérifier les ressources déployées

Une fois le déploiement terminé, vous pouvez afficher les ressources en tirant parti de l’interface CLI ou du Portail Azure.

Pour afficher les détails du cluster myNexusK8sCluster dans le groupe de ressources myResourceGroup, exécutez la commande Azure CLI suivante :

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

En outre, pour obtenir la liste des noms de pool d’agents associés au cluster myNexusK8sCluster dans le groupe de ressources myResourceGroup, vous pouvez utiliser la commande Azure CLI suivante.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Se connecter au cluster

Maintenant que le cluster Nexus Kubernetes a été correctement créé et connecté à Azure Arc, vous pouvez facilement vous y connecter en utilisant la fonctionnalité de connexion au cluster. La connexion au cluster vous permet d’accéder et de gérer en toute sécurité votre cluster en tout lieu, ce qui le rend pratique pour des tâches interactives de développement, de débogage et d’administration de cluster.

Pour plus d’informations sur les options disponibles, consultez Se connecter à un cluster Kubernetes Nexus de l’opérateur Azure.

Remarque

Lorsque vous créez un cluster Kubernetes Nexus, Nexus crée automatiquement un groupe de ressources managé dédié au stockage des ressources de cluster. Au sein de ce groupe, la ressource de cluster connectée à Arc est établie.

Pour accéder à votre cluster, vous devez configurer le paramètre kubeconfig de connexion au cluster. Après la connexion à Azure CLI avec l’entité Microsoft Entra appropriée, vous pouvez obtenir le paramètre kubeconfig nécessaire pour communiquer avec le cluster n’importe où, même en dehors du pare-feu qui l’entoure.

  1. Définissez les variables CLUSTER_NAME, RESOURCE_GROUP et SUBSCRIPTION_ID.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Interroger un groupe de ressources managé avec az, puis stocker dans MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. La commande suivante démarre un proxy connectedk8s qui vous permet de vous connecter au serveur d’API Kubernetes du cluster Nexus Kubernetes spécifié.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Utilisez kubectl pour envoyer les requêtes au cluster :

    kubectl get pods -A
    

    Une réponse du cluster contenant la liste de tous les nœuds doit maintenant s’afficher.

Notes

Si le message d’erreur « Nous n’avons pas pu publier le jeton d’accès dans le proxy client. Nous n’avons pas pu nous connecter à MSI » s’affiche, vous devrez peut-être effectuer une opération az login pour vous authentifier de nouveau auprès d’Azure.

Ajouter un pool d’agents

Le cluster créé à l’étape précédente dispose d’un pool de nœuds unique. Ajoutons un deuxième pool de nœuds en utilisant la commande az networkcloud kubernetescluster agentpool create. L’exemple suivant permet de créer un pool d’agents nommé myNexusK8sCluster-nodepool-2 :

Vous pouvez également utiliser les valeurs par défaut pour certaines variables, comme illustré dans l’exemple suivant :

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

Après avoir défini ces variables, vous pouvez ajouter un pool d’agents en exécutant la commande Azure CLI suivante :

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Au bout de quelques minutes, la commande se termine et retourne des informations sur le pool d’agents. Pour obtenir des options plus avancées, consultez Démarrage rapide : déployer un cluster Azure Nexus Kubernetes en utilisant Bicep.

Notes

Vous pouvez ajouter plusieurs pools d’agents lors de la création initiale de votre cluster lui-même en tirant parti des configurations initiales du pool d’agents. Toutefois, si vous souhaitez ajouter des pools d’agents après la création initiale, vous pouvez utiliser la commande ci-dessus pour créer des pools d’agents supplémentaires pour votre cluster Nexus Kubernetes.

L’exemple de sortie suivant montre la création réussie du pool d’agents.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Nettoyer les ressources

Lorsqu’il n’est plus nécessaire, supprimez le groupe de ressources. Le groupe de ressources et toutes les ressources du groupe de ressources sont supprimés.

Utilisez l’applet de commande az group delete pour supprimer le groupe de ressources, le cluster Kubernetes et toutes les ressources associées, à l’exception des ressources réseau Operator Nexus.

az group delete --name myResourceGroup --yes --no-wait

Étapes suivantes

Vous pouvez désormais déployer les CNF directement via la connexion au cluster ou via Azure Operator Service Manager.