La gestione di ambienti Kubernetes con Azure Arc

Il principio che sta alla base di Azure Arc è quello di estendere le pratiche di gestione e di governance di Azure anche ad ambienti differenti e di adottare soluzioni e tecniche, che tipicamente vengono utilizzate in ambiente cloud, anche per gli ambienti on-premises. In questo articolo viene trattato come Azure Arc consente di effettuare il deploy e la configurazione delle applicazioni Kubernetes in modo omogeneo su tutti gli ambienti, adottando le moderne tecniche DevOps.

Grazie ad Azure Arc-enabled Kubernetes risulta possibile collegare e configurare cluster Kubernetes situati all’interno oppure all’esterno dell’ambiente Azure. Connettendo un cluster Kubernetes ad Azure Arc, questo:

  • Appare nel portale Azure con un ID di Azure Resource Manager ed un’identità gestita.
  • Viene inserito all’interno di una sottoscrizione di Azure e di un resource group.
  • Consente che gli vengano associati tag come per qualsiasi altra risorsa di Azure.

Per connettere un cluster Kubernetes ad Azure è necessaria l’installazione degli agenti sui vari nodi. Tali agenti:

  • Vengono eseguiti nel namespace Kubernetes “azure-arc”.
  • Gestiscono la connettività verso Azure.
  • Raccolgono i log e le metriche di Azure Arc.
  • Verificano le richieste di configurazione.
Figura 1 – Architettura dell’agent Azure Arc-enabled Kubernetes

Kubernetes abilitato per Azure Arc supporta il protocollo SSL per proteggere i dati in transito. Inoltre, per garantire la riservatezza dei dati inattivi, questi vengono archiviati in modo crittografato in un database Azure Cosmos DB.

Gli agenti Azure Arc sui sistemi Kubernetes non richiedono l’apertura di porte in ingresso sui sistemi firewall, ma è necessaria solamente l’abilitazione ad accedere in uscita verso specifici endpoint.

Per maggiori dettagli in merito e per la procedura da seguire per connettere un cluster Kubernetes ad Azure Arc è possibile consultare questa documentazione ufficiale di Microsoft.

Distribuzioni supportate

Azure Arc-enabled Kubernetes è possibile abilitarlo con qualsiasi cluster Kubernetes certificato “Cloud Native Computing Foundation (CNCF)”. Infatti, il team di Azure Arc ha collaborato con i principali partner del settore per convalidare la conformità delle loro distribuzioni Kubernetes con Azure Arc-enabled Kubernetes.

Scenari supportati

Abilitando Azure Arc-enabled Kubernetes risultano supportati i seguenti scenari:

  • Connessione di cluster Kubernetes in esecuzione in ambienti differenti da Azure, per eseguire operazioni di inventario, raggruppamento e tagging.
  • Distribuzione di applicazioni e gestione delle configurazioni basandosi su meccanismi GitOps. In relazione a Kubernetes, GitOps è la pratica di dichiarare lo stato desiderato delle configurazioni del cluster Kubernetes (deployments, namespaces, ecc.) in un repository Git. Questa dichiarazione è seguita da un polling e da una distribuzione basata su pull di queste configurazioni cluster utilizzando un operatore. Il repository Git può contenere:
    • Manifesti in formato YAML che descrivono qualsiasi risorsa Kubernetes valida, inclusi Namespace, ConfigMaps, Deployments, DaemonSets, ecc.
    • Chart Helm per la distribuzione delle applicazioni.

Flux, un popolare strumento open source di GitOps, può essere distribuito sul cluster Kubernetes per facilitare il flusso delle configurazioni da un repository Git ad un cluster Kubernetes.

Per maggiori dettagli sul workflow CI/CD utilizzando GitOps per i cluster Kubernetes abilitati ad Azure Arc è possibile fare riferimento a questa documentazione Microsoft.

  • Visualizzazione e monitor degli ambienti cluster utilizzando Azure Monitor for containers.
  • Protezione dalle minacce mediante Azure Defender for Kubernetes. I componenti dell’extension raccolgono gli audit logs di Kubernetes da tutti i nodi del control plane del cluster e li inviano al back-end di Azure Defender for Kubernetes nel cloud per ulteriori analisi. L’extension viene registrata con un workspace Log Analytics che viene utilizzato per la pipeline dei dati, ma gli audit log non vengono archiviati nel workspace di Log Analytics. L’extension consente di proteggere i cluster Kubernetes dislocati presso altri cloud provider, ma non permette di contemplare i loro servizi gestiti di Kubernetes.
  • Applicazione di impostazioni tramite Azure Policy for Kubernetes.
  • Creazione di location custom utilizzate come target per il deployment di Azure Arc-enabled Data Services, App Services su Azure Arc (che comprende web, function, e logic apps) ed Event Grid su Kubernetes.

Azure Arc-enabled Kubernetes supporta inoltre Azure Lighthouse, che consente ai provider di servizi di accedere al proprio tenant per gestire le sottoscrizioni ed i gruppi di risorse delegati dai clienti.

Conclusioni

Le realtà che devono operare in un ambiente ibrido grazie a questa tecnologia saranno in grado di ridurre al minimo l’effort di gestione dei workload containerizzati, estendendo servizi come Azure Policy ed Azure Monitor ai cluster Kubernetes dislocati in ambienti on-premises. Infine, mediante l’approccio GitOps, sarà possibile semplificare gli aggiornamenti alle configurazioni dei cluster in tutti gli ambienti, riducendo al minimo i rischi associati ai problemi di configurazione.