Partekatu honen bidez:


Uso de etiquetas de Azure en Azure Kubernetes Service (AKS)

Con Azure Kubernetes Service (AKS), puede establecer etiquetas de Azure en un clúster de AKS y sus recursos relacionados mediante Azure Resource Manager y el CLI de Azure. También puede usar manifiestos de Kubernetes para establecer etiquetas Azure para determinados recursos. Azure etiquetas son un recurso de seguimiento útil para determinados procesos empresariales, como chargeback.

En este artículo se explica cómo establecer etiquetas de Azure para clústeres de AKS y recursos relacionados.

Antes de empezar

Antes de comenzar, revise la siguiente información:

  • Las etiquetas establecidas en un clúster de AKS se aplican a todos los recursos relacionados con el clúster, pero no a los grupos de nodos. Esta operación sobrescribe los valores de las claves existentes.
  • Las etiquetas establecidas en un grupo de nodos se aplican solo a los recursos relacionados con ese grupo de nodos. Esta operación sobrescribe los valores de las claves existentes. Los recursos fuera de ese grupo de nodos, incluidos los recursos para el resto del clúster y otros grupos de nodos, no se ven afectados.
  • Las direcciones IP públicas, los archivos y los discos pueden tener etiquetas establecidas por Kubernetes mediante un manifiesto de Kubernetes. En el caso de los discos y archivos creados a través de un StorageClass, el parámetro tags se aplica al recurso de Azure subyacente cuando AKS aprovisiona el volumen. Actualizar StorageClass más adelante afecta solo a los volúmenes aprovisionados recientemente. Cuando se quitan las direcciones IP públicas, los archivos o los discos a través de Kubernetes, también se eliminan las etiquetas establecidas por Kubernetes. Las etiquetas de esos recursos a los que Kubernetes no realiza el seguimiento siguen sin verse afectadas.

Requisitos previos

  • CLI de Azure en la versión 2.0.59 o posterior. Para buscar su versión, ejecute az --version. Si necesita instalarla o actualizar la versión, consulte Install CLI de Azure.
  • Kubernetes, versión 1.20 o posterior.

Limitaciones

  • Las etiquetas de Azure tienen claves que no distinguen mayúsculas y minúsculas en las operaciones; por ejemplo, cuando se recupera una etiqueta buscando la clave. En este caso, una etiqueta con la clave especificada se actualiza o recupera independientemente del uso de mayúsculas y minúsculas. Los valores de etiqueta distinguen mayúsculas de minúsculas.
  • En AKS, si varias etiquetas están configuradas con claves que son idénticas salvo por el uso de mayúsculas y minúsculas, las etiquetas se utilizarán en orden alfabético. Por ejemplo, si se utiliza {"Key1": "val1", "kEy1": "val2", "key1": "val3"}, se configurará Key1 y val1.
  • En el caso de los recursos compartidos, las etiquetas no pueden determinar la división en el uso de recursos por sí solas.
  • En el caso de los discos y archivos que respaldan un volumen persistente de Kubernetes, la PersistentVolume especificación es inmutable después de la creación. Se produce un error al editar o aplicar parches a un PersistentVolume existente para cambiar etiquetas u otros atributos del volumen.
  • La actualización de etiquetas directamente en el recurso subyacente de Azure no sincroniza esos valores de etiqueta de nuevo con el YAML del PV PersistentVolume de Kubernetes ni con sus metadatos.

etiquetas de Azure y clústeres de AKS

Al crear o actualizar un clúster de AKS con el parámetro --tags, se le asignan las etiquetas Azure que especificó:

  • El propio clúster de AKS y sus recursos relacionados:
    • Tabla de rutas
    • Dirección IP pública
    • Equilibrador de carga
    • Grupo de seguridad de red
    • Red de área virtual
    • MSI del kubelet administrado por AKS
    • MSI del complemento administrado por AKS
    • Zona DNS privada asociada con el clúster privado
    • Punto de conexión privado asociado al clúster privado
  • El grupo de recursos de nodo

Nota

Azure DNS privado solo admite 15 etiquetas. Para obtener más información, consulte los recursos de etiquetas.

Creación o actualización de etiquetas en un clúster de AKS

Creación de un clúster de AKS

Importante

Si se usan recursos existentes al crear un nuevo clúster, como una dirección IP o una tabla de enrutamiento, el comando az aks create sobrescribe el conjunto de etiquetas. Si posteriormente elimina ese clúster, se quitan las etiquetas establecidas por el clúster.

  1. Cree un clúster y asigne etiquetas Azure mediante el comando con el parámetro />

    Nota

    Para establecer etiquetas en el grupo de nodos inicial, el conjunto de escalado de máquinas virtuales y cada instancia del conjunto de escalado de máquinas virtuales asociada al grupo de nodos inicial, puede establecer también el parámetro --nodepool-tags.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. Compruebe que las etiquetas se han aplicado al clúster y a los recursos relacionados mediante el comando az aks show.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

    En la salida de ejemplo siguiente se muestran las etiquetas aplicadas al clúster:

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

Actualización de un clúster de AKS ya existente

Importante

Al establecer etiquetas en un clúster mediante el comando az aks update, se sobrescribe el conjunto de etiquetas. Por ejemplo, si el clúster tiene las etiquetas dept=IT y costcenter=9999 y usa az aks update con las etiquetas team=alpha y costcenter=1234, la nueva lista de etiquetas será team=alpha y costcenter=1234.

  1. Actualice las etiquetas en un clúster existente mediante el comando az aks update con el parámetro --tags.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. Compruebe que las etiquetas se han aplicado al clúster y a los recursos relacionados mediante el comando az aks show.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

    En la salida de ejemplo siguiente se muestran las etiquetas aplicadas al clúster:

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

Agregar etiquetas a grupos de nodos

Puede aplicar una etiqueta Azure a un grupo de nodos nuevo o existente en el clúster de AKS. Las etiquetas aplicadas a un grupo de nodos se aplican a cada nodo del grupo y se conservan de una actualización a otra. También se aplican etiquetas a los nuevos nodos que se agregan a un grupo durante las operaciones de escalado horizontal. Agregar una etiqueta puede ayudar con tareas como el seguimiento de directivas o la estimación de costos.

Al crear o actualizar un grupo de nodos con el parámetro --tags, las etiquetas que especificó se asignan a los siguientes recursos:

  • El grupo de nodos.
  • El conjunto de escalado de máquinas virtuales y cada instancia del conjunto de escalado de máquinas virtuales asociada al grupo de nodos.

Crear un nuevo grupo de nodos

  1. Cree un grupo de nodos con una etiqueta Azure mediante el comando /> .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. Compruebe que las etiquetas se han aplicado al grupo de nodos mediante el comando az aks show.

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

    En la salida de ejemplo siguiente se muestran las etiquetas aplicadas al grupo de nodos:

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

Actualización de un grupo de nodos existente

Importante

Al establecer etiquetas en un grupo de nodos mediante el comando az aks nodepool update, se sobrescribe el conjunto de etiquetas. Por ejemplo, si el grupo de nodos tiene las etiquetas abtest=a y costcenter=5555 y usa az aks nodepool update con las etiquetas appversion=0.0.2 y costcenter=4444, la nueva lista de etiquetas será appversion=0.0.2 y costcenter=4444.

  1. Actualice un grupo de nodos con una etiqueta Azure mediante el 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. Compruebe que las etiquetas se han aplicado al grupo de nodos mediante el comando az aks show.

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

    En la salida de ejemplo siguiente se muestran las etiquetas aplicadas al grupo de nodos:

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

Adición de etiquetas mediante Kubernetes

Importante

Al establecer etiquetas en archivos, discos y direcciones IP públicas mediante Kubernetes, se actualiza el conjunto de etiquetas. Por ejemplo, si el disco tiene las etiquetas dept=IT y costcenter=5555 y usó Kubernetes para establecer las etiquetas team=beta y costcenter=3333, la nueva lista de etiquetas sería dept=IT, team=beta y costcenter=3333.

Las actualizaciones realizadas en etiquetas a través de Kubernetes conservarán el valor establecido a través de Kubernetes. Por ejemplo, si el disco tiene las etiquetas dept=IT y costcenter=5555 establecidas por Kubernetes y usó el portal para establecer las etiquetas team=beta y costcenter=3333, la nueva lista de etiquetas sería dept=IT, team=beta y costcenter=5555. Si después quita el disco a través de Kubernetes, el disco tendría la etiqueta team=beta.

En el caso de discos y archivos que realizan una copia de seguridad de un volumen persistente, el valor de tags en StorageClass es una configuración en el momento del aprovisionamiento. Una vez creado el volumen, la PersistentVolume especificación es inmutable, por lo que se produce un error al editar o aplicar revisiones al PV para cambiar etiquetas u otros atributos de volumen. Los cambios realizados directamente en el recurso de Azure subyacente no se sincronizan con los metadatos o YAML de PV.

Puede aplicar etiquetas Azure a direcciones IP públicas, discos y archivos mediante un manifiesto de Kubernetes.

  • Para las direcciones IP públicas, use service.beta.kubernetes.io/azure-pip-tags, en anotaciones. Por ejemplo:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • Para archivos y discos, use etiquetas en parámetros. Por ejemplo:

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

Actualización de etiquetas para volúmenes persistentes existentes

Para actualizar las etiquetas de un volumen persistente con copia de seguridad de disco o de archivos existente, actualice las etiquetas en el recurso Azure subyacente en lugar de editar el PersistentVolume. Esta operación no interrumpe los montajes, pods ni el acceso a datos existentes.

  • Para los volúmenes persistentes de Azure respaldados por discos, actualice el disco administrado directamente. Por ejemplo:

    az disk update \
        --name myManagedDisk \
        --resource-group MC_myResourceGroup_myAKSCluster_eastus \
        --set tags.abc=ABC123
    
  • Para los volúmenes persistentes respaldados por Azure Files, actualice la cuenta de almacenamiento directamente. Por ejemplo:

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

Los cambios en un StorageClass objeto afectan solo a los volúmenes aprovisionados recientemente y no actualizan los volúmenes persistentes existentes.

Pasos siguientes

Obtenga más información sobre el uso de etiquetas en un clúster de AKS.