Utilizzare i tag di Azure nel servizio Azure Kubernetes

Con il servizio Azure Kubernetes, è possibile impostare i tag di Azure in un cluster del servizio Azure Kubernetes e le relative risorse utilizzando Azure Resource Manager tramite l'interfaccia della riga di comando di Azure. È anche possibile utilizzare i manifesti Kubernetes per impostare i tag di Azure per determinate risorse. I tag di Azure sono una risorsa di rilevamento utile per determinati processi aziendali, ad esempio il chargeback.

Questo articolo illustra come impostare i tag di Azure per i cluster del servizio Azure Kubernetes e le risorse correlate.

Operazioni preliminari

Prima di iniziare, esaminare le informazioni seguenti:

  • I tag impostati in un cluster del servizio Azure Kubernetes si applicano a tutte le risorse correlate al cluster, ma non ai pool di nodi. Questa operazione sovrascrive i valori delle chiavi esistenti.
  • I tag impostati in un pool di nodi si applicano solo alle risorse correlate al pool di nodi. Questa operazione sovrascrive i valori delle chiavi esistenti. Le risorse esterne al pool di nodi, incluse le risorse per il resto del cluster e di altri pool di nodi, non sono interessate.
  • Gli indirizzi IP pubblici, i file e i dischi possono avere tag impostati da Kubernetes tramite un manifesto Kubernetes. I tag impostati in questo modo mantengono i valori di Kubernetes, anche se vengono aggiornati in un secondo momento usando un metodo diverso. Quando si rimuovono indirizzi IP, file o dischi pubblici tramite Kubernetes, tutti i tag impostati da Kubernetes vengono rimossi. I tag in tali risorse di cui Kubernetes non tiene traccia rimangono invariati.

Prerequisiti

  • Interfaccia della riga di comando di Azure versione 2.0.59 o successiva. Per trovare la versione, eseguire az --version. Se è necessario installarla o aggiornare la versione, vedere Installare l'interfaccia della riga di comando di Azure.
  • Versione Kubernetes: 1.20 o versione successiva.

Limiti

  • I tag di Azure hanno chiavi che non distinguono tra maiuscole e minuscole per le operazioni, ad esempio quando si recupera un tag eseguendo una ricerca nella chiave. In questo caso, un tag con la chiave specificata viene aggiornato o recuperato indipendentemente dalla combinazione di maiuscole e minuscole. Per i valori dei tag si distingue tra maiuscole e minuscole.
  • Nel servizio Azure Kubernetes, se sono impostati più tag con chiavi identiche ma un diverso uso di maiuscole e minuscole, i tag vengono usati in ordine alfabetico. Ad esempio, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} restituisce Key1 e val1 viene impostato.
  • Per le risorse condivise, i tag non possono determinare autonomamente la suddivisione nell'utilizzo delle risorse.

Tag di Azure e cluster del servizio Azure Kubernetes

Quando si crea o si aggiorna un cluster del servizio Azure Kubernetes con il parametro --tags, vengono assegnati i tag di Azure specificati:

  • Il cluster del servizio Azure Kubernetes e le relative risorse correlate:
    • Tabella di route
    • IP pubblico
    • Bilanciamento del carico
    • Gruppo di sicurezza di rete
    • Rete virtuale
    • Identità del servizio gestita Kubelet gestita dal servizio Azure Kubernetes
    • Identità del servizio gestita del componente aggiuntivo gestito dal servizio Azure Kubernetes
    • Zona DNS privata associata al cluster privato
    • Endpoint privato associato al cluster privato
  • Gruppo di risorse del nodo

Nota

DNS privato di Azure supporta solo 15 tag. Per altre informazioni, vedere le risorse tag.

Creare o aggiornare i tag in un cluster del servizio Azure Kubernetes

Creare un nuovo cluster del servizio Azure Kubernetes

Importante

Se si usano risorse esistenti quando si crea un nuovo cluster, ad esempio un indirizzo IP o una tabella di route, il comando az aks create sovrascrive il set di tag. Se si elimina il cluster in un secondo momento, tutti i tag impostati dal cluster vengono rimossi.

  1. Creare un cluster e assegnare tag di Azure utilizzando il comando az aks create con il parametro --tags.

    Nota

    Per impostare i tag nel pool di nodi iniziale, il set di scalabilità di macchine virtuali e ogni istanza del set di scalabilità di macchine virtuali associata al pool di nodi iniziale, è anche possibile impostare il parametro --nodepool-tags.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. Verificare che i tag siano stati applicati al cluster e alle relative risorse usando il comando az aks show.

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

    L'output di esempio seguente mostra i tag applicati al cluster:

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

Aggiornare un cluster del servizio Azure Kubernetes esistente

Importante

L'impostazione dei tag in un cluster tramite il comando az aks update sovrascrive il set di tag. Ad esempio, se il cluster presenta i tag dept=IT e costcenter=9999 e si utilizza az aks update con i tag team=alpha e costcenter=1234, il nuovo elenco di tag sarà team=alpha e costcenter=1234.

  1. Aggiornare i tag in un cluster esistente utilizzando il comando az aks update con il parametro --tags.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. Verificare che i tag siano stati applicati al cluster e alle relative risorse usando il comando az aks show.

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

    L'output di esempio seguente mostra i tag applicati al cluster:

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

Aggiungere tag ai pool di nodi

È possibile applicare un tag di Azure a un pool di nodi nuovo o esistente nel cluster del servizio Azure Kubernetes. I tag applicati a un pool di nodi vengono applicati a ogni nodo all'interno del pool di nodi e vengono mantenuti tramite gli aggiornamenti. I tag vengono applicati anche ai nuovi nodi aggiunti a un pool di nodi durante le operazioni di scale-out. L'aggiunta di un tag può essere utile per attività come il rilevamento dei criteri o la stima dei costi.

Quando si crea o si aggiorna un pool di nodi con il parametro --tags, i tag specificati vengono assegnati alle risorse seguenti:

  • Pool di nodi.
  • Il set di scalabilità di macchine virtuali e ogni istanza del set di scalabilità di macchine virtuali associati al pool di nodi.

Creare un nuovo pool di nodi

  1. Creare un pool di nodi con un tag di Azure utilizzando il comando az aks nodepool add con il parametro --tags.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. Verificare che i tag siano stati applicati al pool di nodi usando il comando az aks show.

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

    L'output di esempio seguente mostra i tag applicati al pool di nodi:

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

Aggiornare un pool di nodi esistente

Importante

L'impostazione dei tag in un pool di nodi tramite il comando az aks nodepool update sovrascrive il set di tag. Ad esempio, se il pool di nodi presenta i tag abtest=a e costcenter=5555 e si usa az aks nodepool update con i tag appversion=0.0.2 e costcenter=4444, il nuovo elenco di tag sarà appversion=0.0.2 e costcenter=4444.

  1. Aggiornare un pool di nodi con un tag di Azure usando il 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. Verificare che i tag siano stati applicati al pool di nodi utilizzando il comando az aks show.

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

    L'output di esempio seguente mostra i tag applicati al pool di nodi:

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

Aggiungere tag con Kubernetes

Importante

L'impostazione di tag su file, dischi e indirizzi IP pubblici con Kubernetes aggiorna il set di tag. Ad esempio, se il disco presenta i tag dept=IT e costcenter=5555 e si usa Kubernetes per impostare i tag team=beta e costcenter=3333, il nuovo elenco di tag sarà dept=IT, team=beta e costcenter=3333.

Tutti gli aggiornamenti apportati ai tag tramite Kubernetes mantengono il valore impostato tramite Kubernetes. Ad esempio, se il disco presenta i tag dept=IT e costcenter=5555impostati da Kubernetes e si usa il portale per impostare i tag team=beta e costcenter=3333, il nuovo elenco di tag sarà dept=IT, team=beta e costcenter=5555. Se quindi si rimuove il disco tramite Kubernetes, il disco presenterà il tag team=beta.

È possibile applicare tag di Azure agli indirizzi IP pubblici, nonché ai dischi e ai file usando un manifesto Kubernetes.

  • Per gli indirizzi IP pubblici, utilizzare service.beta.kubernetes.io/azure-pip-tags sotto annotazioni. Ad esempio:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • Per i file e i dischi, utilizzare i tag nei parametri. Ad esempio:

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

Passaggi successivi

Altre informazioni su usando le etichette in un cluster del servizio Azure Kubernetes.