Utiliser les balises Azure dans Azure Kubernetes Service (AKS)

Grâce à Azure Kubernetes Service (AKS), vous pouvez définir des étiquettes Azure sur un cluster AKS et ses ressources associées à l’aide d’Azure Resource Manager et d’Azure CLI. Vous pouvez également utiliser des manifestes Kubernetes pour définir des étiquettes Azure pour certaines ressources. Les balises Azure constituent une ressource de suivi utile pour certains processus métier, comme la rétrofacturation.

Cet article explique comment définir des balises Azure pour des clusters AKS et leurs ressources associées.

Avant de commencer

Passez en revue les informations suivantes avant de commencer :

  • Les étiquettes définies sur un cluster AKS s’appliquent à toutes les ressources associées au cluster, mais pas aux pools de nœuds. Cette opération remplace les valeurs des clés existantes.
  • Les balises définies sur un pool de nœuds s’appliquent uniquement aux ressources associées à ce pool de nœuds. Cette opération remplace les valeurs des clés existantes. Les ressources en dehors de ce pool de nœuds, y compris les ressources pour le reste du cluster et d’autres pools de nœuds, ne sont pas affectées.
  • Les adresses IP publiques, les fichiers et les disques peuvent avoir des balises définies par Kubernetes par le biais d’un manifeste Kubernetes. Les étiquettes définies de la sorte conservent les valeurs Kubernetes, même si vous les mettez à jour par la suite en utilisant une autre méthode. Quand vous supprimez des adresses IP publiques, des fichiers ou des disques par le biais de Kubernetes, toutes les étiquettes définies par Kubernetes sont supprimées. Les étiquettes sur les ressources que Kubernetes ne suit pas restent inchangées.

Prérequis

  • Azure CLI version 2.0.59 ou ultérieure. Pour déterminer votre version, exécutez az --version. Si vous avez besoin de l’installer ou de mettre à jour votre version, consultez Installer Azure CLI.
  • Kubernetes version 1.20 ou ultérieure.

Limites

  • Les balises Azure ont des clés qui ne respectent pas la casse pour des opérations comme la récupération d’une balise en recherchant la clé. Dans ce cas, une étiquette avec la clé spécifiée est mise à jour ou récupérée, quelle que soit la casse. Les valeurs des étiquettes respectent la casse.
  • Dans AKS, si plusieurs balises sont définies avec des clés identiques, mais une casse différente, elles sont utilisées dans l’ordre alphabétique. Par exemple, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} entraîne la définition de Key1 et de val1.
  • Pour les ressources partagées, les étiquettes ne peuvent pas déterminer le fractionnement de l’utilisation des ressources par elles-mêmes.

Étiquettes Azure et clusters AKS

Quand vous créez ou mettez à jour un cluster AKS avec le paramètre --tags, les étiquettes Azure que vous avez spécifiées sont affectées aux éléments suivants :

  • Le cluster AKS lui-même et ses ressources associées :
    • Table de routage
    • Adresse IP publique
    • Équilibrage de charge
    • Groupe de sécurité réseau
    • Réseau virtuel
    • Fichier MSI kubelet géré par AKS
    • Fichier MSI du module complémentaire géré par AKS
    • Zone DNS privée associée au cluster privé
    • Point de terminaison privé associé au cluster privé
  • Le groupe de ressources du nœud

Notes

Azure DNS privé ne prend en charge que 15 étiquettes. Pour plus d’informations, consultez les ressources sur les étiquettes.

Créer ou mettre à jour des étiquettes sur un cluster AKS

Créer un cluster AKS

Important

Si vous utilisez des ressources existantes lors de la création d’un cluster, comme une adresse IP ou une table de routage, la commande az aks create remplace l’ensemble d’étiquettes. Si vous supprimez le cluster par la suite, toutes les étiquettes définies par le cluster sont supprimées.

  1. Créez un cluster et attribuez des étiquettes Azure à l’aide de la commande az aks create avec le paramètre --tags.

    Notes

    Pour définir des étiquettes sur le pool de nœuds initial, le groupe de machines virtuelles identiques et chaque instance du groupe de machines virtuelles identiques associée au pool de nœuds initial, vous pouvez également définir le paramètre --nodepool-tags.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. Vérifiez que les étiquettes ont été appliquées au cluster et aux ressources associées à l’aide de la commande az aks show.

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    L’exemple de sortie suivant montre les étiquettes appliquées au cluster :

    {
      "clusterTags": {
        "dept": "IT",
        "costcenter": "9999"
      }
    }
    

Mettre à jour un cluster AKS existant

Important

La définition d’étiquettes sur un cluster à l’aide de la commande az aks update remplace l’ensemble d’étiquettes. Par exemple, si votre cluster contient les étiquettes dept=IT et costcenter=9999 et que vous utilisez az aks update avec les étiquettes team=alpha et costcenter=1234, la nouvelle liste d’étiquettes est team=alpha et costcenter=1234.

  1. Mettez à jour les étiquettes sur un cluster existant à l’aide de la commande az aks update avec le paramètre --tags.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. Vérifiez que les étiquettes ont été appliquées au cluster et aux ressources associées à l’aide de la commande az aks show.

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    L’exemple de sortie suivant montre les étiquettes appliquées au cluster :

    {
      "clusterTags": {
        "team": "alpha",
        "costcenter": "1234"
      }
    }
    

Ajouter des étiquettes aux pools de nœuds

Vous pouvez appliquer une balise Azure à un pool de nœuds nouveau ou existant dans votre cluster AKS. Les balises appliquées à un pool de nœuds sont appliquées à chaque nœud du pool et sont conservées lors des mises à niveau. Des balises sont également appliquées aux nouveaux nœuds qui sont ajoutés à un pool lors des opérations de scale-out. L'ajout d'une balise peut être utile pour les tâches telles que le suivi des stratégies ou l'estimation des coûts.

Quand vous créez ou mettez à jour un pool de nœuds avec le paramètre --tags, les étiquettes que vous spécifiez sont affectées aux ressources suivantes :

  • Le pool de nœuds.
  • Le groupe de machines virtuelles identiques et chaque instance de groupe de machines virtuelles identiques associée au pool de nœuds.

Créer un pool de nœuds

  1. Créez un pool de nœuds avec une étiquette Azure à l’aide de la commande az aks nodepool add avec le paramètre --tags.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. Vérifiez que les étiquettes ont été appliquées au pool de nœuds à l’aide de la commande az aks show.

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    L’exemple de sortie suivant montre les étiquettes appliquées au pool de nœuds :

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "abtest": "a",
          "costcenter": "5555"
        }
      }
    ]
    

Mettre à jour un pool de nœuds existant

Important

La définition d’étiquettes sur un pool de nœuds à l’aide de la commande az aks nodepool update remplace l’ensemble d’étiquettes. Par exemple, si votre pool de nœuds comporte les balises abtest=a et costcenter=5555 et que vous utilisez az aks nodepool update avec les balises appversion=0.0.2 et costcenter=4444, la nouvelle liste de balises comporte appversion=0.0.2 et costcenter=4444.

  1. Mettez à jour un pool de nœuds avec une étiquette Azure à l’aide de la commande az aks nodepool update.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --tags appversion=0.0.2 costcenter=4444 \
        --no-wait
    
  2. Vérifiez que les étiquettes ont été appliquées au pool de nœuds à l’aide de la commande az aks show.

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    L’exemple de sortie suivant montre les étiquettes appliquées au pool de nœuds :

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "appversion": "0.0.2",
          "costcenter": "4444"
        }
      }
    ]
    

Ajouter des étiquettes à l’aide de Kubernetes

Important

La définition de balises sur des fichiers, des disques et des adresses IP publiques à l’aide de Kubernetes met à jour le jeu de balises. Par exemple, si votre disque comporte les balises dept=IT et costcenter=5555 et que vous avez utilisé Kubernetes pour définir les balises team=beta et costcenter=3333, la nouvelle liste de balises comporte dept=IT, team=beta et costcenter=3333.

Toutes les mises à jour apportées aux étiquettes par le biais de Kubernetes conservent la valeur définie via Kubernetes. Par exemple, si votre disque comporte les balises dept=IT et costcenter=5555 définies par Kubernetes et que vous avez utilisé le portail pour définir les balises team=beta et costcenter=3333, la nouvelle liste de balises comporte dept=IT, team=beta et costcenter=5555. Si vous supprimez ensuite le disque par le biais de Kubernetes, le disque comporte la balise team=beta.

Vous pouvez appliquer des balises Azure à des adresses IP publiques, des disques et des fichiers à l’aide d’un manifeste Kubernetes.

  • Pour les adresses IP publiques, utilisez service.beta.kubernetes.io/azure-pip-tags sous annotations. Par exemple :

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • Pour les fichiers et les disques, utilisez des balises sous les paramètres. Par exemple :

    ---
    apiVersion: storage.k8s.io/v1
    ...
    parameters:
      ...
      tags: costcenter=3333,team=beta
    ...
    

Étapes suivantes

En savoir plus sur l’utilisation des étiquettes dans un cluster AKS.