Partager via


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

S’applique à : Azure Local, version 23H2

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

  1. Créez un cluster Kubernetes dans Azure Local, version 23H2 à l’aide d’Azure CLI. Le cluster est connecté par défaut à Azure Arc.
  2. Lors de la création du cluster, vous fournissez un groupe Microsoft Entra qui contient la liste des utilisateurs De Microsoft Entra disposant d’un accès administrateur de cluster Kubernetes.
  3. Accédez au cluster à l’aide de kubectl et de votre ID Microsoft Entra.
  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 détails suivants auprès de votre administrateur d’infrastructure local :
    • ID d’abonnement Azure : ID d’abonnement Azure où Azure Local est utilisé pour le déploiement et l’inscription.
    • 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.
    • ID réseau : 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éé.
  • Vous pouvez exécuter les étapes décrites dans cet article dans un ordinateur de développement local pour créer un cluster Kubernetes sur votre déploiement local Azure 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 az upgradede .
  • Pour vous connecter au cluster Kubernetes à partir de n’importe où, créez un groupe Microsoft Entra et ajoutez-y des membres. Tous les membres du groupe Microsoft Entra disposent d’un accès administrateur de cluster 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 à un groupe.
  • 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.

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 

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

Remarque

  • La valeur de la clé SSH est la clé publique pour accéder aux nœuds dans le cluster approvisionné. Par défaut, cette clé se trouve à l’emplacement ~/.ssh/id_rsa.pub. Vous pouvez spécifier un autre emplacement à l’aide du paramètre lors de la --ssh-key-value création du cluster.
  • Le --generate-ssh-keys paramètre est requis s’il n’existe aucune clé SSH préexistante sur votre ordinateur local. Si vous n’incluez pas ce paramètre lors de la création du cluster et qu’aucune clé SSH n’existe, vous recevez un message d’erreur.
  • Si vous disposez déjà d’une clé SSH sur votre ordinateur local, le cluster AKS réutilise cette clé. Dans ce cas, la spécification --generate-ssh-keys, ou l’omission de ce paramètre, n’a aucun effet.

Important

Pour utiliser Azure RBAC ou l’identité de charge de travail pour un cluster AKS, vous devez transmettre les paramètres requis lors de la création du cluster à l’aide d’Azure CLI. Actuellement, la mise à jour d’un cluster AKS existant pour activer l’identité de charge de travail et/ou azure RBAC n’est pas prise en charge. Pour plus d’informations, consultez Utiliser Azure RBAC pour l’autorisation Kubernetes ou Déployer et configurer l’identité de charge de travail pour votre 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 à votre cluster Kubernetes local. Le canal est ouvert tant que la commande s’exécute. Laissez cette commande s’exécuter aussi longtemps que vous souhaitez accéder à votre cluster. Si elle expire, fermez la fenêtre CLI, ouvrez-en une nouvelle, puis réexécutez la commande.

Vous devez disposer d’autorisations Contributeur sur le groupe de ressources qui héberge le cluster Kubernetes pour exécuter 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.

Conservez cette session en cours d’exécution et connectez-vous à votre cluster Kubernetes à partir d’une autre invite de terminal/commande. 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éé aux é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 pour exécuter l’application Azure Vote. 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: <path to image>/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: <path to image>/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 à l’aide de la commande kubectl get service avec 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 l’attente à une adresse IP publique réelle, utilisez CTRL-C pour arrêter le processus de surveillance kubectl. 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 nettoyer le cluster que vous avez créé :

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

Étapes suivantes