Déployer un cluster Kubernetes avec le moteur AKS sur Azure Stack Hub
Vous pouvez déployer un cluster Kubernetes sur Azure Stack Hub à partir d’une machine virtuelle cliente exécutant le moteur AKS. Dans cet article, nous examinons l’écriture d’une spécification de cluster, le déploiement d’un cluster avec le fichier apimodel.json et la vérification de votre cluster en déployant MySQL avec Helm.
Définir une spécification de cluster
Vous pouvez préciser une spécification de cluster dans un fichier de document au format JSON appelé modèle d’API. Le moteur AKS utilise une spécification de cluster dans le modèle d’API pour créer votre cluster.
Vous trouverez des exemples de modèle d’API pour votre système d’exploitation et votre numéro de version de moteur AKS pour les versions récentes dans Moteur AKS et mappage d’image correspondant.
- Recherchez le numéro de version de votre moteur AKS, par exemple,
v.0.63.0
, dans le tableau. - Dans le tableau d’exemples de modèle d’API, sélectionnez et ouvrez le lien correspondant à votre système d’exploitation.
- Sélectionnez Raw. Vous pouvez utiliser l’URL fournie dans les instructions suivantes.
Une URL vers le modèle d’API peut se présenter comme suit :
https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json
Pour chacun des exemples suivants, remplacez <URL for the API Model>
par l’URL.
Mettre à jour le modèle d’API
Cette section présente la création d’un modèle d’API pour votre cluster.
Commencez par utiliser un fichier de modèle d’API Azure Stack Hub pour Linux ou Windows. À partir de la machine sur laquelle vous avez installé le moteur AKS, exécutez :
curl -o kubernetes-azurestack.json <URL for the API Model>
Remarque
Si vous êtes déconnecté, vous pouvez télécharger le fichier et le copier manuellement sur la machine déconnectée sur laquelle vous envisagez de le modifier. Vous pouvez copier le fichier sur votre machine Linux à l’aide d’outils comme PuTTY ou WinSCP.
Pour ouvrir le modèle d’API dans un éditeur, vous pouvez utiliser nano :
nano ./kubernetes-azurestack.json
Remarque
Si vous n’avez pas installé nano, vous pouvez le faire sur Ubuntu :
sudo apt-get install nano
.Dans le fichier kubernetes-azurestack.json , recherchez orchestratorRelease et orchestratorVersion. Sélectionnez l’une des versions de Kubernetes prises en charge ; le tableau des versions est disponible dans les notes de publication. Spécifiez la valeur
orchestratorRelease
sous la forme x.xx et orchestratorVersion sous la forme x.xx.x. Pour obtenir la liste des versions actuelles, consultez Versions du moteur AKS prises en charge.Recherchez
customCloudProfile
et fournissez l’URL du portail du locataire. Par exemple :https://portal.local.azurestack.external
.Ajoutez
"identitySystem":"adfs"
si vous utilisez AD FS. Par exemple,"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },
Remarque
Si vous utilisez Microsoft Entra ID pour votre système d’identité, vous n’avez pas besoin d’ajouter le champ identitySystem .
Dans
masterProfile
, définissez les champs suivants :Champ Description dnsPrefix Entrez une chaîne unique qui servira à identifier le nom d’hôte des machines virtuelles. Par exemple, un nom basé sur le nom du groupe de ressources. count Entrez le nombre de maîtres que vous souhaitez pour votre déploiement. Le minimum pour un déploiement HA s’élève à 3, mais 1 seul maître est autorisé pour les déploiements non-HA. vmSize Entrez une taille prise en charge par Azure Stack Hub, par exemple Standard_D2_v2
.distro Entrez aks-ubuntu-18.04
ouaks-ubuntu-20.04
.Dans la mise à jour
agentPoolProfiles
:Champ Description count Entrez le nombre d’agents que vous souhaitez pour votre déploiement. Le nombre maximal de nœuds à utiliser par abonnement est de 50. Si vous déployez plus d’un cluster par abonnement, veillez à ne pas dépasser 50 agents. Utilisez les éléments de configuration spécifiés dans l’exemple de fichier JSON de modèle d’API. vmSize Entrez une taille prise en charge par Azure Stack Hub, par exemple Standard_D2_v2
.distro Entrez aks-ubuntu-18.04
,aks-ubuntu-20.04
ouWindows
.
UtilisezWindows
pour les agents qui s’exécutent sur Windows. Par exemple, consultez kubernetes-windows.jsonDans la mise à jour
linuxProfile
:Champ Description adminUsername Entrez le nom d’utilisateur administrateur de la machine virtuelle. ssh Entrez la clé publique qui sera utilisée pour l’authentification SSH auprès des machines virtuelles. Utilisez ssh-rsa
, puis la clé. Pour obtenir des instructions sur la création d’une clé publique, consultez Créer une clé SSH pour Linux.Si vous déployez sur un réseau virtuel personnalisé, vous pouvez trouver des instructions pour rechercher la clé et les valeurs nécessaires afin de les ajouter aux tableaux appropriés dans le modèle d’API dans Déployer un cluster Kubernetes sur un réseau virtuel personnalisé.
Remarque
Le moteur AKS pour Azure Stack Hub ne vous permet pas de fournir vos propres certificats pour la création du cluster.
Si vous utilisez Windows, dans
windowsProfile
, mettez à jour les valeurs deadminUsername:
etadminPassword
:"windowsProfile": { "adminUsername": "azureuser", "adminPassword": "", "sshEnabled": true }
Plus d’informations sur le modèle d’API
- Pour obtenir des informations de référence complètes sur toutes les options disponibles dans le modèle d’API, reportez-vous aux définitions de cluster.
- Pour obtenir des informations clés sur des options spécifiques pour Azure Stack Hub , voir Spécificités des définitions de cluster Azure Stack Hub.
Ajouter un certificat lors de l’utilisation de l’ASDK
Si vous déployez un cluster sur le Kit de développement Azure Stack (ASDK) et que vous utilisez Linux, vous devez ajouter le certificat racine au magasin de certificats approuvé de la machine virtuelle cliente exécutant le moteur AKS.
- Recherchez le certificat racine sur la machine virtuelle dans ce répertoire :
/var/lib/waagent/Certificates.pem.
- Copiez le fichier de certificat :
sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt sudo update-ca-certificates
Déployer un cluster Kubernetes
Une fois que vous avez collecté toutes les valeurs requises dans votre modèle d’API, vous pouvez créer votre cluster. À ce stade, vous devez :
Demander à votre opérateur Azure Stack Hub d’effectuer les opérations suivantes :
- Vérifier l’intégrité du système, en lui suggérant d’exécuter
Test-AzureStack
et l’outil de supervision de matériel de votre fournisseur OEM. - Vérifiez la capacité système, notamment les ressources comme la mémoire, le stockage et les adresses IP publiques.
- Fournir les détails du quota associé à votre abonnement afin de vous permettre de vérifier que l’espace est toujours suffisant pour le nombre de machines virtuelles que vous envisagez d’utiliser.
Procéder au déploiement d’un cluster :
Passez en revue les paramètres disponibles pour les indicateurs CLI du moteur AKS sur Azure Stack Hub.
Paramètre Exemple Description azure-env AzureStackCloud Pour indiquer au moteur AKS que votre plateforme cible est Azure Stack Hub, utilisez AzureStackCloud
.identity-system adfs facultatif. Spécifiez votre solution de gestion des identités si vous utilisez Active Directory Federated Services (AD FS). location locaux Nom de la région de votre Azure Stack Hub. Pour le kit de développement Azure Stack (ASDK), la région est définie sur local
.resource-group kube-rg Entrez le nom d’un nouveau groupe de ressources ou sélectionnez un groupe de ressources existant. Le nom de la ressource doit être alphanumérique et en minuscules. api-model ./kubernetes-azurestack.json Chemin du fichier de configuration du cluster ou modèle d’API. output-directory kube-rg Entrez le nom du répertoire pour contenir le fichier de sortie apimodel.json et d’autres fichiers générés. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Entrez le GUID du principal du service. ID de client identifié comme ID d’application lorsque votre administrateur Azure Stack Hub a créé le principal du service. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Entrez le secret du principal du service. Vous configurez la clé secrète client quand vous créez votre service. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Entrez votre ID d’abonnement. Vous devez fournir un abonnement pour le locataire. Le déploiement vers l’abonnement administratif n’est pas pris en charge. Pour plus d’informations, consultez S’abonner à une offre. Voici un exemple :
Remarque
Pour AKSe version 0.75.3 et ultérieure, la commande permettant de déployer un cluster de moteur AKS est
aks-engine-azurestack deploy
.aks-engine deploy \ --azure-env AzureStackCloud \ --location <for asdk is local> \ --resource-group kube-rg \ --api-model ./kubernetes-azurestack.json \ --output-directory kube-rg \ --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --identity-system adfs # required if using AD FS
Si, pour une raison quelconque, l’exécution échoue après la création du répertoire de sortie, vous pouvez corriger le problème et réexécuter la commande. Si vous réexécutez le déploiement et que vous aviez déjà utilisé le même répertoire de sortie, le moteur AKS renvoie une erreur indiquant que le répertoire existe déjà. Vous pouvez remplacer le répertoire existant à l’aide de l’indicateur :
--force-overwrite
.Enregistrez la configuration de cluster du moteur AKS à un emplacement sécurisé et chiffré.
Recherchez le fichier apimodel.json. Enregistrez-le à un emplacement sécurisé. Ce fichier sera utilisé comme entrée dans toutes vos autres opérations du moteur AKS.
Le fichier apimodel.json généré contient le principal de service, le secret et la clé publique SSH que vous utilisez dans le modèle d’API d’entrée. Le fichier possède également toutes les autres métadonnées nécessaires par le moteur AKS pour effectuer toutes les autres opérations. Si vous perdez le fichier, le moteur AKS ne pourra pas configurer le cluster.
Les secrets sont non chiffrés. Conservez le fichier à un emplacement sécurisé et chiffré.
Vérifier votre cluster
Vérifiez votre cluster en vous connectant à kubectl
, en obtenant les informations, puis en obtenant les états de vos nœuds.
Obtenez le fichier
kubeconfig
pour vous connecter au plan de contrôle.- Si vous avez
kubectl
déjà installé, vérifiez lekubeconfig
fichier du cluster nouvellement créé dans ce chemin d’accès au/kubeconfig/kubeconfig.json
répertoire. Vous pouvez ajouter le/kubeconfig.json
.kube
répertoire et le renommer en « config » pour accéder à votre nouveau cluster.
Si vous n’avez pas installékubectl
, visitez Installer des outils pour installer l’outil en ligne de commande Kubernetes. Sinon, suivez les instructions ci-dessous pour accéder au cluster à partir de l’un des nœuds du plan de contrôle.
- Si vous avez
Obtenez l’adresse IP publique de l’un de vos nœuds de plan de contrôle à l’aide du portail Azure Stack Hub.
À partir d’un ordinateur disposant d’un accès à votre instance Azure Stack Hub, connectez-vous via SSH au nouveau nœud de plan de contrôle à l’aide d’un client tel que PuTTY ou MobaXterm.
Pour le nom d’utilisateur SSH, utilisez « azureuser » et le fichier de clé privée de la paire de clés que vous avez fournie pour le déploiement du cluster.
Vérifiez que les points de terminaison du cluster sont en cours d’exécution :
kubectl cluster-info
Le résultat doit être semblable à ce qui suit :
Kubernetes master is running at https://democluster01.location.domain.com CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Ensuite, vérifiez les états des nœuds :
kubectl get nodes
La sortie doit ressembler à ce qui suit :
k8s-linuxpool-29969128-0 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-1 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-2 Ready agent 9d v1.15.5 k8s-master-29969128-0 Ready master 9d v1.15.5 k8s-master-29969128-1 Ready master 9d v1.15.5 k8s-master-29969128-2 Ready master 9d v1.15.5
Résoudre les problèmes de déploiement de cluster
Lorsque vous rencontrez des erreurs lors du déploiement d’un cluster Kubernetes à l’aide du moteur AKS, vous pouvez vérifier :
- Utilisez-vous les bonnes informations d’identification du principal du service (SPN) ?
- Le SPN joue-t-il un rôle de contributeur pour l’abonnement Azure Stack Hub ?
- Disposez-vous d’un quota suffisamment élevé dans votre plan Azure Stack Hub ?
- Un correctif ou une mise à niveau sont-ils appliqués à l’instance Azure Stack Hub ?
Pour plus d’informations, consultez l’article résolution des problèmes dans le dépôt GitHub Azure/aks-engine-azurestack .
Effectuer la rotation du secret du principal du service
Après le déploiement du cluster Kubernetes avec le moteur AKS, le principal du service (SPN) est utilisé pour gérer les interactions avec Azure Resource Manager sur votre instance Azure Stack Hub. À un certain stade, le secret pour ce principal de service peut expirer. Si votre secret expire, vous pouvez actualiser les informations d’identification en :
- Mettant à jour chaque nœud avec le nouveau secret du principal du service.
- Ou en mettant à jour les informations d’identification du modèle d’API et en exécutant la mise à niveau.
Mettre à jour chaque nœud manuellement
- Obtenez un nouveau secret pour votre principal de service auprès de votre opérateur cloud. Pour obtenir des instructions pour Azure Stack Hub, consultez Utiliser une identité d’application pour accéder aux ressources Azure Stack Hub.
- Utilisez les nouvelles informations d’identification fournies par votre opérateur cloud pour mettre à jour /etc/kubernetes/azure.json sur chaque nœud. Après avoir effectué la mise à jour, redémarrez les deux
kubele
etkube-controller-manager
.
Mettre à jour le cluster avec la mise à jour du moteur AKS
Vous pouvez également remplacer les informations d’identification dans le apimodel.json et exécuter la mise à niveau à l’aide du fichier .json mis à jour vers la même version ou ultérieure de Kubernetes. Pour obtenir des instructions de mise à niveau du modèle, consultez Mettre à niveau un cluster Kubernetes sur Azure Stack Hub.