Condividi tramite


Panoramica degli spazi dei nomi gestiti in Azure Kubernetes Service (AKS)

Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard

Quando si gestiscono i cluster nel servizio Azure Kubernetes, spesso è necessario isolare team e carichi di lavoro. Con l'isolamento logico, è possibile usare un singolo cluster AKS per più carichi di lavoro, team o ambienti. Gli spazi dei nomi Kubernetes costituiscono il limite di isolamento logico per carichi di lavoro e risorse. L'esecuzione dell'isolamento logico comporta l'implementazione di script e processi per creare spazi dei nomi, impostare i limiti delle risorse, applicare criteri di rete e concedere l'accesso al team tramite il controllo degli accessi in base al ruolo. Informazioni su come usare gli spazi dei nomi gestiti nel servizio Azure Kubernetes per semplificare la gestione degli spazi dei nomi, il multi-tenancy del cluster e l'isolamento delle risorse.

La separazione logica dei cluster offre in genere una densità di pod superiore rispetto ai cluster fisicamente isolati, con meno capacità di calcolo in eccesso inattiva nel cluster. In combinazione con il ridimensionamento automatico del cluster o il provisioning automatico dei nodi, è possibile aumentare o ridurre il numero di nodi per soddisfare le esigenze. Questo approccio consigliato riduce al minimo i costi eseguendo solo il numero di nodi richiesto.

Criteri di rete

I criteri di rete sono risorse Kubernetes che è possibile usare per controllare il flusso di traffico tra pod, spazi dei nomi ed endpoint esterni. I criteri di rete consentono di definire regole per il traffico in ingresso e in uscita, assicurando che sia consentita solo la comunicazione autorizzata. Applicando i criteri di rete, è possibile migliorare la sicurezza e l'isolamento dei carichi di lavoro all'interno del cluster.

Annotazioni

La regola predefinita dei criteri di rete in ingresso di Consenti lo stesso spazio dei nomi opta per una posizione sicura per impostazione predefinita. Se è necessario che i servizi Kubernetes, i dati in ingresso o i gateway siano accessibili dall'esterno dello spazio dei nomi in cui vengono distribuiti, ad esempio da un controller in ingresso distribuito in uno spazio dei nomi separato, è necessario selezionare Consenti tutto. È quindi possibile applicare criteri di rete personalizzati per limitare l'ingresso solo da tale spazio dei nomi.

Gli spazi dei nomi gestiti sono dotati di un set di criteri predefiniti.

  • Consenti tutto: consente tutto il traffico di rete.
  • Consenti lo stesso spazio dei nomi: consente tutto il traffico di rete all'interno dello stesso spazio dei nomi.
  • Nega tutto: nega tutto il traffico di rete.

È possibile applicare uno qualsiasi dei criteri predefiniti per le regole in ingresso e in uscita, e hanno i valori predefiniti seguenti.

Politica Valore predefinito
Dati in ingresso Consenti lo stesso spazio dei nomi
Egress Consenti tutto

Annotazioni

Gli utenti con un'azione Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write, come Azure Kubernetes Service RBAC Writer, con il ruolo Microsoft Entra ID assegnato possono aggiungere altri criteri di rete tramite l'API Kubernetes.

Ad esempio, se un amministratore applica una Deny All policy per l'ingresso/uscita e un utente applica una Allow policy per uno spazio dei nomi tramite l'API Kubernetes, la Allow policy ha la priorità sulla Deny All policy e il traffico può fluire nello spazio dei nomi.

Quote di risorse

Le quote di risorse sono risorse Kubernetes usate per gestire e limitare l'utilizzo delle risorse degli spazi dei nomi all'interno di un cluster. Consentono agli amministratori di definire vincoli sulla quantità di CPU, memoria, archiviazione o altre risorse usate dai carichi di lavoro in uno spazio dei nomi. Applicando quote di risorse, è possibile garantire una distribuzione equa delle risorse, evitare l'uso eccessivo delle risorse e mantenere la stabilità del cluster.

Gli spazi dei nomi gestiti possono essere creati con le quote di risorse seguenti:

  • Richieste e limiti della CPU: definire la quantità minima e massima di risorse CPU che i carichi di lavoro nello spazio dei nomi possono richiedere o utilizzare. La quota garantisce che i carichi di lavoro dispongano di risorse CPU sufficienti per funzionare evitando l'uso eccessivo che potrebbe influire su altri spazi dei nomi. La quota viene definita nel formato milliCPU.
  • Richieste e limiti di memoria: specificare la quantità minima e massima di risorse di memoria che i carichi di lavoro nello spazio dei nomi possono richiedere o utilizzare. La quota consente di mantenere la stabilità evitando l'overcommit della memoria e garantendo un'allocazione equa delle risorse tra gli spazi dei nomi. La quota è definita nel formato power-of-two equivalenti, ad esempio Ei, Pi, Ti, Gi, Mi, Ki.

Etichette e annotazioni

Le etichette e le annotazioni Kubernetes sono metadati associati a oggetti Kubernetes, ad esempio spazi dei nomi, per fornire informazioni aggiuntive. Le etichette sono coppie chiave-valore usate per organizzare e selezionare le risorse, consentendo un raggruppamento efficiente e l'esecuzione di query. Le annotazioni archiviano metadati non identificativi, ad esempio dettagli di configurazione o istruzioni operative, consumati da strumenti o sistemi.

Facoltativamente, è possibile impostare etichette e annotazioni Kubernetes da applicare nello spazio dei nomi.

Criterio di adozione

I criteri di adozione determinano come viene gestito uno spazio dei nomi esistente in Kubernetes durante la creazione di uno spazio dei nomi gestito.

Avvertimento

L'adozione di uno spazio dei nomi esistente da gestire può causare interruzioni. Se la quota di risorse applicata è inferiore a quella già richiesta dai pod, vengono negate nuove distribuzioni e pod che superano la quota. Le distribuzioni esistenti non sono interessate, ma il ridimensionamento viene negato. L'applicazione di criteri di rete a uno spazio dei nomi esistente può influire sul traffico esistente. Assicurarsi che i criteri vengano testati e convalidati per evitare interruzioni impreviste della comunicazione tra pod o endpoint esterni.

Sono disponibili le opzioni seguenti:

  • Mai: se lo spazio dei nomi esiste già nel cluster, i tentativi di creare tale spazio dei nomi come spazio dei nomi gestito non riescono.
  • Se identico: sostituire lo spazio dei nomi esistente da gestire, purché non esistano differenze tra lo spazio dei nomi esistente e la configurazione desiderata.
  • Sempre: assumere sempre il controllo dello spazio dei nomi esistente da gestire, anche se alcuni campi nello spazio dei nomi potrebbero essere sovrascritti.

Elimina criteri

Il criterio di eliminazione specifica come viene gestito lo spazio dei nomi Kubernetes quando viene eliminata la risorsa dello spazio dei nomi gestito.

Avvertimento

L'eliminazione di uno spazio dei nomi gestito con il criterio Elimina comporta l'eliminazione di tutte le risorse all'interno di tale spazio dei nomi, ad esempio distribuzioni, servizi, ingressi e altri oggetti Kubernetes. Assicurarsi di eseguire il backup o la migrazione di tutte le risorse critiche prima di procedere.

Sono disponibili le opzioni seguenti:

  • Mantieni: elimina solo la risorsa dello spazio dei nomi gestito mantenendo intatto lo spazio dei nomi Kubernetes. Inoltre, l'etichetta ManagedByARM viene rimossa dallo spazio dei nomi.
  • Elimina: eliminare sia la risorsa dello spazio dei nomi gestito che lo spazio dei nomi Kubernetes insieme.

Ruoli predefiniti degli spazi dei nomi gestiti

Gli spazi dei nomi gestiti usano i ruoli predefiniti seguenti per il piano di controllo.

Ruolo Descrizione
Collaboratore dello spazio dei nomi del servizio Azure Kubernetes Consente l'accesso per creare, aggiornare ed eliminare spazi dei nomi gestiti in un cluster.
Utente dello spazio dei nomi del servizio Azure Kubernetes Consente l'accesso in sola lettura a uno spazio dei nomi gestito in un cluster. Consente l'accesso all'elenco delle credenziali nello spazio dei nomi.

Gli spazi dei nomi gestiti usano i ruoli predefiniti seguenti per il piano dati.

Ruolo Descrizione
Lettore del controllo degli accessi in base al ruolo del servizio Azure Kubernetes Consente l'accesso in sola lettura per visualizzare la maggior parte degli oggetti in un namespace. Non consente la visualizzazione di ruoli o associazioni di ruolo. Questo ruolo non consente la visualizzazione di segreti, poiché la lettura del contenuto dei segreti consente l'accesso alle credenziali ServiceAccount nello spazio dei nomi, che consente l'accesso API come qualsiasi ServiceAccount nello spazio dei nomi, una forma di escalation dei privilegi.
Writer del controllo degli accessi in base al ruolo del servizio Azure Kubernetes Consente l'accesso in lettura e scrittura alla maggior parte degli oggetti in un namespace. Questo ruolo non consente la visualizzazione o la modifica di ruoli o associazioni di ruoli. Tuttavia, questo ruolo consente l'accesso ai segreti e l'esecuzione di pod come qualsiasi ServiceAccount nello spazio dei nomi, in modo che possa essere usato per ottenere i livelli di accesso API di qualsiasi ServiceAccount nello spazio dei nomi.
Amministratore del controllo degli accessi in base al ruolo del servizio Azure Kubernetes Consente l'accesso in lettura/scrittura alla maggior parte delle risorse in uno spazio dei nomi, inclusa la possibilità di creare ruoli e associazioni di ruolo all'interno dello spazio dei nomi. Questo ruolo non consente l'accesso in scrittura alla quota di risorse o allo spazio dei nomi stesso.

Casi d'uso degli spazi dei nomi gestiti

La corretta configurazione degli spazi dei nomi con quote o criteri di rete associati può essere complessa e richiedere molto tempo. Gli spazi dei nomi gestiti consentono di configurare spazi dei nomi preconfigurati nei cluster AKS, con cui è possibile interagire usando l'interfaccia della riga di comando di Azure.

Le sezioni seguenti illustrano alcuni casi d'uso comuni per gli spazi dei nomi gestiti.

Gestire team e risorse del servizio Azure Kubernetes

Si supponga di essere un amministratore in una piccola startup. È stato effettuato il provisioning di un cluster del servizio Azure Kubernetes e si vogliono configurare gli spazi dei nomi per gli sviluppatori dei team finanza, legale e progettazione. Quando si configura l'ambiente aziendale, si vuole assicurarsi che l'accesso sia strettamente controllato, che le risorse siano correttamente limitate e che gli ambienti siano organizzati correttamente.

  • Il team finanziario riceve moduli e file da team in tutta l'azienda, ma questi contengono informazioni riservate che non dovrebbero, idealmente, uscire dal loro ambiente. Le applicazioni e i flussi di lavoro sono più leggeri sul lato elaborazione, ma usano molta memoria. Di conseguenza, si decide di configurare uno spazio dei nomi che consenta l'ingresso di rete, l'uscita di rete solo all'interno dello spazio dei nomi e definire l'ambito delle risorse di conseguenza. Un'etichetta dello spazio dei nomi consente di identificare facilmente il team che lo usa.

    az aks namespace add \
       --name $FINANCE_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 512Mi \
       --memory-limit 2Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowSameNamespace \
       --labels team=finance
    
  • Il team legale si occupa principalmente dei dati sensibili. Le applicazioni usano una quantità equa di memoria, ma richiedono poche risorse di calcolo. Si decide di configurare uno spazio dei nomi estremamente restrittivo per i criteri di ingresso/uscita e definire di conseguenza l'ambito delle quote delle risorse.

    az aks namespace add \
       --name $LEGAL_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 2Gi \
       --memory-limit 5Gi \
       --ingress-policy DenyAll \
       --egress-policy DenyAll \
       --labels team=legal
    
  • Il team di progettazione ha bisogno della possibilità di scorrere liberamente i dati per mostrare il proprio lavoro in tutta l'azienda. Incoraggiano anche i team a inviarli contenuti per riferimento. Le applicazioni richiedono un elevato numero di memoria e CPU. Decidi di configurarli con uno spazio dei nomi minimamente restrittivo e allocare loro una quantità significativa di risorse.

    az aks namespace add \
       --name $DESIGN_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 2000m \
       --cpu-limit 2500m \
       --memory-request 5Gi \
       --memory-limit 8Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowAll \
       --labels team=design
    

Con questi spazi dei nomi configurati, sono ora disponibili ambienti per i tre team dell'organizzazione che devono consentire a ogni team di essere operativo in un ambiente più adatto alle proprie esigenze. Gli amministratori possono usare le chiamate di Azure CLI per aggiornare gli spazi dei nomi in base alle esigenze.

Visualizza gli spazi dei nomi gestiti

Man mano che aumenta il numero di team con cui si ha a che fare, o cresce l'organizzazione, potrebbe essere necessario rivedere gli spazi dei nomi che sono stati configurati.

Supponiamo di voler esaminare i namespace nel cluster dalla sezione precedente per verificare che siano presenti tre namespace.

Usare il comando az aks namespace list per esaminare gli spazi dei nomi.

az aks namespace list \
  --cluster-name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --output table

L'output dovrebbe essere simile all'esempio di output seguente:

Name                               ResourceGroup    Location
------------------                 ---------------  ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE    $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE     $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE   $RESOURCE_GROUP  <LOCATION>

Controllare l'accesso agli spazi dei nomi gestiti

È anche possibile usare i ruoli di controllo degli accessi in base al ruolo di Azure , specificati per ogni spazio dei nomi, per determinare quali utenti hanno accesso a determinate azioni all'interno dello spazio dei nomi. Con la configurazione corretta, è possibile assicurarsi che gli utenti abbiano tutto l'accesso necessario all'interno dello spazio dei nomi, limitando al contempo l'accesso ad altri spazi dei nomi o risorse a livello di cluster.

Passaggi successivi