Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Con la funzionalità di connessione cluster, è possibile connettersi in modo sicuro ai cluster Kubernetes abilitati per Azure Arc da qualsiasi posizione senza la necessità di abilitare porte in ingresso a livello di firewall.
L'accesso a apiserver
del cluster Kubernetes abilitato per Azure Arc abilita gli scenari seguenti:
- Debug interattivo e risoluzione dei problemi.
- Accesso del cluster ai servizi di Azure per percorsi personalizzati e le altre risorse create.
Prima di iniziare, rivedere la panoramica dei concetti della funzionalità di connessione cluster.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Un cluster esistente connesso a Kubernetes abilitato per Azure Arc.
- Se non è ancora stato connesso un cluster, utilizzare la guida introduttiva.
- Aggiornare gli agenti alla versione più recente.
Abilitare i requisiti di rete per Kubernetes con abilitazione di Arc, inclusi tutti gli endpoint elencati come necessario per la connessione del cluster.
Installare o aggiornare l'interfaccia della riga di comando di Azure alla versione più recente.
Installare la versione più recente dell'estensione
connectedk8s
dell'interfaccia della riga di comando di Azure:az extension add --name connectedk8s
Se l'estensione
connectedk8s
è già stata installata, aggiornare l'estensione alla versione più recente:az extension update --name connectedk8s
Sostituire i segnaposto ed eseguire il comando seguente per impostare le variabili di ambiente utilizzate in questo 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)
Configurare l'autenticazione
Nel cluster esistente abilitato per Azure Arc creare l'oggetto ClusterRoleBinding con un token di autenticazione o dell'account del servizio di Microsoft Entra.
Opzione di autenticazione con Microsoft Entra
Ottenere l'oggetto
objectId
associato all'entità di Microsoft Entra. Per i singoli account utente, ottenere il nome dell'entità utente (UPN) associato all'entità di Microsoft Entra.Per un account del gruppo di Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Per un singolo account utente Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Per un'applicazione Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorizzare l'entità con le autorizzazioni appropriate.
Se si utilizza l'oggetto ClusterRoleBinding o RoleBinding nativo di Kubernetes per i controlli di autorizzazione nel cluster, con il file
kubeconfig
che punta aapiserver
del cluster per l'accesso diretto, è possibile creare un oggetto mappato all'entità di Microsoft Entra per l'accesso a tale cluster. Ad esempio:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Se si utilizza il controllo degli accessi in base al ruolo di Azure per i controlli di autorizzazione nel cluster, è possibile creare un'assegnazione di ruolo di Azure applicabile mappata all'entità di Microsoft Entra. Ad esempio:
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
Opzione di autenticazione del token con l'account del servizio
Con il file
kubeconfig
che punta all'oggettoapiserver
del cluster Kubernetes, eseguire questo comando per creare un account del servizio. In questo esempio viene creato l'account del servizio nello spazio dei nomi predefinito, ma è possibile sostituire qualsiasi altro spazio dei nomi perdefault
.kubectl create serviceaccount demo-user -n default
Creare un clusterRoleBinding per concedere a questo account del servizio le autorizzazioni appropriate per il cluster. Se nel primo comando è stato utilizzato uno spazio dei nomi diverso, sostituirlo qui per
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Creare un token dell'account del servizio:
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')
Impostare il token in modo che l'output venga restituito nella console
echo $TOKEN
Accedere al cluster da un dispositivo client
È ora possibile accedere al cluster da un client diverso. Eseguire i passaggi seguenti in un altro dispositivo client.
Accedere utilizzando il token di autenticazione o l'account del servizio di Microsoft Entra.
Ottenere la connessione
kubeconfig
del cluster necessaria per comunicare con il cluster ovunque (anche all'esterno del firewall che circonda il cluster), in base all'opzione di autenticazione usata:Per l'autenticazione di Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Per l'autenticazione del token dell'account di servizio:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Nota
Questo comando apre il proxy e blocca la shell corrente.
In una sessione diversa della shell, utilizzare
kubectl
per inviare richieste al cluster:kubectl get pods -A
Verrà visualizzata una risposta dal cluster contenente l'elenco di tutti i pod nello spazio dei nomi default
.
Limitazioni note
Se l'entità servizio di Microsoft Entra utilizzata fa parte di più di 200 gruppi quando si effettuano richieste al cluster Kubernetes, è possibile che venga visualizzato l'errore seguente:
Overage claim (users with more than 200 group membership) for SPN is currently not supported. For troubleshooting, please refer to aka.ms/overageclaimtroubleshoot
Si tratta di una limitazione nota. Per ovviare a questo errore:
- Creare un'entità servizio, in quanto è meno probabile che tale entità appartenga a più di 200 gruppi.
- Accedere all'interfaccia della riga di comando di Azure con l'entità servizio prima di eseguire il comando
az connectedk8s proxy
.
Passaggi successivi
- Configurare il controllo degli accessi in base al ruolo di Microsoft Entra nei cluster.
- Distribuire e gestire le estensioni dei cluster.
- Per proteggere il cluster in altri modi, segui le istruzioni nel libro sulla sicurezza per Kubernetes con Azure Arc.