Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con la conexión de clúster, puede conectarse de forma segura a clústeres de Kubernetes habilitados para Azure Arc desde cualquier lugar sin necesidad de habilitar ningún puerto de entrada en el firewall.
El acceso al servidor de API del clúster de Kubernetes habilitado para Azure Arc permite los escenarios siguientes:
- Depuración interactiva y solución de problemas.
- Acceso del clúster a los servicios de Azure para ubicaciones personalizadas y otros recursos creados en el clúster.
Antes de empezar, revise la información general conceptual de la característica de conexión de clústeres.
Requisitos previos
Una cuenta de Azure con una suscripción activa. Crear una cuenta gratuita.
Un clúster conectado de Kubernetes habilitado para Azure Arc.
- Si aún no ha conectado un clúster, use el inicio rápido.
- Actualizar los agentes a la última versión.
Habilite los requisitos de red para Kubernetes habilitado para Arc, incluidos todos los puntos de conexión enumerados como necesarios para la conexión del clúster.
Instale o actualice la CLI de Azure para tener la versión más reciente.
Instale la versión más reciente de la extensión de la CLI de Azure
connectedk8s:az extension add --name connectedk8sSi ya ha instalado la extensión
connectedk8s, actualice la extensión a la versión más reciente:az extension update --name connectedk8sReemplace los marcadores de posición y ejecute el siguiente comando para establecer las variables de entorno:
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
Configuración de la autenticación
En el clúster existente habilitado para Arc, cree el ClusterRoleBinding mediante autenticación de Microsoft Entra ID o un token de la cuenta de servicio.
Autenticación de Microsoft Entra ID
Obtenga el
objectIdasociado con su entidad de Microsoft Entra ID. Para las cuentas de usuario únicas, obtenga el nombre principal de usuario (UPN) asociado a la entidad Microsoft Entra ID.Para una cuenta de grupo de Microsoft Entra:
AAD_ENTITY_ID=$(az ad group show --group <group-name> --query id -o tsv)Para una cuenta de usuario única de Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)Para una aplicación de Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorice la entidad con los permisos adecuados.
Si usa un ClusterRoleBinding nativo de Kubernetes o un RoleBinding para realizar comprobaciones de autorización en el clúster, con el archivo
kubeconfigque apunta al servidor de la API de Kubernetes (kube-apiserver) de su clúster para acceder directamente, puede crear uno vinculado a la entidad de Microsoft Entra ID que necesite acceder a este clúster. Por ejemplo:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_IDSi usa Azure RBAC para las comprobaciones de autorización en el clúster, puede crear una asignación de roles de Azure aplicable asociada a la entidad de Microsoft Entra ID. Por ejemplo:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Autenticación de token de cuenta de servicio
Nota
Los comandos de esta pestaña asumen un shell compatible con Bash (Linux, macOS o Subsistema de Windows para Linux). Para Windows PowerShell, use la pestaña Azure PowerShell.
Con el
kubeconfigarchivo que apunta al servidor de API de Kubernetes (kube-apiserver) del clúster de Kubernetes, ejecute este comando para crear una cuenta de servicio. En este ejemplo se crea la cuenta de servicio en el espacio de nombres predeterminado, pero puede sustituir cualquier otro espacio de nombres pordefault.kubectl create serviceaccount demo-user -n defaultCree un ClusterRoleBinding para conceder a esta cuenta de servicio los permisos adecuados en el clúster. Si usó un espacio de nombres diferente en el primer comando, sustituya aquí por
default.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-userCree un token de cuenta de servicio:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOFTOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')Genera el token en la consola:
echo $TOKEN
Acceso al clúster desde un dispositivo cliente
Después de configurar la autenticación en el clúster, siga estos pasos desde cualquier dispositivo cliente para abrir un proxy de conexión de clúster y ejecutar comandos kubectl en el clúster de Kubernetes habilitado para Azure Arc.
Inicie sesión mediante la autenticación de Microsoft Entra ID o la autenticación mediante token de cuenta de servicio.
Obtenga la conexión
kubeconfigdel clúster que usa para comunicarse con el clúster desde cualquier lugar (incluso fuera del firewall), en función de la opción de autenticación:Para la autenticación de Microsoft Entra ID:
# Microsoft Entra ID authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUPPara la autenticación de token de cuenta de servicio:
# Service account token authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKENNota
Este comando abre el proxy y bloquea el shell actual.
En otra sesión de shell, use
kubectlpara enviar solicitudes al clúster. Por ejemplo, ejecute el siguiente comando:kubectl get pods -n default
Si la conexión funciona correctamente, la respuesta enumera todos los pods del default espacio de nombres.
Restricciones conocidas
La siguiente limitación se aplica cuando se usa la conexión de clúster para acceder a un clúster de Kubernetes habilitado para Azure Arc.
Si inicia sesión en CLI de Azure con una entidad de servicio de Microsoft Entra ID antes de ejecutar az connectedk8s proxy y esa entidad de servicio es miembro de más de 200 grupos, es posible que vea el siguiente error:
Overage claim (users with more than 200 group membership) for SPN is currently not supported. For troubleshooting, please refer to aka.ms/overageclaimtroubleshoot
Para solucionar esta limitación:
- Cree una entidad de servicio, que es menos probable que sea miembro de más de 200 grupos.
-
Inicie sesión en la CLI de Azure con la entidad de servicio antes de ejecutar el comando
az connectedk8s proxy.
Pasos siguientes
- Configure Microsoft Entra ID RBAC en sus clústeres.
- Implementación y administración de extensiones de clúster.
- Ayude a proteger el clúster de otras maneras siguiendo las instrucciones del libro de seguridad de Kubernetes habilitado para Azure Arc.