Uso de Conexión de clúster para conectarse de manera segura a clústeres de Kubernetes habilitados para Azure Arc
Con Conexión de clústeres, puede conectarse de manera segura a los 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 apiserver
del clúster de Kubernetes habilitado para Azure Arc habilita los siguientes escenarios:
- Depuración interactiva y solución de problemas.
- Acceso de clúster a los servicios de Azure para ubicaciones personalizadas y otros recursos creados en él.
Antes de comenzar, revise la información general conceptual de la característica de conexión del clúster.
Requisitos previos
Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
Un clúster conectado de Kubernetes habilitado para Azure Arc.
- Si no ha conectado aún un clúster, use nuestro inicio rápido.
- Actualice los agentes a la versión más reciente.
Revise los requisitos de red para usar Kubernetes habilitado para Arc.
Habilite estos puntos de conexión para el acceso saliente:
Punto de conexión Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Nota:
Para convertir el carácter comodín
*.servicebus.windows.net
en puntos de conexión específicos, use el comando\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. En este comando se debe especificar la región del marcador de posición<location>
.
Para obtener el segmento de región de un punto de conexión regional, quite todos los espacios del nombre de la región de Azure. Por ejemplo, en la región Este de EE. UU. 2, el nombre de la región es eastus2
.
Por ejemplo: *.<region>.arcdataservices.com
debe ser *.eastus2.arcdataservices.com
en la región Este de EE. UU. 2.
Para ver una lista de todas las regiones, ejecute este comando:
az account list-locations -o table
Get-AzLocation | Format-Table
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 connectedk8s
Si ya ha instalado la extensión
connectedk8s
, actualícela a la versión más reciente:az extension update --name connectedk8s
Reemplace los marcadores de posición y ejecute el siguiente comando para establecer las variables de entorno que se usan en este documento:
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 habilitado para Arc existente, cree el ClusterRoleBinding con la autenticación de Microsoft Entra o un token de cuenta de servicio.
Opción de autenticación de Microsoft Entra
Obtenga el
objectId
asociado a la entidad de Microsoft Entra. Si usa una sola cuenta de usuario, obtenga el nombre principal de usuario (UPN) asociado a la entidad de Microsoft Entra.- Para una cuenta de grupo de Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --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 a la entidad con los permisos adecuados.
Si usa los objetos ClusterRoleBinding o RoleBinding nativos de Kubernetes para las comprobaciones de autorización en el clúster y el archivo
kubeconfig
apunta alapiserver
del clúster para el acceso directo, puede crear uno asignado a la entidad de Microsoft Entra (entidad de servicio o usuario) que necesita acceder a este clúster. Por ejemplo:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Si usa Azure RBAC para realizar las comprobaciones de autorización en el clúster, puede crear una asignación de roles de Azure aplicable que esté asignada a la entidad de Microsoft Entra. 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
Opción de autenticación de token de cuenta de servicio
Con el archivo
kubeconfig
que apunta alapiserver
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 default
Cree 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-user
Cree 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 EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
Obtención del token que se va a generar en la consola
echo $TOKEN
Acceso al clúster desde un dispositivo cliente
Ahora puede acceder al clúster desde otro cliente. Ejecute los siguientes pasos en otro dispositivo cliente.
Inicie sesión con la autenticación de Microsoft Entra o la autenticación de token de cuenta de servicio.
Obtenga el archivo
kubeconfig
de conexión de clúster necesaria para comunicarse con el clúster desde cualquier lugar (incluso desde fuera del firewall que protege al clúster), en función de la opción de autenticación que se usa:Si usa la autenticación de Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Si usa la autenticación de token de cuenta de servicio:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Nota:
Este comando abrirá el proxy y bloqueará el shell actual.
En otra sesión de shell, use
kubectl
para enviar solicitudes al clúster:kubectl get pods -A
Ahora debería mostrarse una respuesta del clúster que contiene la lista de todos los pods en el espacio de nombres default
.
Limitaciones conocidas
Use az connectedk8s show
para comprobar la versión del agente de Kubernetes habilitada para Arc.
Al realizar solicitudes al clúster de Kubernetes, si la entidad Microsoft Entra usada forma parte de más de 200 grupos, es posible que vea el siguiente error:
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
Es una limitación conocida. Para eludir este error:
- Cree una entidad de servicio. Es menos probable que una de estas 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 RBAC de Microsoft Entra en los clústeres.
- Implementación y administración de extensiones de clúster.