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

S’applique à : Azure Stack HCI, version 23H2

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

  1. Créez un cluster Kubernetes dans Azure Stack HCI 23H2 à l’aide d’Azure CLI. Le cluster est connecté à Azure Arc par défaut.
  2. Lors de la création du cluster, vous fournissez un groupe Microsoft Entra qui contient la liste des utilisateurs Microsoft Entra disposant d’un accès administrateur de cluster Kubernetes.
  3. Accédez au cluster à l’aide de kubectl et de votre Microsoft Entra ID.
  4. Exécutez un exemple d’application à plusieurs conteneurs avec un serveur web frontal et une instance Redis dans le cluster.

Avant de commencer

  • Avant de commencer, vérifiez que vous disposez des informations suivantes de votre administrateur d’infrastructure local :
    • ID d’abonnement Azure : ID d’abonnement Azure où Azure Stack HCI est utilisé pour le déploiement et l’inscription.
    • ID d’emplacement personnalisé : ID de Resource Manager Azure de l’emplacement personnalisé. L’emplacement personnalisé est configuré pendant le déploiement du cluster Azure Stack HCI. 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 de Resource Manager à l’aide az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvde , si l’administrateur d’infrastructure fournit un nom d’emplacement personnalisé et un nom de groupe de ressources.
    • ID réseau : ID de Resource Manager Azure 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 de Resource Manager Azure à l’aide az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv de si vous connaissez le groupe de ressources dans lequel le réseau logique a été créé.
  • Vous pouvez exécuter les étapes décrites dans cet article sur un ordinateur de développement local pour créer un cluster Kubernetes sur votre déploiement Azure Stack HCI distant. Vérifiez que vous disposez de la dernière version d’Az CLI sur votre ordinateur de développement. Vous pouvez également choisir de mettre à niveau votre version d’Az CLI à l’aide de az upgrade.
  • Pour vous connecter au cluster Kubernetes en tout lieu, créez un groupe Microsoft Entra et ajoutez-y des membres. Tous les membres du groupe Microsoft Entra disposent d’un accès administrateur au cluster. Veillez à vous ajouter en tant que membre au groupe Microsoft Entra. Si vous ne vous ajoutez pas, vous ne pouvez pas accéder au cluster Kubernetes à l’aide de kubectl. Pour plus d’informations sur la création de groupes Microsoft Entra et l’ajout d’utilisateurs, consultez Gérer les groupes Microsoft Entra et l’appartenance aux groupes.
  • 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 les ressources de cluster et afficher les journaux.

Installer l’extension Azure CLI

Exécutez la commande suivante pour installer les extensions Azure CLI nécessaires :

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Créer un cluster Kubernetes

Utilisez la az aksarc create commande pour créer un cluster Kubernetes dans AKS Arc. Veillez à vous connecter à Azure avant d’exécuter cette commande. Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié à l’aide de la commande az account set .

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0  --control-plane-ip $controlplaneIP

Au bout de quelques minutes, la commande se termine et retourne des informations au format JSON sur le cluster.

Se connecter au cluster Kubernetes

Vous pouvez maintenant vous connecter à votre cluster Kubernetes en exécutant la az connectedk8s proxy commande à partir de votre ordinateur de développement. Veillez à vous connecter à Azure avant d’exécuter cette commande. Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié à l’aide de la commande az account set .

Cette commande télécharge le kubeconfig de votre cluster Kubernetes sur votre ordinateur de développement et ouvre un canal de connexion proxy vers votre cluster Kubernetes local. Le canal est ouvert aussi longtemps que la commande s’exécute. Laissez cette commande s’exécuter aussi longtemps que vous souhaitez accéder à votre cluster. S’il expire, fermez la fenêtre CLI, ouvrez-en une nouvelle, puis réexécutez la commande.

Vous devez disposer des autorisations Contributeur sur le groupe de ressources qui héberge le cluster Kubernetes pour exécuter correctement la commande suivante :

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Sortie attendue :

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Maintenez cette session en cours d’exécution et connectez-vous à votre cluster Kubernetes à partir d’un autre terminal/invite de commandes. Vérifiez que vous pouvez vous connecter à votre cluster Kubernetes en exécutant la commande kubectl get. Cette commande retourne une liste des nœuds de cluster :

kubectl get node -A --kubeconfig .\aks-arc-kube-config

L’exemple de sortie suivant montre le nœud créé dans les étapes précédentes. Assurez-vous que l’état du nœud est Prêt :

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Déployer l’application

Un fichier manifeste Kubernetes définit un état souhaité d’un cluster, notamment les images conteneur à exécuter.

Vous pouvez utiliser un manifeste pour créer tous les objets nécessaires à l’exécution de l’application Vote Azure. Ce manifeste comprend deux déploiements Kubernetes :

  • Exemples d’applications Python pour Azure Vote.
  • Une instance Redis.

Deux services Kubernetes sont également créés :

  • Un service interne pour l’instance Redis.
  • Un service externe pour accéder à l’application Azure vote à partir d’Internet.

Créez un fichier nommé azure-vote.yaml et copiez-le dans le manifeste suivant :

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

Déployez l’application à l’aide de la commande kubectl apply et spécifiez le nom de votre YAML :

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

L’exemple de sortie suivant montre les déploiements et services créés :

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Test de l’application

Quand l’application s’exécute, un service Kubernetes expose le front-end de l’application sur Internet. L’exécution de ce processus peut prendre plusieurs minutes.

Surveillez la progression avec la commande kubectl get service et l’argument --watch.

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

La sortie EXTERNAL-IP pour le service azure-vote-front s’affiche initialement comme étant en attente.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

Une fois que l’adresse EXTERNAL-IP passe de en attente à une adresse IP publique réelle, utilisez CTRL-C pour arrêter le processus kubectl watch. L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Pour voir l’application Azure Vote en action, ouvrez un navigateur web en utilisant l’adresse IP externe de votre service.

Supprimer le cluster

Exécutez la az aksarc delete commande pour propre le cluster que vous avez créé :

az aksarc delete --resource-group $aksclustername --name $resource_group

Étapes suivantes