Configurare i criteri di quota delle risorse del servizio Azure Kubernetes usando Criteri di Azure per Kubernetes

Completato

Criteri di Azure è un servizio che consente di applicare gli standard e di valutare la conformità su larga scala per l'ambiente cloud. Per le aziende, è buona norma implementare regole business per definire il modo in cui i dipendenti possono usare il software, l'hardware e altre risorse aziendali nell'organizzazione. Di conseguenza, le aziende usano criteri per imporre, verificare e definire l'accesso. Un criterio consente a un'organizzazione di soddisfare i requisiti di governance e legali, di implementare le procedure consigliate e di stabilire convenzioni organizzative.

Il servizio Azure Kubernetes consente di orchestrare le applicazioni native del cloud in modo efficiente con i criteri. Ci si rende conto che è necessario imporre regole business per gestire il modo in cui i team usano il servizio Azure Kubernetes per garantire un approccio più conveniente in termini di costi. Si decide di usare Criteri di Azure per applicare la stessa idea alle risorse cloud basate su Azure.

Prima di discutere come usare Criteri di Azure per Kubernetes, è necessario esaminare alcuni concetti aggiuntivi che consentono di abilitare questa funzionalità da Kubernetes.

Che cos'è un controller di ammissione Kubernetes?

Un controller di ammissione è un plug-in Kubernetes che intercetta le richieste autenticate e autorizzate all'API Kubernetes prima della persistenza dell'oggetto Kubernetes richiesto. Si supponga, ad esempio, di distribuire un nuovo carico di lavoro e che la distribuzione includa una richiesta pod con requisiti di memoria specifici. Il controller di ammissione intercetta la richiesta di distribuzione e deve autorizzare la distribuzione prima che venga salvata in modo permanente nel cluster.

Un controller di ammissione è paragonabile a un software che governa e applica le modalità di utilizzo e di progettazione dei cluster. Limita le richieste di creazione, eliminazione e modifica degli oggetti Kubernetes.

Che cos'è un webhook del controller di ammissione?

Un webhook del controller di ammissione è una funzione callback HTTP che riceve le richieste di ammissione e interviene in merito a tali richieste. I controller di ammissione devono essere configurati in fase di esecuzione. Questi controller possono essere costituiti da un plug-in di ammissione compilato o da un'estensione distribuita che viene eseguita come webhook.

I webhook di ammissione sono disponibili in due tipi: webhook di convalida o webhook mutante. Un webhook di modifica viene richiamato per primo e può modificare e applicare le impostazioni predefinite negli oggetti inviati al server API. Un webhook di convalida consente di convalidare i valori degli oggetti e può rifiutare le richieste.

Che cos'è Open Policy Agent (OPA)?

Open Policy Agent (OPA) è un motore di criteri open source per utilizzo generico che fornisce un linguaggio dichiarativo di alto livello per la creazione dei criteri. Questi criteri consentono di definire le regole che controllano il comportamento del sistema.

Che cos'è il gatekeeper OPA?

Il Gatekeeper OPA (Open Policy Agent) è un webhook del controller di ammissione Kubernetes di convalida open source che impone i criteri basati su CRD (Custom Resource Definition) che seguono la sintassi OPA.

L'obiettivo del Gatekeeper OPA è quello di consentire di personalizzare i criteri di ammissione usando la configurazione invece delle regole dei criteri hardcoded per i servizi. Inoltre fornisce una visualizzazione completa del cluster per identificare le risorse che violano i criteri.

È possibile usare il gatekeeper OPA per definire criteri a livello di organizzazione con le regole:

  • Limiti massimi delle risorse, come limiti di CPU e memoria, applicati per tutti i pod configurati.

  • Distribuzione delle immagini consentita solo da repository approvati.

  • La convenzione di denominazione per le etichette per tutti gli spazi dei nomi deve specificare un punto di contatto per ogni spazio dei nomi.

  • Imporre che i servizi del cluster usino selettori univoci a livello globale.

Criteri di Azure per il servizio Azure Kubernetes

Criteri di Azure estende OPA Gatekeeper versione 3 e si integra con il servizio Azure Kubernetes tramite criteri predefiniti. Questi criteri applicano tutele e misure di sicurezza su larga scala al cluster in modo centralizzato e coerente.

I team di sviluppo aziendali vogliono ottimizzare lo sviluppo e introdurre strumenti di sviluppo come DevSpaces per semplificare il flusso di lavoro di sviluppo di Kubernetes. Ci si vuole assicurare che i membri del team rispettino i limiti di risorse specifici per i progetti. Si decide di applicare criteri che definiscono le risorse di calcolo, le risorse di archiviazione e il numero di oggetti consentiti negli spazi dei nomi di sviluppo.

Per impostare i limiti delle risorse, è possibile applicare quote delle risorse a livello di spazio dei nomi e monitorare l'utilizzo delle risorse per modificare le quote dei criteri. Usare questa strategia per riservare e limitare le risorse nel team di sviluppo.

Come abilitare il componente aggiuntivo Criteri di Azure per il servizio Azure Kubernetes

Per registrare la funzionalità del componente aggiuntivo Criteri di Azure per il servizio Azure Kubernetes sono necessari alcuni passaggi. In questo caso verranno forniti esempi, ma verranno effettivamente completati i passaggi nell'unità successiva.

  1. Registrare due provider di risorse usare il comando az provider register:

    • Microsoft.ContainerService e Microsoft.PolicyInsights: Questi provider di risorse supportano azioni quali l'esecuzione di query sugli eventi dei criteri e la gestione dei contenitori. Queste azioni possono inoltre essere usate per eseguire query, creare, aggiornare o eliminare la correzione dei criteri.

    Di seguito è riportato un esempio dei due comandi di registrazione:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Registrare la funzionalità AKS-AzurePolicyAutoApprove con il provider di risorse Microsoft. ContainerService. Di seguito è riportato un esempio del comando:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Dopo aver confermato la registrazione della funzionalità, eseguire il comando az provider register con il parametro --namespace per propagare la registrazione della nuova funzionalità. Di seguito è riportato un esempio del comando:

    az provider register -n Microsoft.ContainerService
    
  4. Abilitare il componente aggiuntivo Criteri di Azure:

    az aks enable-addons \
        --addons azure-policy \
        --name myAKSCluster \
        --resource-group myResourceGroup
    

    Attivando il componente aggiuntivo, i carichi di lavoro verranno pianificati in due spazi dei nomi nel cluster. Il primo spazio dei nomi è kube-system, che contiene azure-policy e azure-policy-webhook. Il secondo spazio dei nomi è gatekeeper-system, che contiene gatekeeper-controller-manager. Questi carichi di lavoro sono responsabili della valutazione delle richieste inviate al piano di controllo del servizio Azure Kubernetes. In base ai criteri configurati, il webhook dei criteri consentirà o rifiuterà le richieste.

Assegnare una definizione dei criteri predefinita

È possibile gestire i criteri dell'ambiente di Azure usando il dashboard di conformità dei criteri di Azure. Il dashboard consente di eseguire il drill-down a un livello di dettaglio per risorsa e per criterio. Consente di rendere conformi le risorse tramite la correzione in blocco delle risorse esistenti e la correzione automatica delle nuove risorse.

Per ogni criterio vengono elencate le informazioni di panoramica seguenti:

Elemento Descrizione Esempio
Nome Il nome del criterio. [Anteprima]: Assicura che i limiti delle risorse per CPU e memoria dei contenitori non superino i limiti specificati nel cluster Kubernetes.
Scope Gruppo di risorse della sottoscrizione a cui si applica questo criterio. mySubscription/rg-akscostsaving.
Stato di conformità Lo stato dei criteri assegnati. Conforme, In conflitto, Non avviato o Non registrato.
Conformità risorsa La percentuale della risorsa conforme ai criteri. Questo calcolo prende in considerazione le risorse conformi, non conformi e in conflitto dell'account. 100
Risorse non conformi Numero di risorse univoche che violano una o più regole dei criteri. 3
Criteri non conformi Numero di criteri non conformi. 5

Da qui è possibile eseguire il drill-down nei dettagli per risorsa e per criterio, oltre che per gli eventi attivati. È ad esempio possibile esaminare i dettagli di una distribuzione del carico di lavoro negata.

Assegnazione dei criteri

Per assegnare un criterio, selezionare l'opzione Assegnazioni nella sezione Creazione del riquadro di spostamento di Criteri di Azure.

I criteri di Azure vengono assegnati in due modi: come gruppo di criteri, denominato iniziativa, o come singolo criterio.

Assegnazione di iniziativa

Un'assegnazione di iniziativa è una raccolta di definizioni dei criteri di Azure raggruppate per soddisfare un obiettivo o uno scopo specifico. Ad esempio, l'obiettivo potrebbe essere applicare lo standard PCI DSS (Payment Card Industry Data Security Standard) nelle risorse.

Assegnazione dei criteri

Un'assegnazione di criteri assegna un singolo criterio, ad esempio Non consentire i contenitori con privilegi nel cluster Kubernetes.

Come assegnare i criteri

Ogni criterio viene definito usando una serie di passaggi di configurazione. La quantità di informazioni acquisite dipende dal tipo di criterio selezionato.

Per limitare, ad esempio, la distribuzione delle risorse da parte degli sviluppatori nell'ambiente cloud nell'azienda, è possibile assegnare uno dei criteri predefiniti di Azure per il servizio Azure Kubernetes. Il nome del criterio è Assicura che i limiti delle risorse per CPU e memoria dei contenitori non superino i limiti specificati nel cluster Kubernetes.

Il criterio richiede l'impostazione del limite di risorse consentite per le richieste di distribuzione.

Di seguito vengono esaminate le opzioni configurabili quando si assegna un criterio.

Informazioni sui criteri di base

Prima di tutto, è necessario selezionare e inserire le informazioni di base per la definizione del nuovo criterio. Queste informazioni potrebbero essere, ad esempio, il criterio e l'ambito delle risorse. Questa tabella illustra ogni elemento che si può configurare:

Elemento Descrizione
Scope L'ambito determina le risorse o il gruppo di risorse su cui viene imposta l'assegnazione del criterio. Questo valore si basa su una sottoscrizione o su un gruppo di gestione. È possibile escludere le risorse dalla selezione a un livello inferiore rispetto al livello di ambito.
Definizione criteri I criteri da applicare. È possibile scegliere tra diverse opzioni di criteri predefinite.
Nome dell'assegnazione Nome usato per identificare il criterio assegnato.
Descrizione Una descrizione in testo libero del criterio.
Applicazione dei criteri È possibile scegliere Abilitato e Disabilitato. Se l'opzione è Disabilitata, il criterio non viene applicato e le richieste non vengono rifiutate a causa della mancata conformità.
Assegnato da Un valore di testo libero che indica per impostazione predefinita l'utente registrato. Tale valore può essere modificato.

Parametri dei criteri

I criteri richiedono la configurazione delle regole business applicabili. Non tutti i criteri hanno le stesse regole business e quindi per ogni criterio sono presenti parametri diversi.

Il criterio Assicura che i limiti delle risorse per CPU e memoria dei contenitori non superino i limiti specificati nel cluster Kubernetes, ad esempio, richiede l'impostazione di tre parametri:

  • Unità CPU massime consentite per un contenitore
  • Byte di memoria massimi consentiti per un contenitore
  • Elenco degli spazi dei nomi Kubernetes da escludere dal criterio

Confrontare il criterio con il criterio L'applicazione Web deve essere accessibile solo tramite HTTPS, che non ha parametri personalizzati da configurare.

Tutti i criteri hanno un'impostazione Effetto. Questa impostazione abilita o disabilita l'esecuzione dei criteri. Come per i parametri, anche i criteri possono avere opzioni con Effetto diverso.

Per i criteri di gestione delle risorse, ad esempio, è possibile selezionare controlla, nega o disabilita valore di Effetto. Per i criteri delle applicazioni Web, è possibile selezionare solo controlla o disabilita.

Questa tabella elenca tutti gli effetti attualmente supportati nelle definizioni dei criteri:

Effetto Descrizione
Aggiunta Aggiunge più campi alla risorsa richiesta
Controllo Crea un evento di avviso nel log attività
AuditIfNotExists Consente il controllo delle risorse correlate alla risorsa che corrisponde alla condizione
Nega Impedisce l'esecuzione di una richiesta di risorsa che non corrisponde agli standard definiti tramite una definizione dei criteri
DeployIfNotExists Consente di eseguire la distribuzione di un modello quando viene soddisfatta la condizione
Disabilitato Utile per le situazioni di test o quando la definizione dei criteri prevede parametri per l'effetto e si vuole disabilitare una singola assegnazione
Modifica Aggiunge, aggiorna o rimuove tag in una risorsa durante la creazione o l'aggiornamento

Correzioni dei criteri

Il passaggio finale consiste nel considerare le correzioni dei criteri. Quando si assegnano i criteri, è possibile che le risorse esistano già e che violino il nuovo criterio. Per impostazione predefinita, i nuovi criteri vengono applicati solo alle nuove risorse create. Usare la correzione per controllare le risorse esistenti dopo l'assegnazione di un nuovo criterio. Le attività di correzione possono variare a seconda dei tipi di criteri applicati.

Nell'esercizio successivo si assegnerà il criterio Assicura che i limiti delle risorse per CPU e memoria dei contenitori non superino i limiti specificati nel cluster Kubernetes per ridurre ulteriormente i costi.