Accedere a un server API Servizio Azure Kubernetes (AKS)

Questo articolo illustra le opzioni per la connessione al server API del cluster Servizio Azure Kubernetes (AKS). In un cluster standard di Azure Kubernetes Service (AKS), il server API viene esposto su Internet. In un cluster del servizio Azure Kubernetes privato è possibile connettersi solo al server API da un dispositivo con accesso di rete al cluster privato.

La pianificazione dell'accesso al server API è un'attività giornaliera e il modo in cui si accede al server dipende dallo scenario di distribuzione.

Accesso al server dell'API dell'AKS

Per gestire un cluster AKS, interagisci con il server API relativo. È essenziale limitare l'accesso del server API solo agli utenti necessari. È possibile fornire un accesso granulare integrando il cluster del servizio Azure Kubernetes con Microsoft Entra ID. Gli amministratori possono gestire l'accesso usando il controllo degli accessi in base al ruolo di Azure (Azure RBAC). Possono anche inserire utenti e identità nei gruppi di Microsoft Entra e assegnare ruoli e autorizzazioni appropriati. L'autenticazione di Microsoft Entra è abilitata nei cluster di AKS tramite OpenID Connect. Per altre informazioni, consultare le risorse seguenti:

Annotazioni

È possibile migliorare la sicurezza del cluster del servizio Azure Kubernetes consentendo solo agli intervalli di indirizzi IP autorizzati di accedere al server API.

Azure Protezione DDoS, combinata con le procedure consigliate per la progettazione delle applicazioni, fornisce funzionalità di mitigazione avanzate contro attacchi DDoS (Distributed Denial of Service). Abilitare protezione DDoS in ogni rete virtuale perimetrale.

Accedere a un cluster AKS tramite Internet

Quando si crea un cluster non privato che si risolve nel nome di dominio completo (FQDN) del server API, viene assegnato un indirizzo IP pubblico per impostazione predefinita. È possibile connettersi al cluster usando il portale di Azure o una shell, ad esempio il interfaccia della riga di comando di Azure, PowerShell o il prompt dei comandi.

Annotazioni

È possibile usare il client kubectl da riga di comando kubernetes per connettersi a un cluster tramite Internet.

Azure Cloud Shell

Azure Cloud Shell è una shell incorporata nel portale di Azure. È possibile gestire e connettersi alle risorse di Azure da Cloud Shell come è possibile usare PowerShell o il interfaccia della riga di comando di Azure.

Accedere a un cluster privato AKS

Esistono diversi modi per connettersi a un cluster privato di AKS. La pianificazione dell'accesso è un'attività giornaliera che si basa sulle esigenze e sulle limitazioni dello scenario. È possibile connettersi al cluster privato usando i componenti e i servizi seguenti:

  • Un jump box distribuito in una subnet come postazione di lavoro operativa: Questa configurazione può essere macchine virtuali autonome e persistenti (VM) in un set di disponibilità o Set di scalabilità di macchine virtuali di Azure.

  • Istanze di Azure Container e un client compatibile con OpenSSH: Distribuire un'istanza del contenitore che esegue un server Secure Shell (SSH) e quindi usare il client compatibile con OpenSSH per accedere al contenitore. Questo contenitore funge da jumpbox all'interno della rete per raggiungere il cluster privato.

  • Azure Bastion: Usare Azure Bastion per stabilire un accesso remoto più sicuro basato su browser alle macchine virtuali o ai jump box all'interno della rete virtuale Azure. Con questo accesso, è possibile connettersi in modo più sicuro a endpoint privati come il server API del tuo servizio AKS. Azure Bastion fornisce anche una funzionalità di tunneling client nativa (anteprima) che consente di connettersi direttamente ai cluster privati di Azure Kubernetes Service senza richiedere un jump box.

  • Rete privata virtuale (VPN): Creare una connessione VPN sicura che estende la rete locale o remota nella rete virtuale. Con questa connessione è possibile accedere al cluster privato come se si fosse connessi in locale.

  • Azure ExpressRoute: Usare ExpressRoute per creare una connessione privata dedicata tra la rete locale e Azure. Questa connessione consente di garantire un accesso più sicuro e affidabile al cluster privato senza usare la rete Internet pubblica.

  • Il comando interfaccia della riga di comando di Azure az aks command invoke: Esegui comandi direttamente sul tuo cluster AKS utilizzando l'interfaccia della riga di comando di Azure con il comando . Questo comando interagisce con il cluster senza esporre più endpoint di rete. È anche possibile usare la funzionalità equivalente Esegui comando nel portale di Azure per l'esecuzione dei comandi basata su browser.

  • Cloud Shell istanza distribuita in una subnet connessa al server API per il cluster: Distribuisci Cloud Shell in una subnet collegata al server API del cluster. Questo approccio offre un ambiente della riga di comando gestito più sicuro per gestire il cluster privato.

  • Desktop virtuale Azure: Access Desktop virtuale Azure per usare desktop Windows o Linux come jumpbox per gestire in modo più sicuro il cluster privato da qualsiasi posizione.

Annotazioni

Tutto il traffico verso il server API viene trasmesso tramite Transmission Control Protocol alla porta 443 tramite HTTPS. I gruppi di sicurezza di rete (NSG) o altri firewall di rete devono consentire il traffico dall'origine al FQDN (nome di dominio completo) del server API sulla porta 443 per HTTPS. Le quote di traffico devono essere limitate in modo specifico al nome di dominio completo per il server API del cluster.

Azure Bastion

Azure Bastion è un'offerta PaaS (Platform as a Service) che consente connessioni SECURE Desktop remoto Protocol (RDP) o SSH a una macchina virtuale all'interno della rete virtuale che non richiede un indirizzo IP pubblico nella macchina virtuale. Due approcci principali all'uso di Azure Bastion con i cluster AKS privati sono la connessione tramite un jump box o l'utilizzo del tunneling del client nativo per connettersi direttamente senza un jump box.

Azure Bastion con un jump box

Quando ci si connette a un cluster AKS privato, usare Azure Bastion per accedere a un server di salto nella rete virtuale hub. In alternativa, è possibile usare SSH, RDP o servizi Desktop remoto per controllare in remoto la jump box. Il cluster AKS si trova in una rete spoke, che lo mantiene separato dalla jump box. Il peering di rete virtuale connette le reti hub-spoke. La jump box può risolvere il nome di dominio completo del server API di AKS utilizzando un endpoint privato di Azure, una zona DNS (Domain Name System) privata e un record DNS A. Questa configurazione garantisce che il FQDN (nome di dominio completo) del server API si risolva solo all'interno della rete virtuale. Questa configurazione fornisce una connessione attendibile al cluster AKS privato.

Annotazioni

Per l'accesso continuo al cluster del servizio Azure Kubernetes privato, la disponibilità e la ridondanza dei jumpbox sono fondamentali. Per garantire questa affidabilità, posizionare i jumpbox nei set di disponibilità e usare set di scalabilità di macchine virtuali con poche istanze di macchina virtuale. Per altre informazioni, consultare le risorse seguenti:

diagramma architettura che mostra il percorso del traffico da un utente a un cluster AKS privato. Il traffico passa attraverso Azure Bastion e un jump box.

Scaricare un file di Visio di questa architettura.

Flusso di dati

  1. Un utente tenta di connettersi a una jump box usando Azure Bastion e un browser HTML5 con crittografia Transport Layer Security.

  2. L'utente sceglie dal portale se usare RDP o SSH per connettersi alla jump box.

  3. L'utente accede al jump box attraverso Azure Bastion. Il tentativo di connessione al cluster privato AKS viene effettuato da questo jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata di AKS per risolvere il FQDN del cluster privato.

  4. La rete virtuale dell'hub e la rete virtuale dello spoke comunicano tra loro usando il peering di rete virtuale.

  5. Per raggiungere il cluster privato di AKS, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata, isolata al cluster AKS privato.

  6. Il traffico raggiunge il server API del cluster AKS privato. L'utente può quindi gestire pod, nodi e applicazioni.

Annotazioni

Il nome di dominio completo del cluster privato può essere risolto dall'esterno della rete virtuale se non si disattiva direttamente il nome di dominio completo pubblico in un cluster esistente.

Risolvere i problemi di connessione

Se non è possibile connettersi al cluster privato:

  • Controllare il peering di rete virtuale. Questo meccanismo fornisce connettività da rete a rete tra due reti virtuali. Per consentire il flusso del traffico tra queste due reti, è necessario stabilire il peering di rete virtuale tra di essi. Quando si stabilisce un peering di rete virtuale, viene inserita una rotta nella tabella delle rotte di sistema della rete virtuale. Tale rotta fornisce un percorso per raggiungere lo spazio degli indirizzi destinazione. Per altre informazioni sulla risoluzione dei problemi relativi ai peering di rete virtuale, vedere Creare, modificare o eliminare un peering di rete virtuale.

    Annotazioni

    Non è necessario un peering di rete virtuale se il jump box si trova nella stessa rete virtuale dell'endpoint privato e del cluster AKS privato.

  • Controllare il collegamento alla rete virtuale alla zona DNS privata. I collegamenti di rete virtuale consentono alle macchine virtuali che si trovano all'interno di reti virtuali di connettersi a una zona DNS privata e risolvere i record DNS all'interno della zona. Se non puoi connetterti al tuo cluster AKS privato o non puoi risolvere il nome di dominio completo (FQDN) del cluster privato, verifica se la tua rete virtuale ha un collegamento alla zona DNS privata. Il nome della zona DNS privata deve avere il privatelink.<region>.azmk8s.io formato .

    Per altre informazioni su come risolvere i problemi relativi ai collegamenti di rete virtuale, vedere gli articoli seguenti:

    Annotazioni

    Quando si crea un cluster del servizio Azure Kubernetes privato, viene creata una zona DNS privata con un collegamento di rete virtuale alla rete virtuale che ospita il cluster del servizio Azure Kubernetes privato.

Cliente nativo di Azure Bastion per la trasmissione

È possibile usare il tunneling client nativo per connettersi direttamente ai cluster privati del servizio Azure Kubernetes senza una jump box. Questo approccio supporta l'accesso permanente e a esecuzione prolungata e mantiene gli strumenti client nativi funzionanti dal computer locale.

Importante

Questa funzionalità è in anteprima. Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Microsoft fornisce anteprime così come sono e come disponibili, e non sono incluse negli accordi sul livello di servizio (SLAs) o nella garanzia limitata. Il supporto tecnico offre una copertura parziale e migliore possibile per le anteprime del servizio Azure Kubernetes (AKS), per questo motivo, tali funzionalità non sono adatte per la produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Requisiti

  • Distribuisci Azure Bastion utilizzando lo SKU Standard o Premium.

  • Abilitare il supporto client nativo nelle impostazioni di configurazione Azure Bastion.

  • Assicurarsi di avere il ruolo Lettore nel cluster AKS, nella risorsa Azure Bastion e nella rete virtuale.

Flusso di lavoro di connessione

  1. Recuperare le credenziali per il tuo cluster privato AKS:

    az aks get-credentials --admin --name <AKSClusterName> --resource-group <ResourceGroupName>
    
  2. Apri il tunnel verso il tuo cluster AKS di destinazione:

    az aks bastion --name <AKSClusterName> --resource-group <AKSClusterResourceGroup> --admin --bastion <BastionResourceId>
    
  3. Aggiornare il file kubeconfig in modo che punti al tunnel Azure Bastion:

    export BASTION_PORT=$(ps aux | sed -n 's/.*--port \([0-9]*\).*/\1/p' | head -1)
    sed -i "s|server: https://.*|server: https://localhost:${BASTION_PORT}|" $KUBECONFIG
    
  4. Interagire con il cluster AKS:

    kubectl get nodes
    

Per altre informazioni, vedere Connettersi ai cluster privati di AKS usando Azure Bastion.

Annotazioni

Azure Bastion tunneling client nativo non è supportato per i cluster automatici AKS (Azure Kubernetes Service) o per i cluster con blocco del gruppo di risorse di rete (Network Resource Group - NRG).

Migliorare la sicurezza

Per proteggere i carichi di lavoro di AKS e i jump box, usare l'accesso JIT (Just-In-Time) e una workstation PAW (Privileged Access Workstation). L'accesso JIT fa parte di Microsoft Defender per il cloud. Può contribuire a ridurre al minimo la potenziale superficie di attacco e le vulnerabilità bloccando il traffico in ingresso verso la jump box e consentendo l'accesso solo per un periodo di tempo specificato quando necessario. Dopo la scadenza, l'accesso viene revocato automaticamente. Per ulteriori informazioni, vedere Accesso just-in-time alle macchine.

Le workstation PAW sono dispositivi con protezione avanzata che forniscono sicurezza elevata per gli operatori bloccando vettori di attacco comuni come posta elettronica e esplorazione Web. Per altre informazioni, vedere Proteggere i dispositivi come parte della storia di accesso con privilegi.

VPN

Una connessione VPN offre connettività ibrida dall'ambiente locale a Azure. Questa connettività consente l'accesso a un cluster del servizio Azure Kubernetes privato. Il server API del cluster privato non è raggiungibile all'esterno delle reti virtuali. Con una VPN è possibile connettersi alla rete virtuale in Azure tramite un tunnel crittografato, accedere alla jump box e quindi connettersi al server API del cluster privato.

Diagramma dell'architettura che mostra il flusso del traffico da un utente a un cluster AKS privato. La route include un gateway VPN, un tunnel IPsec (Internet Protocol Security) e un jump box.

Scaricare un file di Visio di questa architettura.

Flusso di dati

  1. Un utente avvia il traffico RDP o SSH verso la jump box da una workstation locale.

  2. Il traffico del jump box lascia i router edge del cliente e l'appliance VPN. Il traffico usa un tunnel IPsec (Internet Protocol Security) crittografato per attraversare Internet.

  3. Il traffico del jump box raggiunge il gateway della rete virtuale in Azure, che funge sia da punto di ingresso che da punto di uscita per l'infrastruttura di rete virtuale di Azure.

  4. Dopo che il traffico supera il gateway di rete virtuale, raggiunge la jump box. Il tentativo di connettersi al cluster privato AKS viene eseguito dal jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata di AKS per risolvere il FQDN del cluster privato.

  5. La rete virtuale hub e la rete virtuale spoke comunicano tra loro usando un peering di rete virtuale.

  6. Per raggiungere il cluster privato di AKS, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata, isolata al cluster AKS privato.

  7. Il traffico raggiunge il server API del cluster AKS privato. L'utente può quindi gestire pod, nodi e applicazioni.

ExpressRoute

ExpressRoute offre connettività al cluster privato di AKS da un ambiente on-premises. ExpressRoute usa Border Gateway Protocol (BGP) per scambiare route tra la rete locale e Azure. Questa connessione crea un percorso sicuro tra le risorse IaaS (Infrastructure as a Service) e le workstation locali. ExpressRoute offre una connessione dedicata isolata con larghezza di banda e latenza coerenti, che lo rende ideale per gli ambienti aziendali.

Diagramma dell'architettura che mostra il percorso del traffico da un utente a un cluster privato di Azure Kubernetes Service (AKS). Il percorso include ExpressRoute e un jump box.

Scaricare un file di Visio di questa architettura.

Flusso di dati

  1. Un utente avvia il traffico RDP o SSH verso la jump box da una workstation locale.

  2. Il traffico jump box lascia i router perimetrali del cliente e viaggia su una connessione in fibra fino al punto di interconnessione in cui risiede il circuito ExpressRoute. Il traffico raggiunge i dispositivi Microsoft Enterprise Edge (MSEE). Quindi entra nel tessuto Azure.

  3. Il traffico jump box raggiunge il gateway ExpressRoute, che è sia il punto di ingresso che quello in uscita dell'infrastruttura di rete virtuale Azure.

  4. Il traffico raggiunge il jump box. Il tentativo di connettersi al cluster privato AKS viene eseguito dal jump box. La rete virtuale hub ha un collegamento di rete virtuale alla zona DNS privata di AKS per risolvere il FQDN del cluster privato.

  5. La rete virtuale hub e la rete virtuale spoke comunicano tra loro usando un peering di rete virtuale.

  6. Per raggiungere il cluster privato di AKS, il traffico entra nel backbone di Azure. Un endpoint privato stabilisce una connessione privata, isolata al cluster AKS privato.

  7. Il traffico raggiunge il server API del cluster AKS privato. L'utente può quindi gestire pod, nodi e applicazioni.

Annotazioni

ExpressRoute richiede un provider di connettività non Microsoft per fornire una connessione di peering ai router MSEE. Il traffico di ExpressRoute non è crittografato.

Eseguire il comando aks invoke

Con un cluster privato di AKS (Azure Kubernetes Service), è possibile connettersi da una VM che ha accesso al server API. Usare il comando interfaccia della riga di comando di Azure aks command invoke per eseguire comandi come kubectl o helm in remoto tramite l'API di Azure. Questo approccio crea un pod transitorio nel cluster, che dura solo durante il comando. Il aks command invoke comando funge da metodo di connessione alternativo se manca una rete virtuale VPN, ExpressRoute o con peering. Assicurarsi che il cluster e il pool di nodi dispongano di risorse sufficienti per creare il pod temporaneo.

Comando 'Esegui' del portale

Il portale di Azure fornisce un comando Run che usa la stessa funzionalità command invoke sottostante. È possibile usare questa interfaccia basata su browser per eseguire comandi nel cluster privato senza il interfaccia della riga di comando di Azure. Il pod creato dal comando Run include kubectl e helm per le operazioni del cluster, insieme a jq, xargs, grep, e awk per il supporto Bash.

È anche possibile usare Microsoft Copilot in Azure per eseguire comandi kubectl. Per altre informazioni, vedere Lavora con i cluster AKS di Azure in modo efficiente usando Copilot in Azure.

Connettere Cloud Shell a una subnet

Quando si distribuisce Cloud Shell in una rete virtuale che si controlla, è possibile interagire con le risorse all'interno di tale rete. La distribuzione di Cloud Shell in una subnet che gestisci consente la connettività al server API di un cluster AKS privato. Con questa distribuzione è possibile connettersi direttamente al cluster privato. Per altre informazioni, vedere Deploy Cloud Shell in una rete virtuale Azure.

Annotazioni

Cloud Shell non è supportato quando distribuito in una rete virtuale né per cluster automatici di AKS né per cluster con blocco NRG.

Usare SSH e Visual Studio Code per i test

SSH gestisce e accede in modo sicuro ai file in un host remoto usando coppie di chiavi pubbliche-private. Dal computer locale è possibile usare SSH con l'estensione Visual Studio Code Remote - SSH per connettersi a una jump box nella rete virtuale. Il tunnel SSH crittografato termina all'indirizzo IP pubblico della jump box, semplificando la modifica dei file manifesto di Kubernetes.

Per informazioni su come connettersi alla jump box tramite SSH, vedere Sviluppo remoto tramite SSH.

Se non è possibile connettersi alla macchina virtuale tramite SSH per gestire il cluster privato:

  • Controllare la regola del gruppo di sicurezza di rete in ingresso per la subnet della macchina virtuale. La regola predefinita del NSG blocca tutto il traffico in ingresso da fuori Azure, quindi creare una nuova regola che consenta il traffico SSH dall'indirizzo IP pubblico del computer locale.

  • Controllare l'ubicazione del certificato e verificare la corretta posizione dei certificati. Assicurarsi che la chiave privata si trovi nella directory C:\Users\User\.ssh\id_rsa nel computer locale e che la chiave pubblica si trovi nel file ~/.ssh/id_rsa.pub nella macchina virtuale in Azure.

Annotazioni

Ti consigliamo di:

  • Evitare di usare un indirizzo IP pubblico per connettersi alle risorse negli ambienti di produzione. Usare solo indirizzi IP pubblici in ambienti di sviluppo o test. In questi scenari, crea una regola NSG in entrata per consentire il traffico dall'indirizzo IP pubblico del tuo computer locale. Per altre informazioni sulle regole del gruppo di sicurezza di rete, vedere Creare, modificare o eliminare un gruppo di sicurezza di rete.

  • Evitare di usare SSH per connettersi direttamente ai nodi o ai contenitori del servizio Azure Kubernetes. Usare invece una soluzione di gestione esterna dedicata. Questa procedura è particolarmente importante quando si usa il aks command invoke comando , che crea un pod temporaneo all'interno del cluster per l'accesso proxy.

Conclusione

  • È possibile accedere al server API del cluster AKS tramite Internet se è abilitato il FQDN pubblico.

  • Cloud Shell è una shell della riga di comando integrata nel portale di Azure che è possibile usare per connettersi a un cluster AKS.

  • Per un accesso più sicuro, usare Azure Bastion con un jump box o un tunneling client nativo.

  • VPN ed ExpressRoute forniscono connettività ibrida al cluster del servizio Azure Kubernetes privato.

  • Se non è disponibile alcuna soluzione di connettività esterna, è possibile usare aks command invoke da remoto o la funzionalità di comando Esegui nel portale.

  • È possibile distribuire Cloud Shell direttamente in una rete virtuale gestita per accedere al cluster privato.

  • È possibile usare Visual Studio Code con SSH in una jump box per crittografare la connessione e semplificare la modifica del file manifesto. Tuttavia, questo approccio espone un indirizzo IP pubblico nell'ambiente.

Contributors

Microsoft gestisce questo articolo. I seguenti collaboratori hanno scritto questo articolo.

Autori principali:

Altri contributori:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi