
L'ecosistema delle tecnologie di containerizzazione si sta evolvendo e cambiando rapidamente, quindi mancano buone pratiche di lavoro in questo settore. Tuttavia, Kubernetes e i container sono sempre più utilizzati, sia per la modernizzazione delle applicazioni legacy che per lo sviluppo di moderne applicazioni cloud.
Team 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 dispiegamento di container negli ambienti di produzione.
Come capire se la vostra azienda è pronta per implementare container in un ambiente di produzione
, nel 2022 oltre il 75% delle organizzazioni utilizzerà applicazioni containerizzate nella produzione. Questo è significativamente più di quanto accada attualmente, dove tali applicazioni vengono utilizzate da meno del 30% delle aziende.
Secondo , il mercato previsto per l'utilizzo delle tecnologie container nel 2022 sarà di $ 4,3 miliardi. Questo è più del doppio rispetto alle cifre previste nel 2019, con un tasso di crescita del mercato del 30%.
In l'87% degli intervistati ha dichiarato di utilizzare attualmente tecnologie container. A titolo di confronto, nel 2017, tali intervistati erano il 55%.
Nonostante l'interesse crescente e la crescita dell'implementazione dei container, il loro utilizzo in produzione richiede formazione a causa dell'immaturità tecnologica e della mancanza di know-how. Le organizzazioni devono avere una visione realistica dei processi aziendali che richiedono la containerizzazione delle applicazioni. I leader IT dovrebbero valutare se possiedono le competenze necessarie per progredire tenendo conto della necessità di un rapido apprendimento.
ritengono che le domande nella figura sottostante possano aiutare a capire se siete pronti per il dispiegamento di container in produzione:

Gli errori più comuni nell'uso dei container in produzione
Le organizzazioni spesso sottovalutano gli sforzi necessari per gestire i container in produzione. alcuni errori comuni negli scenari dei clienti nell'uso dei container negli ambienti di produzione:

Come garantire la sicurezza dei container
La sicurezza non può essere affrontata "dopo". Deve essere integrata nel processo DevOps, da cui è nato persino un termine speciale: DevSecOps. Le organizzazioni devono pianificare per l'intero ciclo di vita dello sviluppo, che include i processi di build e sviluppo, distribuzione e avvio dell'applicazione.
:
- Integra il processo di scansione delle immagini delle applicazioni per la ricerca di vulnerabilità nel pipeline di integrazione continua/distribuzione continua (CI/CD). Le applicazioni vengono scansionate nelle fasi di build e avvio del software. Sottolinea l'importanza di scansionare e identificare i componenti open source, le librerie e le strutture. L'uso da parte degli sviluppatori di versioni vulnerabili obsolete è una delle principali cause delle vulnerabilità nei container.
- Migliora la configurazione con i test del Center for Internet Security (), disponibili sia per Docker che per Kubernetes.
- Applica sempre il controllo degli accessi, garantisci la separazione dei compiti e implementa una politica di gestione dei segreti. Le informazioni riservate, come le chiavi Secure Sockets Layer (SSL) o le credenziali del database, devono essere criptate dall'orchestratore o da servizi di gestione di terze parti e fornite durante l'esecuzione.
- Evita contenitori con privilegi elevati tramite la gestione delle politiche di sicurezza, che ridurrà i rischi potenziali di hacking.
- Utilizza strumenti di sicurezza che forniscono whitelist, monitoraggio comportamentale e rilevamento delle anomalie per prevenire atti dannosi.
:
- Sfrutta le capacità integrate di Kubernetes. Configura l'accesso per gli utenti utilizzando ruoli. Assicurati di non concedere permessi non necessari a singoli soggetti, anche se potrebbe richiedere del tempo riflettere sui permessi minimi richiesti. Potrebbe sembrare allettante dare all'amministratore del cluster ampie autorizzazioni, poiché questo risparmia tempo all'inizio. Tuttavia, qualsiasi compromesso o errore nell'account potrebbe portare a conseguenze devastanti in seguito.
- Evitare la duplicazione dei permessi di accesso. A volte è utile fare in modo che diversi ruoli si sovrappongano, ma questo può portare a problemi operativi e creare "zone morte" durante la rimozione dei permessi. Inoltre, è importante rimuovere i ruoli non utilizzati e inattivi.
- Stabilisci politiche di rete: isola i moduli per limitare l'accesso; consenti esplicitamente l'accesso a Internet a quei moduli che ne hanno bisogno, utilizzando etichette; consenti esplicitamente la comunicazione tra quei moduli che devono interagire tra loro.
Come organizzare il monitoraggio dei container e dei servizi al loro interno
Sicurezza e monitoraggio — nell'implementazione di cluster Kubernetes. Gli sviluppatori tendono a concentrarsi maggiormente sulle funzionalità delle applicazioni che stanno sviluppando piuttosto che sugli aspetti .
:
- Cerca di monitorare lo stato dei container o dei servizi al loro interno insieme al monitoraggio dei sistemi host.
- Dai priorità a fornitori e strumenti con una profonda integrazione nell'orchestrazione dei container, in particolare Kubernetes.
- Scegli strumenti che forniscano registrazione dettagliata, rilevamento automatico dei servizi e raccomandazioni in tempo reale utilizzando analisi e/o apprendimento automatico.
:
- Di utilizzare strumenti per la rilevazione automatica e il monitoraggio delle metriche del container, la correlazione delle metriche delle prestazioni come CPU, memoria e tempo di attività.
- Garantire una pianificazione ottimale della capacità prevedendo i tempi di esaurimento della capacità basandosi sulle metriche di monitoraggio dei container.
- Organizzare il monitoraggio delle applicazioni ospitate nei container in base ai parametri di disponibilità e prestazioni, utile sia per la pianificazione della capacità che per la risoluzione dei problemi di prestazioni.
- Automatizzare i flussi di lavoro fornendo supporto alla gestione e alla scalabilità per i container e i loro ambienti di hosting.
- Automatizzare il controllo degli accessi per monitorare il database degli utenti, disattivare gli account obsoleti e ospiti, rimuovere privilegi superflui.
- Assicurati che il tuo set di strumenti possa monitorare questi container e applicazioni in vari ambienti (cloud, locali o ibridi) per visualizzare e mappare le prestazioni nell'infrastruttura, nella rete, nei sistemi e nelle applicazioni.
Come memorizzare i dati e garantire la loro sicurezza
Con l'aumento del numero di container di lavoro con stato, i clienti devono considerare la localizzazione dei dati al di fuori dell'host, così come la necessità di proteggere questi dati.
Secondo i dati , la sicurezza dei dati è la principale preoccupazione in cima alla lista delle questioni di sicurezza segnalate dalla maggior parte dei rispondenti (61%).
La crittografia dei dati è la strategia principale di sicurezza (64%), tuttavia i rispondenti utilizzano anche il monitoraggio in tempo reale
(49%), la scansione delle vulnerabilità nei registri (49%), la scansione delle vulnerabilità nei pipeline CI/CD (49%) e il blocco delle anomalie tramite la protezione in tempo reale (48%).
:
- Scegli soluzioni di archiviazione dei dati basate sui principi . Meglio optare per quelle che soddisfano i requisiti di archiviazione dei dati per i servizi containerizzati, sono hardware indipendenti, gestibili tramite API, hanno un'architettura distribuita, supportano il deployment locale e il deployment nel cloud pubblico.
- Evita plugin e interfacce proprietarie. Scegli fornitori che garantiscano integrazione con Kubernetes e supportino interfacce standard come CSI (Container Storage Interfaces).
Come lavorare con le reti
Il modello tradizionale di rete aziendale, dove i professionisti IT creano ambienti di sviluppo, test, assicurazione qualità e produzione per ogni progetto, non sempre si allinea bene con il flusso di lavoro della continuità dello sviluppo. Inoltre, le reti di container coprono più livelli.
In regole di alto livello a cui dovrebbe attenersi l'implementazione di una soluzione di rete cluster:
- I pod pianificati sullo stesso nodo devono essere in grado di scambiarsi dati con altri moduli senza utilizzare il NAT (Network Address Translation).
- Tutti i demoni di sistema (processi in background, come kubelet) che operano su un nodo specifico possono interagire con i pod che funzionano sullo stesso nodo.
- I pod che utilizzano devono essere in grado di comunicare con tutti gli altri pod su tutti gli altri nodi senza l'uso del NAT. Si noti che la rete host è supportata solo su host Linux.
Le soluzioni di rete devono essere strettamente integrate con i primitive e le politiche di Kubernetes. I dirigenti IT devono mirare a un alto grado di automazione della rete, fornendo agli sviluppatori gli strumenti appropriati e la flessibilità necessaria.
:
- Verifica se il tuo CaaS (Container as a Service) o la tua rete SDN (Software Defined Network) supportano le reti di Kubernetes. Se no o se il supporto è insufficiente, utilizza un'interfaccia di rete CNI (Container Network Interface) per i tuoi container che supporta le funzionalità e le politiche necessarie.
- Assicurati che il tuo CaaS o PaaS (Platform as a Service) supporti la creazione di controller in entrata e/o bilanciatore di carico per distribuire il traffico in ingresso tra i nodi del cluster. Se questa funzionalità non è disponibile, esplora l'uso di proxy di terze parti o meccanismi di service mesh.
- Forma i tuoi ingegneri di rete a lavorare con reti Linux e strumenti di automazione della rete per ridurre il divario di competenze e aumentare la flessibilità.
Come gestire il ciclo di vita delle applicazioni
Per una consegna automatizzata e continua delle applicazioni, è necessario integrare l'orchestrazione dei container con altri strumenti di automazione, come i prodotti di Infrastructure as Code (IaC). Questi includono Chef, Puppet, Ansible e Terraform.
Sono necessari anche strumenti di automazione per la costruzione e il rilascio delle applicazioni (vedi ""). I container offrono anche opportunità di scalabilità simili a quelle disponibili con il deployment di macchine virtuali (VM). Pertanto, i dirigenti IT devono avere .
:
- Stabilisci standard per le immagini base dei container tenendo conto delle dimensioni, delle licenze e della flessibilità per l'aggiunta di componenti da parte degli sviluppatori.
- Utilizza i sistemi di gestione della configurazione per gestire il ciclo di vita dei contenitori, che memorizzano la configurazione in strati basati su immagini di base, disponibili in repository pubblici o privati.
- Integra la piattaforma CaaS con strumenti di automazione per automatizzare l'intero flusso di lavoro dell'applicazione.
Come gestire i contenitori con gli orchestratori
Le principali funzionalità per il deployment dei contenitori vengono fornite nei livelli di orchestrazione e pianificazione. Durante la pianificazione, i contenitori vengono collocati sugli host più ottimali nel cluster, come prescritto dai requisiti del livello di orchestrazione.
Kubernetes è di fatto diventato lo standard per l'orchestrazione dei contenitori con una comunità attiva, supportato dalla maggior parte dei principali fornitori commerciali.
:
- Definisci i requisiti di base per il controllo della sicurezza, il monitoraggio, la gestione delle politiche, il backup dei dati, la gestione delle reti e il ciclo di vita dei contenitori.
- In base a questi requisiti, scegli uno strumento che soddisfi al meglio le tue necessità e scenari d'uso.
- Utilizza le ricerche di Gartner (vedi ""), per comprendere i vantaggi e gli svantaggi dei diversi modelli di deployment di Kubernetes e scegliere quello più adatto al tuo caso.
- Scegli un fornitore che possa garantire un'orchestrazione ibrida per i contenitori di lavoro in diversi ambienti con integrazione stretta con i backend, piani di gestione comuni e modelli di pricing coerenti.
Come utilizzare le capacità dei fornitori di cloud
, che l'interesse per il deployment dei contenitori nel cloud pubblico IaaS stia crescendo grazie alla disponibilità di soluzioni CaaS pronte all'uso, nonché all'integrazione stretta di queste soluzioni con altri prodotti offerti dai fornitori di cloud.
Le nuvole IaaS offrono un consumo di risorse on demand, scalabilità rapida e , che aiuterà a evitare la necessità di conoscenze approfondite sull'infrastruttura e il suo mantenimento. La maggior parte dei fornitori di cloud offre un servizio di gestione dei contenitori, e alcuni offrono diverse opzioni di orchestrazione.
I principali fornitori di servizi cloud gestiti sono presentati 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 da 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 che ci siamo aggiunti noi stessi nella traduzione 🙂
I fornitori di cloud pubblici stanno anche aggiungendo nuove funzionalità e rilasciando prodotti locali. Nei prossimi anni, i fornitori di cloud svilupperanno il supporto per ambienti ibridi e multi-cloud.
:
- Valutate oggettivamente le capacità della vostra organizzazione nel distribuire e gestire strumenti adeguati, e prendete in considerazione servizi alternativi per la gestione dei container cloud.
- Selezionate con cura il software, utilizzate open source dove possibile.
- Scegliete fornitori con modelli operativi unificati in ambienti ibridi che offrono la gestione di cluster unificati da un'unica interfaccia, così come fornitori che semplificano l'uso autonomo dell'IaaS.
:
- È utile cercare distribuzioni che supportano l'alta disponibilità out-of-the-box. Questo include supporto per più architetture fondamentali, componenti etcd ad alta disponibilità e anche backup e ripristino.
- Per garantire la mobilità degli ambienti Kubernetes, è meglio scegliere fornitori cloud che supportano un'ampia gamma di modelli di distribuzione: da quelli locali a quelli ibridi e multi-cloud.
- Le offerte dei fornitori devono essere valutate anche in base alla semplicità di configurazione, installazione e creazione di cluster, nonché aggiornamenti, monitoraggio e risoluzione dei problemi. Requisito fondamentale: supporto per aggiornamenti completamente automatizzati del cluster con zero downtime. La soluzione scelta deve anche consentire l'esecuzione manuale degli aggiornamenti.
- La gestione dell'identificazione e dell'accesso è importante sia dal punto di vista della sicurezza che da quello della gestione. Assicurati che la distribuzione Kubernetes scelta supporti l'integrazione con i sistemi di autenticazione e autorizzazione utilizzati all'interno dell'azienda. RBAC e il controllo degli accessi dettagliato sono anche set di funzionalità importanti.
- La distribuzione scelta deve avere una propria soluzione di rete, definita dal software e che copra un'ampia gamma di requisiti posti da varie applicazioni o infrastrutture, oppure deve supportare una delle implementazioni di rete basate su CNI più popolari, tra cui Flannel, Calico, kube-router o OVN.
L'implementazione dei container in produzione sta diventando una direzione principale, come dimostrano i risultati di un sondaggio condotto al sulle infrastrutture, operazioni e strategie cloud (IOCS) nel dicembre 2018:

Come vediamo, il 27% degli intervistati utilizza già i container nel lavoro e il 63% ha intenzione di farlo.
In Il 24% dei rispondenti ha dichiarato di investire più di mezzo milione di dollari all'anno in tecnologie dei container, mentre il 17% dei rispondenti spende più di un milione di dollari all'anno per esse.
L'articolo è stato preparato dal team della piattaforma cloud .
Cosa leggere ancora sull'argomento:
- .
- .
- .
Fonte: habr.com
