Usare la funzionalità di connessione cluster per connettersi in modo sicuro ai cluster Kubernetes abilitati per Azure Arc
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, fare riferimento alla panoramica dei concetti della funzionalità di connessione cluster.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Un cluster connesso Kubernetes esistente abilitato per Azure Arc.
- Se non è ancora stato connesso un cluster, usare la guida introduttiva.
- Aggiornare gli agenti all'ultima versione.
Abilitare i requisiti di rete per Kubernetes abilitato per Azure Arc
Abilitare questi endpoint per l'accesso in uscita:
Endpoint Porta *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Nota
Per convertire il carattere jolly
*.servicebus.windows.net
in endpoint specifici, usare il comando\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. All'interno di questo comando, l'area deve essere specificata per il segnaposto<location>
.
Per ottenere il segmento relativo all'area dell'endpoint a livello di area, rimuovere tutti gli spazi dal nome dell'area di Azure. Ad esempio, per l'area Stati Uniti orientali 2 , il nome dell'area è eastus2
.
Ad esempio: *.<region>.arcdataservices.com
dovrebbe essere *.eastus2.arcdataservices.com
nell'area Stati Uniti orientali 2.
Per visualizzare un elenco di tutte le aree, eseguire questo comando:
az account list-locations -o table
Get-AzLocation | Format-Table
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 usate 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)
Configurazione dell'autenticazione
Nel cluster abilitato per Azure Arc esistente creare l'oggetto ClusterRoleBinding con l'autenticazione Microsoft Entra o il token dell'account del servizio.
Opzione di autenticazione Microsoft Entra
Ottenere l'oggetto
objectId
associato all'entità Microsoft Entra. Se si usa un singolo account utente, ottenere il nome dell'entità utente (UPN) associato all'entità Microsoft Entra.- Per un account del gruppo 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 usa 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à Microsoft Entra (entità servizio o utente) che deve accedere a questo cluster. Ad esempio:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Se si usa 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à 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 dell'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 ClusterRoleBinding per concedere a questo account del servizio le autorizzazioni appropriate per il cluster. Se nel primo comando è stato usato 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 usando l'autenticazione Microsoft Entra o l'autenticazione del token dell'account del servizio.
Ottenere l'oggetto
kubeconfig
della funzionalità di connessione cluster necessario per comunicare con il cluster da qualsiasi posizione (anche dall'esterno del firewall che protegge il cluster), in base all'opzione di autenticazione usata:Se si usa l'autenticazione Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Se si usa l'autenticazione del token dell'account del servizio:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Nota
Questo comando aprirà il proxy e bloccherà la shell corrente.
In una sessione diversa della shell, usare
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
Usare az connectedk8s show
per controllare la versione dell'agente Kubernetes abilitato per Azure Arc.
Quando si effettuano richieste al cluster Kubernetes, se l'entità Microsoft Entra usata fa parte di più di 200 gruppi, potrebbe essere visualizzato l'errore seguente:
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.
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.