Le migliori pratiche e consigli per l'implementazione di container e Kubernetes in ambienti produttivi

Le migliori pratiche e consigli per l'implementazione di container e Kubernetes in ambienti produttivi
L'ecosistema delle tecnologie di containerizzazione si evolve rapidamente, e mancano buone pratiche operative in questo settore. Tuttavia, Kubernetes e i container vengono sempre più utilizzati, sia per modernizzare le applicazioni legacy che per sviluppare nuove applicazioni cloud. 

Team Kubernetes aaS di Mail.ru ha raccolto previsioni, consigli e migliori pratiche per i leader di mercato da Gartner, 451 Research, StacxRoх e altri. Questi aiuteranno a garantire e accelerare il deployment di container in ambienti produttivi.

Come capire se la tua azienda è pronta a implementare container in un ambiente produttivo

Secondo Gartner, nel 2022 oltre il 75% delle organizzazioni utilizzerà applicazioni containerizzate in produzione. Questo è notevolmente superiore alla quantità attuale, dove tali applicazioni sono utilizzate da meno del 30% delle aziende. 

Secondo 451 Research, il mercato previsto per l'applicazione delle tecnologie container nel 2022 sarà di 4,3 miliardi di dollari. Questo è più del doppio rispetto alle somme previste nel 2019, con un tasso di crescita del mercato del 30%.

In indagine di Portworx e Aqua Security L'87% degli intervistati ha dichiarato di utilizzare attualmente tecnologie di containerizzazione. A titolo di confronto, nel 2017 la percentuale era del 55%. 

Nonostante l'interesse crescente e la diffusione delle tecnologie container, il loro utilizzo in produzione richiede formazione a causa della maturità tecnologica insufficiente e della mancanza di know-how. Le organizzazioni devono valutare realisticamente i processi aziendali che richiedono la containerizzazione delle applicazioni. I leader IT devono verificare se dispongono delle competenze necessarie per procedere, considerando anche la necessità di un apprendimento rapido. 

Gli esperti di Gartner ritengono che le domande riportate nella figura sottostante possano aiutarvi a capire se siete pronti a implementare i container in produzione:

Le migliori pratiche e consigli per l'implementazione di container e Kubernetes in ambienti produttivi

Gli errori più comuni nell'uso dei container in produzione

Le organizzazioni spesso sottovalutano gli sforzi necessari per gestire i container in produzione. Gartner ha rilevato alcuni errori comuni nei casi d'uso dei clienti riguardo l'implementazione dei container negli ambienti di produzione:

Le migliori pratiche e consigli per l'implementazione di container e Kubernetes in ambienti produttivi

Come garantire la sicurezza dei container

La sicurezza non può essere una questione da affrontare 'dopo'. Deve essere integrata nel processo DevOps, da cui deriva anche il termine specifico — DevSecOps. Le organizzazioni devono pianificare la protezione dell'ambiente dei container per l'intero ciclo di vita dello sviluppo, che include la fase di assemblaggio e sviluppo, il deployment e l'avvio dell'applicazione.

Raccomandazioni da Gartner

  1. Integra il processo di scansione delle immagini delle applicazioni per rilevare vulnerabilità nel pipeline di integrazione continua / distribuzione continua (CI/CD). Le applicazioni vengono scansionate nelle fasi di assemblaggio e avvio del software. Sottolinea l'importanza della scansione e dell'identificazione dei componenti open source, delle librerie e delle strutture. L'uso da parte degli sviluppatori di versioni vulnerabili e obsolete è una delle principali cause delle vulnerabilità dei container.
  2. Migliora la configurazione utilizzando i test del Center for Internet Security (CIS), disponibili sia per Docker che per Kubernetes.
  3. Assicurati di implementare il controllo degli accessi, di garantire la separazione dei doveri e di adottare una politica di gestione dei segreti. Le informazioni riservate, come le chiavi Secure Sockets Layer (SSL) o le credenziali del database, vengono crittografate dall'orchestratore o da servizi di gestione di terze parti e fornite durante l'esecuzione.
  4. Evita contenitori con privilegi elevati utilizzando la gestione delle politiche di sicurezza, per ridurre i potenziali rischi di intrusione.
  5. Utilizza strumenti di sicurezza che offrono elenchi di autorizzazione, monitoraggio comportamentale e rilevamento delle anomalie per prevenire attività dannose.

Raccomandazioni di StacxRox:

  1. Sfrutta le funzionalità integrate di Kubernetes. Configura l'accesso per gli utenti utilizzando i ruoli. Assicurati di non concedere permessi superflui a singoli soggetti, anche se potrebbe richiedere del tempo riflettere sui permessi minimi necessari. Può sembrare allettante dare al cluster administrator ampie autorizzazioni, poiché ciò risparmia tempo all'inizio. Tuttavia, qualsiasi compromesso o errore nell'account può portare a conseguenze devastanti in seguito. 
  2. Evita la duplicazione dei permessi di accesso. A volte può essere utile far sovrapporre ruoli diversi, ma questo può portare a problemi operativi e creare "zone morte" durante la rimozione dei permessi. Inoltre, è importante eliminare i ruoli non utilizzati e inattivi.
  3. Imposta politiche di rete: isola i moduli per limitare l'accesso; consenti esplicitamente l'accesso a internet ai moduli che ne hanno bisogno, utilizzando etichette; consenti esplicitamente la comunicazione tra i moduli che devono interagire tra loro. 

Come organizzare il monitoraggio dei container e dei servizi al loro interno

Sicurezza e monitoraggio — principali problematiche delle aziende durante il deployment di cluster Kubernetes. Gli sviluppatori sono sempre più concentrati sulle funzionalità delle applicazioni che stanno sviluppando, piuttosto che sugli aspetti del monitoraggio di queste applicazioni

Raccomandazioni da Gartner:

  1. Cercate di monitorare lo stato dei container o dei servizi al loro interno insieme al monitoraggio dei sistemi host.
  2. Preferite fornitori e strumenti con un'integrazione profonda nell'orchestrazione dei container, specialmente Kubernetes.
  3. Scegliete strumenti che offrono un logging dettagliato, scoperta automatica dei servizi e raccomandazioni in tempo reale utilizzando analisi e/o apprendimento automatico.

Nel blog di SolarWinds consigliamo:

  1. Utilizzare strumenti per la scoperta automatica e il tracciamento delle metriche del container, correlando metriche delle prestazioni come CPU, memoria e tempo di inattività.
  2. Garantire una pianificazione ottimale della capacità prevedendo i tempi di esaurimento della capacità basandosi sui parametri di monitoraggio dei container.
  3. Organizza il monitoraggio delle applicazioni ospitate nei contenitori, in base a disponibilità e prestazioni, utile sia per la pianificazione della capacità che per la risoluzione dei problemi di performance.
  4. Automatizza i flussi di lavoro, fornendo supporto per la gestione e la scalabilità dei contenitori e dei loro ambienti di hosting.
  5. Automatizza il controllo degli accessi, per monitorare il database degli utenti, disattivare account obsoleti e guest, rimuovere privilegi superflui.
  6. Assicurati che il tuo set di strumenti possa monitorare questi contenitori e applicazioni in ambienti diversi (cloud, locali o ibridi) per visualizzare e confrontare le prestazioni nell'infrastruttura, nella rete, nei sistemi e nelle applicazioni.

Come memorizzare i dati e garantirne la sicurezza

Con l'aumento del numero di contenitori di lavoro con stato, i clienti devono considerare la posizione dei dati al di fuori dell'host e la necessità di proteggere tali dati. 

Secondo un sondaggio di Portworx e Aqua Security, la sicurezza dei dati è la principale preoccupazione evidenziata dalla maggior parte degli intervistati (61%). 

La crittografia dei dati è la strategia di sicurezza fondamentale (64%), ma gli intervistati utilizzano anche il monitoraggio delle prestazioni

(49%), la scansione delle vulnerabilità nei registri (49%), la scansione delle vulnerabilità nei pipeline CI/CD (49%) e il blocco delle anomalie tramite protezione delle prestazioni (48%).

Raccomandazioni da Gartner:

  1. Scegliete soluzioni di archiviazione dei dati basate sui principi della architettura a microservizi. È consigliabile optare per quelle che soddisfano i requisiti di archiviazione dei dati per i servizi basati su container, sono indipendenti dall'hardware, gestibili tramite API, dotate di architettura distribuita, supportano il dispiegamento locale e il dispiegamento in cloud pubblico.
  2. Evitare plugin e interfacce proprietarie. Scegliete fornitori che garantiscono integrazione con Kubernetes e supportano interfacce standard come CSI (Container Storage Interfaces).

Come lavorare con le reti

Il modello tradizionale di rete aziendale, in cui gli specialisti IT creano ambienti di sviluppo, test, qualità e produzione per ciascun progetto, non sempre si concilia bene con il flusso di lavoro dello sviluppo continuo. Inoltre, le reti di contenitori coprono diversi livelli.

In nel blog di Magalix abbiamo raccolto le linee guida di alto livello che devono essere seguite per l'implementazione di una soluzione di rete a cluster:

  1. I pod pianificati sulla stessa macchina devono poter scambiarsi dati con altri moduli senza utilizzare NAT (Network Address Translation).
  2. Tutti i demoni di sistema (processi in background, ad esempio kubelet) che operano su una determinata macchina possono interagire con i pod che stanno funzionando sulla stessa macchina.
  3. I pod che utilizzano la rete host, devono poter comunicare con tutti gli altri pod su tutte le altre macchine senza utilizzare NAT. Si noti che la rete host è supportata solo su host Linux.

Le soluzioni di rete devono essere strettamente integrate con i primitivi e le politiche di Kubernetes. I responsabili IT dovrebbero puntare a un alto livello di automazione della rete, fornendo agli sviluppatori gli strumenti adeguati e la flessibilità necessaria.

Raccomandazioni da Gartner:

  1. Verifica se il tuo CaaS (container as a service) o la tua rete SDN (Software Defined Network) supportano le reti Kubernetes. Se non lo fanno o se il supporto è insufficiente, utilizza per i tuoi container un'interfaccia di rete CNI (Container Network Interface) che supporti le funzionalità e le politiche necessarie.
  2. Assicurati che il tuo CaaS o PaaS (platform as a service) supporti la creazione di controller in ingresso e/o di bilanciatori di carico che distribuiscano il traffico in ingresso tra i nodi del cluster. Se questa possibilità non è disponibile, considera l'utilizzo di proxy di terze parti o meccanismi di service mesh.
  3. Forma i tuoi ingegneri di rete a lavorare con reti Linux e strumenti di automazione della rete per colmare il divario di competenze e aumentare la flessibilità.

Come gestire il ciclo di vita delle applicazioni

Per garantire la consegna automatizzata e continua delle applicazioni, è necessario completare l'orchestrazione dei container con altri strumenti di automazione, come i prodotti di infrastruttura come codice (IaC). Questi includono Chef, Puppet, Ansible e Terraform. 

Sono inoltre necessari strumenti per l'automazione della build e del deployment delle applicazioni (vedi «Magic Quadrant per l'orchestrazione del rilascio delle applicazioni»). I container offrono anche funzionalità di scaling simili a quelle disponibili durante il deployment delle macchine virtuali (VM). Pertanto, i responsabili IT devono avere strumenti per la gestione del ciclo di vita dei container.

Raccomandazioni da Gartner:

  1. Stabilisci gli standard per le immagini di base dei container, tenendo conto delle dimensioni, delle licenze e della flessibilità per l'aggiunta di componenti da parte degli sviluppatori.
  2. Utilizza sistemi di gestione della configurazione per gestire il ciclo di vita dei container, che ospitano la configurazione in livelli basati su immagini di base, disponibili in repository pubblici o privati.
  3. Integra la piattaforma CaaS con strumenti di automazione per automatizzare l'intero flusso di lavoro dell'applicazione.

Come gestire i container tramite orchestratori

Le funzionalità principali per il deployment dei container sono fornite a livello di orchestrazione e pianificazione. Durante la pianificazione, i container vengono collocati sui nodi più ottimali nel cluster come richiesto dalle esigenze dell'orchestrazione. 

Kubernetes è diventato di fatto lo standard per l'orchestrazione dei container, supportato da una comunità attiva e dalla maggior parte dei principali fornitori commerciali. 

Raccomandazioni da Gartner:

  1. Definite i requisiti fondamentali per i controlli di sicurezza, il monitoraggio, la gestione delle politiche, il salvataggio dei dati, la gestione delle reti e il ciclo di vita dei container.
  2. Sulla base di questi requisiti, scegliete lo strumento che meglio si adatta alle vostre esigenze e ai vostri casi d'uso.
  3. Utilizzate le ricerche di Gartner (vedi «Come scegliere un modello di deployment per Kubernetes») per comprendere i vantaggi e gli svantaggi dei diversi modelli di deployment Kubernetes e selezionare quello più adatto alla vostra situazione.
  4. Scegli un fornitore in grado di garantire un'orchestrazione ibrida per i container operativi in ambienti diversi, con integrazione stretta con i backend, piani di gestione condivisi e modelli di pricing coerenti.

Come sfruttare le opportunità dei fornitori di cloud

Gartner ritiene, che l'interesse per il deployment di container nel cloud pubblico IaaS sta crescendo a causa della disponibilità di offerte pronte per il CaaS, nonché dell'integrazione stretta di queste offerte con altri prodotti offerti dai fornitori di cloud.

Gli IaaS offrono consumo delle risorse on-demand, scalabilità rapida e gestione dei servizi, che aiuterà a evitare la necessità di una profonda conoscenza dell'infrastruttura e della sua manutenzione. La maggior parte dei fornitori di cloud offre un servizio di gestione dei container, mentre alcuni offrono diverse opzioni di orchestrazione. 

I principali fornitori di servizi cloud gestiti sono riportati nella tabella: 

Fornitore cloud
Tipo di servizio
Prodotto/servizio

Alibaba
Servizio cloud nativo
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Servizio cloud nativo
Amazon Elastic Container Services (ECS), Amazon ECS per Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Infrastruttura Kubernetes gestita Giant Swarm

Google
Servizio cloud nativo
Google Container Engine (GKE)

IBM
Servizio cloud nativo
IBM Cloud Kubernetes Service

Microsoft
Servizio cloud nativo
Azure Kubernetes Service, Azure Service Fabric

Oracle
Servizio cloud nativo
OCI Container Engine per Kubernetes

Platform9
MSP
Kubernetes gestito

Red Hat
Servizio ospitato
OpenShift Dedicated & Online

VMware
Servizio ospitato
Cloud PKS (Beta)

Soluzioni Cloud Mail.ru*
Servizio cloud nativo
Container Cloud Mail.ru

* Non nascondiamo nulla, ci siamo aggiunti noi stessi nella traduzione 🙂

I fornitori di cloud pubblici stanno anche aggiungendo nuove funzionalità e rilasciando prodotti locali. In un prossimo futuro, i fornitori di cloud svilupperanno il supporto per cloud ibridi e ambienti multi-cloud. 

Raccomandazioni di Gartner:

  1. Valutate oggettivamente le capacità della vostra organizzazione nell'implementare e gestire gli strumenti appropriati, e considerate anche servizi alternativi per la gestione dei container cloud.
  2. Scegliete attentamente il software, utilizzate open source dove possibile.
  3. Optate per fornitori con modelli operativi unificati in ambienti ibridi, che offrono gestione di cluster unificati da un'unica interfaccia, così come fornitori che semplificano l'uso autonomo di IaaS.

Alcuni consigli per scegliere un fornitore Kubernetes aaS dal blog di Replex:

  1. È importante cercare distribuzioni che supportano l'alta disponibilità nativa. Questo include il supporto per diverse architetture principali, componenti altamente disponibili come etcd, e funzionalità di backup e ripristino.
  2. Per garantire la mobilità degli ambienti Kubernetes, è meglio scegliere fornitori cloud che supportano una vasta gamma di modelli di implementazione: da quelli on-premise a soluzioni ibride e multi-cloud. 
  3. È opportuno valutare anche le offerte dei fornitori in base alla facilità di configurazione, installazione e creazione del cluster, oltre a considerare aggiornamenti, monitoraggio e risoluzione dei problemi. Un requisito fondamentale è il supporto per aggiornamenti del cluster completamente automatizzati senza tempi di inattività. La soluzione scelta deve consentire anche aggiornamenti manuali. 
  4. La gestione dell'identità e degli accessi è cruciale sia dal punto di vista della sicurezza che della governance. Assicurati che la distribuzione Kubernetes scelta supporti l'integrazione con gli strumenti di autenticazione e autorizzazione utilizzati internamente. RBAC e controlli di accesso dettagliati sono anch'essi fondamentali.
  5. La distribuzione scelta deve avere una propria soluzione di rete definita dal software e coprire un ampio ventaglio di requisiti richiesti dalle varie applicazioni o infrastrutture, oppure supportare una delle implementazioni di rete più popolari basate su CNI, inclusi Flannel, Calico, kube-router o OVN.

L'implementazione dei container in produzione sta diventando un trend principale, come dimostrano i risultati di un sondaggio condotto su sessioni Gartner sulle infrastrutture, le operazioni e le strategie cloud (IOCS) a dicembre 2018:

Le migliori pratiche e consigli per l'implementazione di container e Kubernetes in ambienti produttivi
Come possiamo vedere, il 27% degli intervistati utilizza già i container nel proprio lavoro, mentre il 63% intende farlo.

In indagine di Portworx e Aqua Security Il 24% degli intervistati ha dichiarato di investire più di cinquecentomila dollari all'anno nelle tecnologie container, mentre il 17% degli intervistati spende più di un milione di dollari all'anno per queste tecnologie. 

L'articolo è stato redatto dal team della piattaforma cloud Mail.ru Cloud Solutions.

Ulteriori letture sull'argomento:

  1. Migliori pratiche DevOps: rapporto DORA.
  2. Kubernetes nello spirito della pirateria con un modello di implementazione.
  3. 25 strumenti utili per il deployment e l'implementazione di Kubernetes.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster