Utiliser les balises Azure dans Azure Kubernetes Service (AKS)

Avec Azure Kubernetes Service (AKS), vous pouvez définir des balises Azure sur un cluster AKS et ses ressources associées à l’aide d’Azure Resource Manager, par le biais d’Azure CLI. Pour certaines ressources, vous pouvez également utiliser des manifestes Kubernetes pour définir des balises Azure. 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

Vous avez tout intérêt à comprendre ce qui se passe quand vous définissez et mettez à jour des balises Azure avec des clusters AKS et leurs ressources associées. Par exemple :

  • Les balises 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 balises définies de la sorte vont conserver les valeurs Kubernetes, même si vous les mettez à jour par la suite en utilisant une autre méthode. Lorsque des adresses IP publiques, des fichiers ou des disques sont supprimés par le biais de Kubernetes, toutes les balises définies par Kubernetes sont supprimées. Les balises définies sur ces ressources qui ne sont pas suivies par Kubernetes ne sont pas affectées.

Prérequis

  • Azure CLI version 2.0.59 ou ultérieure installé et configuré.

    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 installé.

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 balise 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 balises ne sont pas en mesure de déterminer le fractionnement de l’utilisation des ressources par elles-mêmes.

Ajouter des balises au cluster

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

  • Le cluster AKS
  • La table de routage associée au cluster
  • L’adresse IP publique associée au cluster
  • L’équilibreur de charge associé au cluster
  • Le groupe de sécurité réseau associé au cluster
  • Le réseau virtuel associé au cluster
  • Le msi kubelet managé AKS associé au cluster
  • Le msi addon managé AKS associé au cluster
  • La zone DNS privée associée au cluster privé
  • Le point de terminaison privé associé au cluster privé

Notes

Azure DNS privé ne prend en charge que 15 étiquettes. étiqueter des ressources.

Pour créer un cluster et affecter des balises Azure, exécutez az aks create avec le paramètre --tags, comme indiqué dans la commande suivante. L’exécution de la commande crée un myAKSCluster dans myResourceGroup avec les balises dept=IT et costcenter=9999.

Notes

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

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --tags dept=IT costcenter=9999 \
    --generate-ssh-keys

Important

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

Vérifiez que les balises ont été appliquées au cluster et aux ressources associées. Les balises de cluster pour myAKSCluster sont présentées dans l’exemple suivant :

$ az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
{
  "clusterTags": {
    "costcenter": "9999",
    "dept": "IT"
  }
}

Pour mettre à jour les balises sur un cluster existant, exécutez az aks update avec le paramètre --tags. L’exécution de la commande met à jour myAKSCluster avec les balises team=alpha et costcenter=1234.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --tags team=alpha costcenter=1234

Vérifiez que les balises ont été appliquées au cluster. Par exemple :

$ az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
{
  "clusterTags": {
    "costcenter": "1234",
    "team": "alpha"
  }
}

Important

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

Ajout de balises 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.

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

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

Pour créer un pool de nœuds avec une balise Azure, exécutez az aks nodepool add avec le paramètre --tags. L’exécution de la commande suivante crée un pool de nœuds tagnodepool avec les balises abtest=a et costcenter=5555 dans myAKSCluster.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name tagnodepool \
    --node-count 1 \
    --tags abtest=a costcenter=5555 \
    --no-wait

Vérifiez que les balises ont été appliquées au pool de nœuds tagnodepool.

$ az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
[
  {
    "nodepoolName": "nodepool1",
    "tags": null
  },
  {
    "nodepoolName": "tagnodepool",
    "tags": {
      "abtest": "a",
      "costcenter": "5555"
    }
  }
]

Pour mettre à jour un pool de nœuds avec une balise Azure, exécutez az aks nodepool update avec le paramètre --tags. L’exécution de la commande suivante met à jour le pool de nœuds tagnodepool avec les balises appversion=0.0.2 et costcenter=4444 dans myAKSCluster, qui a déjà les balises abtest=a et costcenter=5555.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name tagnodepool \
    --tags appversion=0.0.2 costcenter=4444 \
    --no-wait

Important

La définition de balises sur un pool de nœuds à l’aide de az aks nodepool update remplace l’ensemble de balises. 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.

Vérifiez que les balises ont été mises à jour sur le pool de nœuds.

$ az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
[
  {
    "nodepoolName": "nodepool1",
    "tags": null
  },
  {
    "nodepoolName": "tagnodepool",
    "tags": {
      "appversion": "0.0.2",
      "costcenter": "4444"
    }
  }
]

Ajouter des balises à l’aide de Kubernetes

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
...

Important

La définition de balises sur des fichiers, des disques et des adresses IP publiques à l’aide de Kubernetes met à jour l’ensemble 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 balises par le biais de Kubernetes conservent la valeur définie par le biais de 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.