Azure Kubernetes Service in ambiente Azure Stack HCI

La soluzione hyper-converged Azure Stack HCI permette di attivare in ambiente on-premises l’orchestratore Azure Kubernetes Service (AKS) per l’esecuzione di applicazioni containerizzate su larga scala. In questo articolo viene approfondito come Azure Kubernetes in ambiente Azure Stack HCI offre la possibilità di ospitare nel proprio datacenter container Linux e Windows, andando ad esplorare i principali benefici di questa soluzione.

Prima di entrare nello specifico di AKS in ambiente Azure Stack si riporta un riepilogo delle soluzioni coinvolte.

Che cos’è Kubernetes?

Kubernetes, conosciuto anche come “k8s”, provvede all’orchestrazione automatizzata dei container, migliorandone l’affidabilità e riducendo il tempo e le risorse necessarie in ambito DevOps, mediante:

  • Deployment tendenzialmente più semplici che permettono di eseguire implementazioni e rollback in modo automatico.
  • Migliore gestione delle applicazioni con la possibilità di monitorare lo stato dei servizi per evitare errori in fase di implementazione. Infatti, tra le varie funzionalità sono previsti controlli di integrità dei servizi, con la possibilità di riavviare i container che non sono in esecuzione oppure che risultano bloccati, permettendo di annunciare ai client solo i servizi correttamente avviati.
  • Possibilità di scalare automaticamente in base all’utilizzo e, esattamente come per i container, gestire in maniera dichiarativa l’ambiente cluster, consentendo una configurazione controllata a livello di versione e facilmente replicabile.
Figura 1 – Cluster Kubernetes con i relativi componenti dell’architettura

Che cos’è Azure Kubernetes Service (AKS)?

Azure Kubernetes Service (AKS) è il servizio Azure completamente gestito che permette l’attivazione di un cluster Kubernetes, ideale per semplificare il deployment e la gestione di architetture basate su microservizi. Grazie alle funzionalità offerte da AKS è possibile scalare automaticamente in base all’utilizzo, utilizzare controlli per garantire l’integrità dei servizi, implementare politiche di bilanciamento del carico e gestire i secret. L’utilizzo di questo servizio gestito viene integrato con le pipeline di sviluppo e di deployment dei container.

Figura 2 – Esempio di architettura di Azure Kubernetes Service (AKS)

Che cos’è Azure Stack HCI?

Azure Stack HCI è la soluzione che permette di realizzare una infrastruttura hyper-converged (HCI) per l’esecuzione di workloads in ambiente on-premises e che prevede una connessione strategica ai servizi di Azure. Si tratta di una infrastruttura hyper-converged (HCI), dove vengono rimossi diversi componenti hardware, sostituti dal software, in grado di unire i layer di elaborazione, storage e rete in un’unica soluzione. In questo modo si ha un passaggio da una tradizionale infrastruttura “three tier”, composta da switch di rete, appliance, sistemi fisici con a bordo hypervisor, storage fabric e SAN, verso infrastrutture hyper-converged (HCI).

Figura 3 – “Three Tier” Infrastructure vs Hyper-Converged Infrastructure (HCI)

Che cos’è AKS in Azure Stack HCI?

AKS in ambiente Azure Stack HCI è un’implementazione Microsoft di AKS, che consente di automatizzare la distribuzione e la gestione delle applicazioni containerizzate.

Microsoft, dopo aver introdotto AKS come servizio in Azure, ha esteso la sua disponibilità anche agli ambienti on-premises. Tuttavia, ci sono alcune importanti differenze:

  • In Azure, Microsoft gestisce il control plane di ogni cluster AKS. Inoltre, i nodi del cluster (management node e worker node) vengono eseguiti su macchine virtuali Azure oppure su virtual machine scale set di Azure.
  • In ambiente on-premises, il cliente gestisce l’intero ambiente, dove i nodi del cluster AKS sono in esecuzione su macchine virtuali ospitate sull’infrastruttura hyper-converged.

Architettura di AKS su Azure Stack HCI

L’implementazione di AKS in Azure Stack HCI è costituita da due tipologie di cluster:

  • Un cluster di management di AKS. Questo cluster funge da control plane dedicato per la gestione dei cluster Kubernetes in esecuzione sulla piattaforma hyper-converged. Tale cluster è costituito da macchine virtuali Linux, che ospitano componenti di sistema Kubernetes come API server e load balancer.
  • Uno o più cluster Kubernetes. Questi cluster sono costituiti dai control node e dai worker node. I control node sono implementati come macchine virtuali Linux, con API server e load balancer che soddisfano le richieste degli utenti di Azure Stack HCI. I workload sono distribuiti sui worker node basati su sistema operativo Linux oppure Windows.
Figura 4 – Architettura di AKS su Azure Stack HCI

Ogni cluster Kubernetes viene eseguito sul proprio set dedicato di macchine virtuali, protette dall’isolamento basato su Hypervisor, consentendo di condividere in modo sicuro la stessa infrastruttura fisica anche in scenari che richiedono l’isolamento dei workload.

AKS in Azure Stack HCI supporta sia i container basati su Linux sia i container basati su Windows. Quando si crea un cluster Kubernetes si deve semplicemente specificare la tipologia di container che si intende eseguire e sulla piattaforma hyper-converged viene avviata automaticamente la procedura di installazione del sistema operativo richiesto sui nodi del cluster Kubernetes.

Vantaggi di AKS su Azure Stack HCI

AKS semplifica la distribuzione dei cluster Kubernetes fornendo un livello di astrazione in grado di mascherare alcuni dei dettagli di implementazione più impegnativi.

Tra i principali benefici di AKS in ambiente Azure Stack HCI troviamo:

  • Deployment semplificati di app containerizzate in ambiente cluster. Mediante l’utilizzo di Windows Admin Center si ha un processo guidato di installazione del cluster di management di AKS. Windows Admin Center facilita inoltre l’installazione di singoli cluster Kubernetes che contengono i worker node, mediante un processo di installazione automatico di tutti i componenti software rilevanti, inclusi gli strumenti di gestione come kubectl.
  • Possibilità di scalare orizzontalmente per gestire le risorse computazionali, aggiungendo o rimuovendo nodi del cluster Kubernetes.
  • Gestione semplificata dello storage e delle configurazioni di rete delle risorse cluster.
  • Aggiornamenti automatici dei nodi del cluster all’ultima versione di Kubernetes disponibile. Microsoft gestisce le immagini Windows Server e Linux per i nodi del cluster e le aggiorna mensilmente.
  • Connessione strategica, mediante Azure Arc, ai servizi Azure come: Microsoft Azure Monitor, Azure Policy, e Azure Role-Based Access Control (RBAC).
  • Gestione centralizzata dei cluster Kubernetes e dei relativi carichi di lavoro tramite il portale Azure, grazie all’adozione di Azure Arc for Kubernetes. La gestione basata sul portale di Azure integra anche gli strumenti e le interfacce di amministrazione Kubernetes tradizionali, come l’utility da riga di comando kubectl e le dashboard Kubernetes.
  • Gestione del failover automatico delle macchine virtuali che fungono da nodi del cluster Kubernetes se si verifica un errore localizzato dei componenti fisici sottostanti. Ciò integra l’elevata disponibilità intrinseca in Kubernetes, in grado di riavviare automaticamente i conteiner in stato failed.

Conclusioni

Grazie ad Azure Stack HCI l’adozione di architetture applicative basate su container possono essere ospitate direttamente presso il proprio datacenter, adottando la stessa esperienza di gestione di Kubernetes che si ha con il servizio gestito presente nel cloud pubblico di Azure. Anche il processo di deployment risulta molta semplificato ed intuitivo. Inoltre, Azure Stack HCI permette di migliorare ulteriormente l’agilità e la resilienza delle distribuzioni Kubernetes in ambiente on-premises.