Partage via


Utiliser Azure Kubernetes Service sur Azure Stack Hub avec l’interface CLI

Il s’agit d’un guide pour bien démarrer avec le service Azure Kubernetes Service (AKS) sur Azure Stack Hub. Cet article décrit les principaux scénarios pour vous familiariser avec AKS sur Azure Stack Hub. Les fonctionnalités disponibles dans Azure Stack Hub sont un sous-ensemble de ce qui est disponible dans tous les services Azure.

Dans les sections suivantes, vous allez :

  1. Effectuer les étapes des prérequis à l’utilisation d’AKS sur Azure Stack Hub.
  2. Effectuer les opérations du cycle de vie d’un cluster AKS en utilisant Azure CLI et le portail utilisateur d’Azure Stack Hub.

Installation de l’interface de ligne de commande Azure

Vous devez installer Azure CLI avec la prise en charge d’AKS pour votre machine. Préparez une machine Linux ou Windows propre pour installer la préversion d’Azure CLI avec la prise en charge d’AKS. Vérifiez qu’Azure CLI n’est pas déjà installé sur la machine pour éviter les conflits avec la préversion d’Azure CLI que vous allez installer par la suite. La plupart des instructions ci-dessous supposent que vous utilisez une machine virtuelle Linux, mais vous pouvez trouver les étapes équivalentes pour Windows dans la documentation du produit.

Ne mettez pas à niveau Azure CLI après avoir installé Azure CLI avec la prise en charge d’AKS. Si vous effectuez une mise à niveau, il sera remplacé par la version prête pour la production, qui ne prend pas en charge AKS.

Pour une machine Ubuntu, suivez les instructions de Installer Azure CLI sur Linux.

Une fois que vous avez installé Azure CLI avec la prise en charge d’AKS, vérifiez que l’installation est correcte en exécutant la commande Azure CLI suivante :

    az --version

Voici la sortie d’une machine Linux :

sortie d’une machine Linux

La version d’Azure CLI doit être 2.28.0 ou ultérieure.

Se connecter à Azure Stack Hub

  1. Connectez-vous à votre point de terminaison Azure Stack Hub. Vous devez utiliser Azure CLI pour établir l’environnement Azure Stack Hub spécifique auquel vous vous connectez. Vous trouverez les instructions dans Se connecter à Azure Stack Hub

  2. Inscrivez votre environnement pour qu’Azure CLI puisse se connecter au point de terminaison Resource Manager d’Azure Stack Hub pour votre instance. Mettez à jour les URL dans l’extrait de code suivant et exécutez la commande suivante :

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Définissez l’environnement actif.

    az cloud set -n aks-preview-test
    
  4. Définissez la configuration de votre environnement.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Connectez-vous à l'environnement.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Notes

    Si vous déclenchez une erreur Échec de vérification du certificat, cela peut être dû au fait que le certificat utilisé pour le point de terminaison Azure Resource Manager n’est pas approuvé par votre machine cliente. Si c’est le cas, vous devez exporter le certificat utilisé dans les points de terminaison Azure Stack Hub et l’approuver. Vous trouverez des instructions dans Exporter le certificat racine de l’autorité de certification Azure Stack Hub.

    En particulier, pour les machines Linux, consultez : ID Microsoft Entra sur Linux

  6. Définissez l’abonnement dans votre session Azure CLI comme abonnement par défaut avec :

    az account set --subscription <subscription-id>
    
  7. Inscrivez le fournisseur de ressources Azure Kubernetes Service. Listez les fournisseurs de ressources disponibles dans votre abonnement.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    La sortie doit ressembler à :

    La sortie doit se présenter comme ceci

  8. Prenez note du fournisseur de ressources Microsoft.ContainerService, puis inscrivez le fournisseur :

    az provider register --namespace Microsoft.ContainerService
    
  9. Réexécutez l’étape 7 pour vérifier l’état de l’inscription du fournisseur de ressources. L’inscription peut prendre plusieurs minutes.

Une fois ces étapes de prérequis terminées, vous pouvez procéder au test des scénarios suivants.

Créer un cluster AKS

Vous trouverez des instructions générales sur Azure dans Déployer un cluster Azure Kubernetes Service en utilisant Azure CLI. Les instructions fournies ici reflètent les limitations de l’utilisation d’AKS sur Azure Stack Hub. Vous pouvez utiliser Azure CLI pour créer un cluster AKS pour des conteneurs Linux ou Windows.

  1. Créez un groupe de ressources :

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Vérifiez que vous disposez d’un ID de principal de service prêt avec l’autorisation de contributeur sur votre abonnement pour y créer des clusters.

    1. Pour créer un principal de service (SPN) à l’aide de Microsoft Entra ID, suivez ces instructions.
    2. Pour créer un SPN en utilisant les services AD FS (Active Directory Federated Services), suivez ces instructions.
    3. Pour affecter le rôle « Contributeur » au SPN, consultez ces instructions. Veillez à sélectionner le rôle « Contributeur ».
  3. Créez un cluster AKS avec trois nœuds d’agent. Spécifiez des valeurs pour les paramètres ci-dessous (des exemples sont fournis). Exécutez :

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    La sortie de cette opération est au format JSON et contient une spécification du cluster, y compris la clé publique SSH générée et le nom de domaine complet (FQDN) utilisé dans le cluster, parmi d’autres propriétés. Notez que la commande génère un texte comme celui-ci mettant en évidence l’emplacement de la clé privée : SSH key files '/home/azureuser/.ssh/id_rsa' et '/home/azureuser/.ssh/id_rsa.pub' ont été générés sous \~/.ssh pour autoriser l’accès SSH à la machine virtuelle. Stockez ces clés à un emplacement sûr pour pouvoir les utiliser dans le cas où il est nécessaire de recourir à SSH dans les machines virtuelles, comme c’est le cas lors de la résolution de problèmes.

  4. Vous pouvez maintenant répéter les tests pour Mettre à l’échelle, Déployer une application et Supprimer.

Se connecter au cluster

  1. Pour gérer un cluster Kubernetes, vous utilisez kubectl, le client de ligne de commande Kubernetes. Pour installer kubectl localement, utilisez la commande az aks install-cli (vous devrez peut-être utiliser « sudo » au début de la commande pour avoir l’autorisation de l’installer) :

    az aks install-cli
    
  2. Pour configurer kubectl afin qu’il se connecte à votre cluster Kubernetes, utilisez 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 myResourceGroup --name myakscluster --admin
    
  3. Pour vérifier la connexion à votre cluster, utilisez la commande kubectl get pour retourner une liste des nœuds du cluster.

    kubectl get nodes
    

Vérifiez la connexion à votre cluster

Mettre à l’échelle le cluster

Une autre tâche de gestion de cluster est la mise à l’échelle d’un cluster. Vous pouvez mettre à l’échelle un cluster à tout moment une fois qu’il a été créé en utilisant la commande az aks scale. Pour mettre à l’échelle le cluster et le faire passer des 3 premiers nœuds à 4, exécutez :

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

Une fois le cluster correctement mis à l’échelle, la sortie contient un « agentPoolProfiles » similaire à l’exemple suivant :

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

Supprimer un cluster

Une fois les opérations précédentes effectuées, vous pouvez procéder à la suppression du cluster. Exécutez :

az aks delete --name myakscluster --resource-group myResourceGroup

Créer un cluster AKS avec un réseau virtuel personnalisé

La création d’un cluster à déployer dans un réseau fourni par l’utilisateur est un scénario courant. La planification de la configuration du réseau nécessite une certaine préparation. Notez également qu’avec AKS, le plug-in réseau par défaut est Azure CNI et non pas Kubenet, comme c’est le cas avec le moteur AKS. Avec Azure CNI, chaque pod obtient une adresse IP du sous-réseau et est accessible directement (sans avoir besoin d’une table de routage comme c’est le cas avec Kubenet). Ces adresses IP doivent être uniques dans votre espace réseau et doivent être planifiées. L’article suivant vous guide tout au long du processus de planification de votre déploiement de réseau virtuel personnalisé. Vous pouvez trouver différentes configurations réseau qui fonctionnent pour vos besoins et les tester. Pour un test initial, les deux étapes suivantes vous montrent le processus de base :

  1. Suivez les instructions de cet article pour planifier le déploiement en utilisant Azure CNI. Par exemple, vous pouvez utiliser le portail pour créer un réseau virtuel nommé « myAKSVnet » avec la plage d’adresses IP 10.0.0.0/8, avec le sous-réseau « myAKSSubnet » et la plage d’adresses IP 10.240.0.0/16 dans un groupe de ressources nommé « myTest-rg ». Utilisez ensuite l’étape suivante pour la création du cluster.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Notez que la commande de cluster fournie dans l’article Azure fonctionne correctement lors du déploiement sur Azure ; pour déployer sur Azure Stack Hub, vous devez spécifier des paramètres supplémentaires, comme dans l’exemple suivant. L’ID du sous-réseau de réseau virtuel doit ressembler à « /subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet » :

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Suivez les instructions de la section « Se connecter au cluster » pour vous connecter au cluster Kubernetes et déployer vos applications.

Vérifier la cohérence

Vérification de la cohérence entre Azure et Azure Stack Hub

  1. Sélectionnez une combinaison de commandes parmi celles testées ci-dessus, dans la section « Informations de référence sur les commandes » ci-dessous ou dans vos propres scripts courants.
  2. Appliquez-les à Azure, puis à Azure Stack Hub. Notez toutes les différences inattendues et donnez votre feedback.

Étapes suivantes

Découvrir AKS sur Azure Stack Hub