Usar marcas do Azure no AKS (Serviço de Kubernetes do Azure)

Com o Serviço de Kubernetes do Azure (AKS), você pode definir as marcas do Azure em um cluster do AKS e seus recursos relacionados usando o Azure Resource Manager e a CLI do Azure. Você também pode usar os manifestos do Kubernetes para definir as marcas do Azure para determinados recursos. As tags do Azure são um recurso de rastreamento útil para determinados processos de negócios, como estorno.

Este artigo explica como definir tags do Azure para clusters do AKS e recursos relacionados.

Antes de começar

Analise as informações a seguir antes de começar:

  • As marcas definidas em um cluster do AKS se aplicam a todos os recursos relacionados ao cluster, mas não aos pools de nós. Esta operação substitui os valores das chaves existentes.
  • As tags definidas em um pool de nós se aplicam somente aos recursos relacionados a ele. Esta operação substitui os valores das chaves existentes. Recursos fora desse pool de nós, incluindo recursos para o restante do cluster e outros pools de nós, não são afetados.
  • IPs públicos, arquivos e discos podem ter tags definidas pelo Kubernetes por meio de um manifesto do Kubernetes. As marcas definidas dessa forma mantêm os valores do Kubernetes, mesmo que você as atualize posteriormente usando um método diferente. Quando você remove IPs, arquivos ou discos públicos através do Kubernetes, todas as marcas definidas pelo Kubernetes são removidas. As marcas nesses recursos que o Kubernetes não rastreia permanecem inalteradas.

Pré-requisitos

  • A CLI do Azure versão 2.0.59 ou posterior. Para encontrar suas versões, execute az --version. Se você precisar instalar ou atualizar sua versão, confira Instalar a CLI do Azure.
  • Kubernetes versão 1.20 ou posterior.

Limitações

  • As tags do Azure têm chaves que não diferenciam maiúsculas de minúsculas para operações, como quando você está recuperando uma tag pesquisando a chave. Nesse caso, uma marca com a chave especificada é atualizada ou recuperada independentemente das letras maiúsculas e minúsculas. Os valores da marca diferenciam maiúsculas de minúsculas.
  • No AKS, se várias tags forem definidas com chaves idênticas, mas com letras maiúsculas ou minúsculas diferentes, elas serão usadas em ordem alfabética. Por exemplo, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} resulta na definição de Key1 e val1.
  • Para recursos compartilhados, as marcas não podem determinar a divisão no uso de recursos por conta própria.

Marcas do Azure e clusters do AKS

Quando você cria ou atualiza um cluster do AKS com o parâmetro --tags, são atribuídas as seguintes marcas do Azure que você especificou:

  • O próprio cluster do AKS e seus recursos relacionados:
    • Tabela de rotas
    • IP público
    • Balanceador de carga
    • Grupo de segurança de rede
    • Rede virtual
    • MSI do Kubelet gerenciado pelo AKS
    • MSI do Complemento gerenciado pelo AKS
    • Zona DNS privada associada ao cluster privado
    • Ponto de extremidade privado associado ao cluster privado
  • O grupo de recursos de nó

Observação

O DNS privado do Azure dá suporte apenas a 15 marcas. Para obter mais informações, consulte os recursos de marca.

Criar ou atualizar marcas em um cluster do AKS

Criar um cluster do AKS

Importante

Se estiver utilizando recursos existentes ao criar um novo cluster, como um endereço IP ou uma tabela de rotas, o comando az aks create substitui o conjunto de marcas. Se você excluir o cluster posteriormente, todas as marcas definidas pelo cluster serão removidas.

  1. Crie um cluster e atribua marcas do Azure usando o comando az aks create com o parâmetro --tags.

    Observação

    Para definir as marcas no pool de nós inicial, no conjunto de dimensionamento de máquinas virtuais e em cada instância do conjunto de dimensionamento de máquinas virtuais associada ao pool de nós inicial, você também pode definir o parâmetro --nodepool-tags.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. Verifique se as marcas foram aplicadas ao cluster e a seus recursos relacionados utilizando o comando az aks show.

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

    O exemplo de saída a seguir mostra as marcas aplicadas ao cluster:

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

Atualizar um cluster de AKS existente

Importante

A definição de marcas em um cluster usando o comando az aks update substitui o conjunto de marcas. Por exemplo, se seu cluster tiver as marcas dept=IT e costcenter=9999, e você usar az aks update com as marcas team=alpha e costcenter=1234, a nova lista de marcas será team=alpha e costcenter=1234.

  1. Atualize as marcas em um cluster existente usando o comando az aks update com o parâmetro --tags.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. Verifique se as marcas foram aplicadas ao cluster e a seus recursos relacionados utilizando o comando az aks show.

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

    O exemplo de saída a seguir mostra as marcas aplicadas ao cluster:

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

Adicionar marcas aos pools de nós

É possível aplicar uma marca do Azure a um pool de nós novo ou existente no cluster do AKS. As marcas aplicadas a um pool de nós são aplicadas a cada nó dentro do pool de nós e são mantidas por meio de atualizações. As tags também são aplicadas a novos nós adicionados a um pool de nós durante operações de expansão. A adição de uma marca pode ajudar com tarefas como rastreamento de política ou estimativa de custo.

Quando você cria ou atualiza um pool de nós com o parâmetro --tags, as marcas que você especifica são atribuídas aos seguintes recursos:

  • O pool de nós.
  • O conjunto de dimensionamento de máquinas virtuais e cada instância de conjunto de dimensionamento de máquinas virtuais associada ao pool de nós.

Criar um novo pool de nós

  1. Criar um pool de nós com uma marca do Azure usando o comando az aks nodepool add com o parâmetro --tags.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. Verifique se as marcas foram aplicadas ao pool de nós usando o comando az aks show.

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

    O exemplo de saída a seguir mostra as marcas aplicadas ao pool de nós:

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

Atualizar um pool de nós existente

Importante

A definição de marcas em um pool de nós usando o comando az aks nodepool update substitui o conjunto de marcas. Por exemplo, se o pool de nós tiver as tags abtest=a e costcenter=5555 e você usar az aks nodepool update com as tags appversion=0.0.2 e costcenter=4444, a nova lista de tags será appversion=0.0.2 e costcenter=4444.

  1. Atualize um pool de nós com uma marca do Azure usando o comando 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. Verifique se as marcas foram aplicadas ao pool de nós usando o comando az aks show.

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

    O exemplo de saída a seguir mostra as marcas aplicadas ao pool de nós:

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

Adicionar marcas usando o Kubernetes

Importante

Definir marcas em arquivos, discos e os IPs públicos usando o Kubernetes atualiza o conjunto de marcas. Por exemplo, se o disco tiver as tags dept=IT e costcenter=5555 e você usar o Kubernetes para definir as tags team=beta e costcenter=3333, a nova lista de tags será dept=IT, team=beta e costcenter=3333.

Todas as atualizações que você fizer nas marcas através do Kubernetes manterão o valor definido através do Kubernetes. Por exemplo, se o disco tiver as tags dept=IT e costcenter=5555 definidas pelo Kubernetes e você usar o portal para definir as tags team=beta e costcenter=3333, a nova lista de tags será dept=IT, team=beta e costcenter=5555. Se, em seguida, você remover o disco por meio do Kubernetes, o disco terá a tag team=beta.

Você pode aplicar marcas do Azure os IPs públicos, discos e arquivos usando um manifesto do Kubernetes.

  • Para os IPs públicos, use service.beta.kubernetes.io/azure-pip-tags, em anotações. Por exemplo:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • Para arquivos e discos, use tags em parâmetros. Por exemplo:

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

Próximas etapas

Saiba mais sobre o uso de rótulos em um cluster do AKS.