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 :
- Créez un cluster Kubernetes dans Azure Stack HCI 23H2 à l’aide d’Azure CLI. Le cluster est connecté par défaut à Azure Arc.
- 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.
- Accédez au cluster à l’aide de kubectl et de votre ID Microsoft Entra.
- 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 Stack HCI 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 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 Resource Manager à l’aide
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
de , 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 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 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 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
az upgrade
de . - 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 --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.
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.
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