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 la CLI de Azure. También puede usar manifiestos de Kubernetes para establecer etiquetas de Azure para ciertos recursos. Las etiquetas de Azure son un recurso de seguimiento útil para determinados procesos empresariales, como el contracargo.

En este artículo se explica cómo se establecen las etiquetas de Azure para los clústeres de AKS y los 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. Las etiquetas establecidas de esta manera mantienen los valores de Kubernetes, incluso si las actualiza más adelante mediante otro método. 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

  • La versión 2.0.59 de la CLI de Azure, o posterior. Para buscar su versión, ejecute az --version. Si necesita instalarla o actualizar su versión, consulte Instalación de la 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.

Etiquetas de Azure y clústeres de AKS

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

  • 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
    • Virtual network
    • MSI del kubelet administrado por AKS
    • MSI del complemento administrado por AKS
    • Zona DNS privada asociada al 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. Crea un clúster y asigne etiquetas de Azure mediante el comando az aks create con el parámetro --tags.

    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 -g myResourceGroup -n 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 -g myResourceGroup -n 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 de 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 de Azure mediante el comando az aks nodepool add con el 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. Compruebe que las etiquetas se han aplicado al grupo de nodos mediante el comando az aks show.

    az aks show -g myResourceGroup -n 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 de 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 -g myResourceGroup -n 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.

Puede aplicar etiquetas de 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
    ...
    

Pasos siguientes

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