Condividi tramite


Usare tag di Azure in Servizio Azure Kubernetes (AKS)

Con Servizio Azure Kubernetes (AKS) è possibile impostare tag Azure in un cluster del servizio Azure Kubernetes e le relative risorse usando Azure Resource Manager e l'interfaccia della riga di comando di Azure. È anche possibile usare manifesti Kubernetes per impostare Azure tag per determinate risorse. Azure tag sono una risorsa di rilevamento utile per determinati processi aziendali, ad esempio chargeback.

Questo articolo spiega come impostare i tag Azure per i cluster AKS 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. Per i dischi e i file creati tramite un StorageClass, il parametro tags viene applicato alla risorsa Azure sottostante quando AKS effettua il provisioning del volume. Il successivo aggiornamento influisce solo sui nuovi volumi provisionati. 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 aggiornarla, vedere Installare interfaccia della riga di comando di Azure.
  • Versione Kubernetes: 1.20 o versione successiva.

Limiti

  • Azure tag hanno chiavi senza distinzione 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 distinzione tra maiuscole e minuscole. I valori dei tag sono sensibili al maiuscolo/minuscolo.
  • In AKS, 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.
  • Per i dischi e i file che supportano un volume persistente Kubernetes, la PersistentVolume specifica non è modificabile dopo la creazione. La modifica o l'applicazione di patch a un oggetto esistente PersistentVolume per modificare i tag o altri attributi del volume hanno esito negativo.
  • L'aggiornamento dei tag direttamente nella risorsa Azure sottostante non sincronizza i valori dei tag con i metadati o YAML di Kubernetes PersistentVolume.

tag di Azure e cluster AKS di Azure

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

  • Il cluster AKS e le relative risorse:
    • Tabella di route
    • IP pubblico
    • Bilanciamento del carico
    • Gruppo di sicurezza di rete
    • Rete virtuale
    • AKS-managed Kubelet MSI
    • Identità di servizio gestita (msi) del componente aggiuntivo gestito da AKS
    • Zona DNS privata associata al cluster privato
    • Endpoint privato associato al cluster privato
  • Gruppo di risorse del nodo

Nota

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

Creare o aggiornare i tag su un cluster AKS (Azure Kubernetes Service)

Creare un nuovo cluster AKS

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 Azure usando 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 --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

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

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

Aggiornare un cluster AKS 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 --resource-group myResourceGroup --name 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 Azure a un pool di nodi nuovo o esistente nel cluster AKS. 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 associata al pool di nodi.

Creare un nuovo pool di nodi

  1. Creare un pool di nodi con un tag Azure usando 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 --resource-group myResourceGroup --name 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 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 --resource-group myResourceGroup --name 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.

Per i dischi e i file che supportano un volume persistente, il tags valore in un StorageClass è un'impostazione definita al momento del provisioning. Dopo aver creato il volume, la PersistentVolume specifica non è modificabile, quindi la modifica o l'applicazione di patch al pv per modificare i tag o altri attributi del volume ha esito negativo. Le modifiche apportate direttamente alla risorsa Azure sottostante non vengono sincronizzate con i metadati o YAML PV.

È possibile applicare tag Azure agli indirizzi IP, ai dischi e ai file pubblici 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
    ...
    

Aggiornare i tag per i volumi permanenti esistenti

Per aggiornare i tag di un volume persistente esistente basato su disco o su file, aggiorna i tag sulla risorsa Azure sottostante invece di modificare il PersistentVolume. Questa operazione non interrompe i montaggi, i pod o l'accesso ai dati esistenti.

  • Per i volumi persistenti di Azure con supporto del disco, aggiorna direttamente i dischi gestiti. Ad esempio:

    az disk update \
        --name myManagedDisk \
        --resource-group MC_myResourceGroup_myAKSCluster_eastus \
        --set tags.abc=ABC123
    
  • Per i volumi persistenti basati su File di Azure, aggiornare direttamente l'account di archiviazione. Ad esempio:

    az storage account update \
        --name mystorageaccount \
        --resource-group MC_myResourceGroup_myAKSCluster_eastus \
        --set tags.abc=ABC123
    

Le modifiche apportate a un StorageClass oggetto influiscono solo sui volumi di cui è stato appena effettuato il provisioning e non aggiornano i volumi persistenti esistenti.

Passaggi successivi

Per saperne di più su usare le etichette in un cluster AKS.