Habilitación de la autenticación de Azure Managed Identity para clústeres de Kubernetes con kubelogin

La integración de Microsoft Entra administrada por AKS simplifica el proceso de integración de Microsoft Entra. Anteriormente, era necesario crear una aplicación cliente y servidor, y el inquilino de Microsoft Entra tenía que asignar permisos de rol de Lector de directorio. Ahora, el proveedor de recursos de AKS es quien administra las aplicaciones de servidor y cliente.

Los administradores de clústeres pueden configurar el control de acceso basado en rol de Kubernetes (RBAC de Kubernetes) en función de la identidad de un usuario o la pertenencia a grupos de directorios. La autenticación de Microsoft Entra se proporciona a los clústeres de AKS con OpenID Connect. OpenID Connect es una capa de identidad creada basándose en el protocolo OAuth 2.0. Para obtener más información sobre OpenID Connect, vea la documentación de OpenID Connect.

Obtenga más información sobre el flujo de integración de Microsoft Entra en la documentación de Microsoft Entra.

En este artículo se proporcionan detalles sobre cómo habilitar y usar identidades administradas para recursos de Azure con el clúster de AKS.

Limitaciones

A continuación se muestran restricciones que integran la autenticación de Azure Managed Identity en AKS.

  • La integración no se puede deshabilitar una vez agregada.
  • No se admiten las degradaciones de un clúster integrado a los clústeres heredados de Microsoft Entra ID.
  • Los clústeres sin compatibilidad con RBAC de Kubernetes no pueden agregar la integración.

Antes de empezar

Es necesario cumplir los siguientes requisitos para instalar correctamente el complemento de AKS para la identidad administrada.

  • Tiene la CLI de Azure versión 2.29.0 o posterior instalada y configurada. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
  • Necesita kubectl con la versión 1.18.1 o kubelogin como mínimo. Con la CLI de Azure y el módulo Azure PowerShell, estos dos comandos se incluyen y administran automáticamente. Es decir, se actualizan de forma predeterminada y la ejecución az aks install-cli no es necesaria ni recomendada. Si usa una canalización automatizada, debe administrar la actualización a la versión correcta o más reciente. La diferencia entre las versiones secundarias de Kubernetes y kubectl no debe ser superior a una versión. De lo contrario, los problemas de autenticación se producen en la versión incorrecta.
  • Si usa Helm, necesita una versión mínima de Helm 3.3.
  • Esta configuración requiere que tenga un grupo de Microsoft Entra para el clúster. Este grupo se registrará como grupo de administración en el clúster para conceder permisos de administrador. Si no tiene un grupo de Microsoft Entra existente, puede crear uno mediante el comando az ad group create.

Nota:

Los clústeres integrados de Microsoft Entra con una versión de Kubernetes más reciente que la versión 1.24 usan automáticamente el formato kubelogin. A partir de la versión 1.24 de Kubernetes, el formato predeterminado de la credencial clusterUser para los clústeres de Microsoft Entra ID es exec, que requiere kubelogin binario en la ruta de acceso de ejecución. No hay ningún cambio de comportamiento para clústeres que no son de Microsoft Entra o clústeres de Microsoft Entra ID que ejecutan una versión anterior a la 1.24. La descarga existente kubeconfig sigue funcionando. Se incluye un formato de parámetro de consulta opcional al obtener la credencial clusterUser para sobrescribir el cambio de comportamiento predeterminado. Puede especificar explícitamente el formato en Azure si necesita mantener el formato anterior kubeconfig.

Habilitación de la integración en el clúster de AKS

Creación de un clúster

  1. Cree un grupo de recursos de Azure con el comando az group create.

    az group create --name myResourceGroup --location centralus
    
  2. Cree un clúster de AKS y habilite el acceso de administración para el grupo de Microsoft Entra mediante el comando az aks create.

    az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]
    

    Una creación correcta de un clúster de Microsoft Entra ID administrado por AKS tiene la siguiente sección en el cuerpo de la respuesta:

    "AADProfile": {
        "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
        ],
        "clientAppId": null,
        "managed": true,
        "serverAppId": null,
        "serverAppSecret": null,
        "tenantId": "72f9****-****-****-****-****d011db47"
    }
    

Uso de un clúster existente

Habilite la integración de Microsoft Entra administrada por AKS en el clúster habilitado para RBAC de Kubernetes existente mediante el comando az aks update. Asegúrese de establecer el grupo de administradores para mantener el acceso al clúster.

az aks update -g MyResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id-1>,<id-2> [--aad-tenant-id <id>]

Una activación correcta de un clúster de Microsoft Entra ID administrado por AKS tiene la siguiente sección en el cuerpo de la respuesta:

"AADProfile": {
    "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

Migración del clúster heredado a la integración

Si el clúster usa la integración heredada de Microsoft Entra, puede actualizar a la integración de Microsoft Entra administrada por AKS mediante el comando az aks update.

Advertencia

Los clústeres de nivel Gratis pueden experimentar tiempo de inactividad del servidor de API durante la actualización. Se recomienda actualizar durante las horas que no son de negocio. Después de la actualización, el contenido de kubeconfig cambia. Debe ejecutar az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name> para combinar las nuevas credenciales en el archivo kubeconfig.

az aks update -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

Una migración correcta de un clúster de Microsoft Entra ID administrado por AKS tiene la siguiente sección en el cuerpo de la respuesta:

"AADProfile": {
    "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

Acceso al clúster habilitado

  1. Obtenga las credenciales de usuario para acceder al clúster usando el comando az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
    
  2. Siga las instrucciones para iniciar sesión.

  3. Establezca kubelogin para usar la CLI de Azure.

    kubelogin convert-kubeconfig -l azurecli
    
  4. Use el comando kubectl get nodes para visualizar los nodos del clúster.

    kubectl get nodes
    

Inicio de sesión no interactivo con kubelogin

Hay algunos escenarios no interactivos que no admiten kubectl. En estos casos, use kubelogin para conectarse al clúster con una credencial de entidad de servicio no interactiva para realizar canalizaciones de integración continua.

Nota:

Los clústeres integrados de Microsoft Entra con una versión de Kubernetes más reciente que la versión 1.24 usan automáticamente el formato kubelogin. A partir de la versión 1.24 de Kubernetes, el formato predeterminado de la credencial clusterUser para los clústeres de Microsoft Entra ID es exec, que requiere kubelogin binario en la ruta de acceso de ejecución. No hay ningún cambio de comportamiento para clústeres que no son de Microsoft Entra o clústeres de Microsoft Entra ID que ejecutan una versión anterior a la 1.24. La descarga existente kubeconfig sigue funcionando. Se incluye un formato de parámetro de consulta opcional al obtener la credencial clusterUser para sobrescribir el cambio de comportamiento predeterminado. Puede especificar explícitamente el formato en Azure si necesita mantener el formato anterior kubeconfig.

  • Al obtener la credencial clusterUser, puede usar el parámetro de consulta format para sobrescribir el cambio de comportamiento predeterminado. Puede establecer el valor en azure para usar el formato kubeconfig original:

    az aks get-credentials --format azure
    
  • Si el clúster integrado de Microsoft Entra usa la versión 1.24 o inferior de Kubernetes, debe convertir manualmente el formato kubeconfig.

    export KUBECONFIG=/path/to/kubeconfig
    kubelogin convert-kubeconfig
    

Nota:

Si recibe el mensaje de error: Se ha quitado el complemento de autenticación de Azure. Debe ejecutar el comando kubelogin convert-kubeconfig para convertir el formato kubeconfig manualmente.

Para más información, puede consultar Problemas conocidos de Azure Kubelogin.

Solución de problemas de acceso

Importante

El paso descrito en esta sección sugiere un método de autenticación alternativo en comparación con la autenticación normal del grupo de Microsoft Entra. Use esta opción solo en caso de emergencia.

Si no tiene acceso de administrador a un grupo de Microsoft Entra válido, puede usar esta solución alternativa. Inicie sesión con una cuenta que sea miembro del rol Administrador de clústeres de Azure Kubernetes Service y conceda al grupo o inquilino credenciales de administrador para acceder al clúster.

Pasos siguientes