Использование тегов Azure в Службе Azure Kubernetes (AKS)

С помощью Служба Azure Kubernetes (AKS) можно задать теги Azure в кластере AKS и связанных с ним ресурсах с помощью Azure Resource Manager и Azure CLI. Вы также можете использовать манифесты Kubernetes, чтобы задать теги Azure для определенных ресурсов. Теги Azure — это полезный ресурс отслеживания для определенных бизнес-процессов, например для возвратных платежей.

В этой статье объясняется, как задать теги Azure для кластеров AKS и связанных ресурсов.

Перед началом

Перед началом работы ознакомьтесь со следующими сведениями:

  • Теги, заданные в кластере AKS, применяются ко всем ресурсам, связанным с кластером, но не к пулам узлов. Эта операция перезаписывает значения существующих ключей.
  • Теги, заданные в пуле узлов, применяются только к ресурсам, связанным с этим пулом узлов. Эта операция перезаписывает значения существующих ключей. Ресурсы за пределами пула узлов, включая ресурсы для остальной части кластера и других пулов узлов, не затрагиваются.
  • Общедоступные IP-адреса, файлы и диски могут иметь теги, заданные с помощью Kubernetes в манифесте Kubernetes. Теги, заданные таким образом, поддерживают значения Kubernetes, даже если вы обновите их позже с помощью другого метода. При удалении общедоступных IP-адресов, файлов или дисков через Kubernetes удаляются все теги, заданные Kubernetes. Теги тех ресурсов, которые Не отслеживает Kubernetes, остаются неизменными.

Предварительные требования

  • Azure CLI версии 2.0.59 или более поздней. Чтобы узнать, какая версия используется, выполните команду az --version. Если необходимо установить или обновить версию, см. раздел Установка Azure CLI.
  • Kubernetes версии 1.20 или более поздней.

Ограничения

  • Теги Azure содержат ключи, которые не учитывают регистр при выполнении операций, например при извлечении тега путем поиска по ключу. В этом случае тег с указанным ключом обновляется или извлекается независимо от регистра. Значения тегов чувствительны к регистру.
  • В AKS, если несколько тегов имеют одинаковые ключи, но различаются по регистру, теги используются в алфавитном порядке. Например, при задании {"Key1": "val1", "kEy1": "val2", "key1": "val3"} будут использоваться Key1 и val1.
  • Для общих ресурсов теги не могут самостоятельно определить разделение использования ресурсов.

Теги Azure и кластеры AKS

При создании или обновлении кластера AKS с --tags помощью параметра назначаются указанные вами теги Azure:

  • Сам кластер AKS и связанные с ним ресурсы:
    • Таблица маршрутов
    • Общедоступный IP-адрес
    • Подсистема балансировки нагрузки
    • Группа безопасности сети
    • Виртуальная сеть
    • Msi kubelet, управляемая AKS
    • MSI-файл надстройки, управляемый AKS
    • Частная зона DNS зона, связанная с частным кластером
    • Частная конечная точка, связанная с частным кластером
  • группа ресурсов узла;

Примечание

Частная зона DNS Azure поддерживает только 15 тегов. Дополнительные сведения см. в разделе Ресурсы тегов.

Создание или обновление тегов в кластере AKS

Создание кластера AKS.

Важно!

Если вы используете существующие ресурсы при создании нового кластера, например IP-адрес или таблицу az aks create маршрутов, команда перезаписывает набор тегов. При последующем удалении кластера удаляются все теги, заданные кластером.

  1. Создайте кластер и назначьте теги Azure с помощью az aks create команды с параметром --tags .

    Примечание

    Чтобы задать теги в исходном пуле узлов, масштабируемом наборе виртуальных машин и каждом экземпляре масштабируемого набора виртуальных машин, связанном с начальным --nodepool-tags пулом узлов, можно также задать параметр .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. С помощью команды убедитесь, что теги были применены к кластеру az aks show и связанным с ним ресурсам.

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

    В следующем примере выходных данных показаны теги, примененные к кластеру:

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

Обновление существующего кластера AKS

Важно!

Задание тегов в кластере az aks update с помощью команды перезаписывает набор тегов. Например, если в кластере есть теги dept=IT и costcenter=9999 и используются az aks update с тегами team=alpha и costcenter=1234, новый список тегов будет team=alpha и costcenter=1234.

  1. Обновите теги в существующем кластере с az aks update помощью команды с параметром --tags .

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. С помощью команды убедитесь, что теги были применены к кластеру az aks show и связанным с ним ресурсам.

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

    В следующем примере выходных данных показаны теги, примененные к кластеру:

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

Добавление тегов в пулы узлов

Можно применить тег Azure к новому или существующему пулу узлов в кластере AKS. Теги, применяемые к пулу узлов, применяются к каждому узлу в пуле узлов и сохраняются при обновлении. Теги также применяются к новым узлам, добавленным в пул узлов во время операций горизонтального увеличения масштаба. Добавление тега может помочь в таких задачах, как отслеживание политик или оценка затрат.

При создании или обновлении пула узлов с --tags помощью параметра указанные теги назначаются следующим ресурсам:

  • Пул узлов.
  • Масштабируемый набор виртуальных машин и каждый экземпляр масштабируемого набора виртуальных машин, связанный с пулом узлов.

Создание пула узлов

  1. Создайте пул узлов с тегом Azure с az aks nodepool add помощью команды с параметром --tags .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. Убедитесь, что теги были применены к пулу узлов с помощью az aks show команды .

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

    В следующем примере выходных данных показаны теги, примененные к пулу узлов:

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

Обновление существующего пула узлов

Важно!

Задание тегов в пуле узлов с помощью az aks nodepool update команды перезаписывает набор тегов. Например, если в пуле узлов есть теги abtest=a и costcenter=5555, и вы используете команду az aks nodepool update с тегами appversion=0.0.2 и costcenter=4444, новый список тегов будет таким: appversion=0.0.2 и costcenter=4444.

  1. Обновите пул узлов с помощью тега Azure с помощью 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. Убедитесь, что теги были применены к пулу узлов с помощью az aks show команды .

    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"
        }
      }
    ]
    

Добавление тегов с помощью Kubernetes

Важно!

Настройка тегов для файлов, дисков и общедоступных IP-адресов с помощью Kubernetes обновляет набор тегов. Например, если в диске есть теги dept=IT и costcenter=5555 и вы использовали Kubernetes для установки тегов team=beta и costcenter=3333, новый список тегов таким: dept=IT, team=beta и costcenter=3333.

Все обновления, внесенные в теги через Kubernetes, сохраняют значение, заданное с помощью Kubernetes. Например, если в диске есть теги dept=IT и costcenter=5555, установленные Kubernetes, и вы использовали портал для установки тегов team=beta и costcenter=3333, новый список тегов таким: dept=IT, team=beta и costcenter=5555. Если после этого вы удалите диск с помощью Kubernetes, у диска останется тег team=beta.

Теги Azure можно применять к общедоступным IP-адресам, дискам и файлам с помощью манифеста Kubernetes.

  • Для общедоступных IP-адресов используйте service.beta.kubernetes.io/azure-pip-tags в заметках. Пример:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • Для файлов и дисков используйте tags в разделе parameters. Пример:

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

Дальнейшие действия

Дополнительные сведения об использовании меток в кластере AKS.