Démarrage rapide : déployer un cluster Kubernetes à l’aide d’un modèle Azure Resource Manager
S’applique à : Azure Stack HCI, version 23H2
Ce guide de démarrage rapide montre comment déployer un cluster Kubernetes dans AKS Arc à l’aide d’un modèle Azure Resource Manager. Azure Arc étend les fonctionnalités de gestion Azure aux clusters Kubernetes n’importe où, offrant une approche unifiée de la gestion des différents environnements.
Avant de commencer
Cet article suppose une compréhension élémentaire des concepts liés à Kubernetes.
Pour déployer un modèle Resource Manager, vous avez besoin d’un accès en écriture sur les ressources que vous déployez et d’un accès à toutes les opérations sur le type de ressource Microsoft.Resources/deployments. Par exemple, pour déployer une machine virtuelle, vous avez besoin des autorisations Microsoft.Compute/virtualMachines/write et Microsoft.Resources/deployments/* . Pour obtenir la liste des rôles et autorisations, consultez Rôles intégrés Azure.
Prérequis
- Compte Azure avec un abonnement actif.
- Un cluster Azure Stack HCI 23H2.
- Dernière version d’Azure CLI.
Étape 1 : préparer votre compte Azure
Connectez-vous à Azure : ouvrez votre terminal ou invite de commandes et connectez-vous à votre compte Azure à l’aide d’Azure CLI :
az login
Définir votre abonnement : remplacez par
<your-subscription-id>
votre ID d’abonnement :az account set --subscription "<your-subscription-id>"
Étape 2 : créer une paire de clés SSH à l’aide d’Azure CLI
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
ou, créez une paire de clés SSH à l’aide de ssh-keygen :
ssh-keygen -t rsa -b 4096
Pour déployer le modèle, vous devez fournir la clé publique à partir de la paire SSH. Pour récupérer la clé publique, utilisez la az sshkey show
commande :
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
Par défaut, les fichiers de clé SSH sont créés dans le répertoire ~/.ssh . Exécutez la az sshkey create
commande ou ssh-keygen
pour remplacer toute paire de clés SSH existante portant le même nom.
Pour plus d’informations sur la création de clés SSH, consultez Créer et gérer les clés SSH pour l’authentification dans Azure.
Étape 3 : Passer en revue le modèle
Le modèle utilisé dans ce guide de démarrage rapide provient du référentiel Modèles de démarrage rapide Azure :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"provisionedClusterName": {
"type": "string",
"defaultValue": "aksarc-armcluster",
"metadata": {
"description": "The name of the AKS Arc Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "eastus",
"metadata": {
"description": "The location of the AKS Arc Cluster resource."
}
},
"resourceTags": {
"type": "object",
"defaultValue": {}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH '"
}
},
"enableAHUB": {
"type": "string",
"defaultValue": "NotApplicable",
"metadata": {
"description": "Azure Hybrid Benefit for Windows Server licenses. NotApplicable, True, False."
}
},
"agentName": {
"type": "string",
"defaultValue": "nodepool",
"metadata": {
"description": "The name of the node pool."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_A4_v2",
"metadata": {
"description": "The VM size for node pools."
}
},
"agentCount": {
"type": "int",
"defaultValue": 1,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentOsType": {
"type": "string",
"defaultValue": "Linux",
"metadata": {
"description": "The OS Type for the agent pool. Values are Linux and Windows."
}
},
"loadBalancerCount": {
"type": "int",
"defaultValue": 0,
"metadata": {
"description": "The number of load balancers."
}
},
"kubernetesVersion": {
"type": "string",
"metadata": {
"description": "The version of Kubernetes."
}
},
"controlPlaneNodeCount": {
"type": "int",
"defaultValue": 1,
"minValue": 1,
"maxValue": 5,
"metadata": {
"description": "The number of control plane nodes for the cluster."
}
},
"controlPlaneIp": {
"type": "string",
"defaultValue": "<default_value>",
"metadata": {
"description": "Control plane IP address."
}
},
"controlPlaneVMSize": {
"type": "string",
"defaultValue": "Standard_A4_v2",
"metadata": {
"description": "The VM size for control plane."
}
},
"vnetSubnetIds": {
"type": "array",
"metadata": {
"description": "List of subnet Ids for the AKS cluster."
}
},
"podCidr": {
"type": "string",
"defaultValue": "10.244.0.0/16",
"metadata": {
"description": "The VM size for control plane."
}
},
"networkPolicy": {
"type": "string",
"defaultValue": "calico",
"metadata": {
"description": "Network policy to use for Kubernetes pods. Only options supported is calico."
}
},
"customLocation": {
"type": "string",
"metadata": {
"description": "Fully qualified custom location resource Id."
}
}
},
"resources": [
{
"apiVersion": "2024-01-01",
"type": "Microsoft.Kubernetes/ConnectedClusters",
"kind": "ProvisionedCluster",
"location": "[parameters('location')]",
"name": "[parameters('provisionedClusterName')]",
"tags": "[parameters('resourceTags')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"agentPublicKeyCertificate":"" ,
"aadProfile": {
"enableAzureRBAC": false
}
}
},
{
"apiVersion": "2024-01-01",
"type": "microsoft.hybridcontainerservice/provisionedclusterinstances",
"name": "default",
"scope": "[concat('Microsoft.Kubernetes/ConnectedClusters', '/', parameters('provisionedClusterName'))]",
"dependsOn": [
"[resourceId('Microsoft.Kubernetes/ConnectedClusters', parameters('provisionedClusterName'))]"
],
"properties": {
"agentPoolProfiles": [
{
"count": "[parameters('agentCount')]",
"name":"[parameters('agentName')]",
"osType": "[parameters('agentOsType')]",
"vmSize": "[parameters('agentVMSize')]"
}
],
"cloudProviderProfile": {
"infraNetworkProfile": {
"vnetSubnetIds": "[parameters('vnetSubnetIds')]"
}
},
"controlPlane": {
"count": "[parameters('controlPlaneNodeCount')]",
"controlPlaneEndpoint": {
"hostIP": "[parameters('controlPlaneIp')]"
},
"vmSize": "[parameters('controlPlaneVMSize')]"
},
"licenseProfile": {
"azureHybridBenefit": "[parameters('enableAHUB')]"
},
"kubernetesVersion": "[parameters('kubernetesVersion')]",
"linuxProfile": {
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
},
"networkProfile": {
"loadBalancerProfile": {
"count": "[parameters('loadBalancerCount')]"
},
"networkPolicy": "[parameters('networkPolicy')]",
"podCidr": "[parameters('podCidr')]"
},
"storageProfile": {
"nfsCsiDriver": {
"enabled": false
},
"smbCsiDriver": {
"enabled": false
}
}
},
"extendedLocation": {
"name": "[parameters('customLocation')]",
"type": "CustomLocation"
}
}
]
}
Étape 4 : déployer le modèle
Pour déployer le modèle, exécutez la commande suivante pour déployer le cluster Kubernetes :
az deployment group create \
--name "<deployment-name>" \
--resource-group "<resource-group-name>" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.kubernetes/aks-arc/azuredeploy.json" \
--parameters provisionedClusterName="<cluster-name> location="eastus" sshRSApublicKey="" etc..."
La création du cluster ne prend que quelques minutes. Attendez que le cluster soit déployé avec succès avant de passer à l’étape suivante.
Étape 5 : Vérifier le déploiement
Une fois le déploiement terminé, utilisez la commande suivante pour vérifier que votre cluster Kubernetes est opérationnel :
az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table
Étape 6 : Se connecter au cluster
Pour vous connecter au cluster, exécutez la
az connectedk8s proxy
commande . La commande télécharge et exécute un fichier binaire proxy sur l’ordinateur client, puis extrait un fichier kubeconfig associé au cluster :az connectedk8s proxy --name <cluster name> -g <resource group>
Vous pouvez également utiliser le client de ligne de commande Kubernetes, kubectl. Si vous utilisez Azure Cloud Shell, kubectl est déjà installé. Pour installer et exécuter kubectl localement, exécutez la
az aksarc install-cli
commande .Configurez kubectl pour vous connecter à votre cluster Kubernetes à l’aide de la
az aksarc get-credentials
commande . Cette commande télécharge les informations d’identification et configure l’interface CLI Kubernetes pour les utiliser :az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
Pour vérifier la connexion à votre cluster, exécutez la commande
kubectl get
. Cette commande retourne une liste des nœuds de cluster :kubectl get nodes -A --kubeconfig .\<path to kubecofig>
L’exemple de sortie suivant montre les trois nœuds créés aux étapes précédentes. Assurez-vous que l’état du nœud est Prêt :
NAME STATUS ROLES AGE VERSION aks-agentpool-27442051-vmss000000 Ready agent 10m v1.27.7 aks-agentpool-27442051-vmss000001 Ready agent 10m v1.27.7 aks-agentpool-27442051-vmss000002 Ready agent 11m v1.27.7
Ressources de modèle
connectedClusters
Nom | Description | Valeur |
---|---|---|
type |
Type de ressource. | Microsoft.Kubernetes/ConnectedClusters |
apiVersion |
Version de l’API de ressource. | 2024-01-01 |
name |
Nom de la ressource. | Chaîne (obligatoire) Limite de caractères : 1-63 Caractères valides : alphanumériques, traits de soulignement et traits d’union. Doit commencer et se terminer par un caractère alphanumérique. |
location |
Emplacement géographique dans lequel réside la ressource. | Chaîne (obligatoire). |
tags |
Balises de ressource. | Dictionnaire de noms et de valeurs d’étiquettes. Consultez Balises dans les modèles. |
extendedLocation |
Emplacement étendu de la machine virtuelle. | ExtendedLocation |
identity |
Identité du cluster connecté, s’il est configuré. | |
properties |
Propriétés d’un cluster connecté. |
ProvisionedClusterInstances
Nom | Description | Valeur |
---|---|---|
type |
Type de ressource | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
Version de l’API de ressource | 2024-01-01 |
name |
Nom de la ressource | Chaîne (obligatoire). Ne changez pas cette valeur par défaut. |
properties |
Propriétés d’un cluster connecté. | |
extendedLocation |
Emplacement étendu du cluster. | ExtendedLocation |
ExtendedLocation
Nom | Description | Valeur |
---|---|---|
name |
ID de l’emplacement étendu. | string |
type |
Type de l’emplacement étendu. | CustomLocation |