Best practice e best practice per l'esecuzione di contenitori e Kubernetes negli ambienti di produzione

Best practice e best practice per l'esecuzione di contenitori e Kubernetes negli ambienti di produzione
L’ecosistema della tecnologia di containerizzazione è in rapida evoluzione e cambiamento, quindi mancano buone pratiche di lavoro in questo settore. Tuttavia, Kubernetes e i container vengono utilizzati sempre più spesso, sia per modernizzare le applicazioni legacy sia per sviluppare moderne applicazioni cloud. 

Squadra Kubernetes aaS da Mail.ru ha raccolto previsioni, consigli e best practice per i leader di mercato di Gartner, 451 Research, StacxRoх e altri. Consentiranno e accelereranno l’implementazione dei container negli ambienti di produzione.

Come sapere se la tua azienda è pronta per distribuire i container in un ambiente di produzione

Secondo Gartner, nel 2022, oltre il 75% delle organizzazioni utilizzerà applicazioni containerizzate in produzione. Si tratta di una percentuale notevolmente superiore rispetto a quella attuale, in cui meno del 30% delle aziende utilizza tali applicazioni. 

Secondo Ricerca 451Il mercato previsto per le applicazioni tecnologiche dei container nel 2022 sarà di 4,3 miliardi di dollari, ovvero più del doppio dell’importo previsto nel 2019, con un tasso di crescita del mercato del 30%.

В Sondaggio Portworx e Aqua Security L’87% degli intervistati ha affermato di utilizzare attualmente le tecnologie dei container. Per fare un confronto, nel 2017 gli intervistati erano il 55%. 

Nonostante il crescente interesse e l’adozione dei container, metterli in produzione richiede una curva di apprendimento dovuta all’immaturità tecnologica e alla mancanza di know-how. Le organizzazioni devono essere realistiche riguardo ai processi aziendali che richiedono la containerizzazione delle applicazioni. I leader IT dovrebbero valutare se dispongono delle competenze necessarie per andare avanti con la necessità di apprendere rapidamente. 

Esperti Gartner Riteniamo che le domande nell'immagine seguente ti aiuteranno a determinare se sei pronto per distribuire i contenitori in produzione:

Best practice e best practice per l'esecuzione di contenitori e Kubernetes negli ambienti di produzione

Gli errori più comuni quando si utilizzano i contenitori in produzione

Le organizzazioni spesso sottovalutano lo sforzo richiesto per gestire i contenitori in produzione. Lo ha scoperto Gartner Alcuni errori comuni negli scenari dei clienti quando si utilizzano contenitori in ambienti di produzione:

Best practice e best practice per l'esecuzione di contenitori e Kubernetes negli ambienti di produzione

Come proteggere i contenitori

La sicurezza non può essere affrontata “dopo”. Deve essere integrato nel processo DevOps, motivo per cui esiste anche un termine speciale: DevSecOps. Le organizzazioni devono pianificare proteggere l'ambiente del vostro container durante l'intero ciclo di vita dello sviluppo, che include il processo di creazione e sviluppo, distribuzione e lancio dell'applicazione.

Raccomandazioni di Gartner

  1. Integra il processo di scansione delle immagini delle applicazioni per individuare eventuali vulnerabilità nella pipeline di integrazione continua/distribuzione continua (CI/CD). Le applicazioni vengono scansionate nelle fasi di creazione e avvio del software. Sottolineare la necessità di scansionare e identificare componenti, librerie e framework open source. Gli sviluppatori che utilizzano versioni vecchie e vulnerabili sono una delle principali cause di vulnerabilità dei contenitori.
  2. Migliora la tua configurazione con i test del Center for Internet Security (CIS), disponibili sia per Docker che per Kubernetes.
  3. Assicurati di applicare controlli di accesso, garantire la separazione dei compiti e implementare una politica di gestione dei segreti. Le informazioni sensibili, come le chiavi SSL (Secure Sockets Layer) o le credenziali del database, vengono crittografate dall'orchestratore o da servizi di gestione di terze parti ed esposte in fase di esecuzione
  4. Evita contenitori elevati gestendo policy di sicurezza per ridurre potenziali rischi di violazione.
  5. Utilizza strumenti di sicurezza che forniscono whitelist, monitoraggio comportamentale e rilevamento di anomalie per prevenire attività dannose.

Raccomandazioni di StacxRox:

  1. Sfrutta le funzionalità integrate di Kubernetes. Configura l'accesso per gli utenti che utilizzano i ruoli. Assicurati di non concedere autorizzazioni non necessarie a singole entità, anche se potrebbe essere necessario del tempo per riflettere sulle autorizzazioni minime richieste. Potrebbe essere forte la tentazione di concedere ampi privilegi all'amministratore del cluster poiché ciò consente inizialmente di risparmiare tempo. Tuttavia, qualsiasi compromesso o errore nel conto può portare in seguito a conseguenze devastanti. 
  2. Evita permessi di accesso duplicati. A volte può essere utile che ruoli diversi si sovrappongano, ma ciò può portare a problemi operativi e creare punti ciechi durante la rimozione delle autorizzazioni. È anche importante rimuovere i ruoli non utilizzati e inattivi.
  3. Imposta le politiche di rete: isola i moduli per limitarne l'accesso; consentire esplicitamente l'accesso a Internet a quei moduli che lo necessitano utilizzando i tag; Consentire esplicitamente la comunicazione tra i moduli che devono comunicare tra loro. 

Come organizzare il monitoraggio dei contenitori e dei servizi in essi contenuti

Sicurezza e Monitoraggio - principali problemi delle aziende durante la distribuzione di cluster Kubernetes. Gli sviluppatori sono sempre più concentrati sulle caratteristiche delle applicazioni che sviluppano piuttosto che sugli aspetti monitorare queste applicazioni

Raccomandazioni di Gartner:

  1. Prova a monitorare lo stato dei contenitori o dei servizi in essi contenuti insieme al monitoraggio dei sistemi host.
  2. Cerca fornitori e strumenti con una profonda integrazione nell'orchestrazione dei contenitori, in particolare Kubernetes.
  3. Scegli strumenti che forniscono registrazione dettagliata, rilevamento automatico dei servizi e consigli in tempo reale utilizzando analisi e/o machine learning.

Il blog SolarWinds consiglia:

  1. Utilizza gli strumenti per individuare e monitorare automaticamente i parametri dei contenitori, correlando i parametri delle prestazioni come CPU, memoria e tempo di attività.
  2. Garantisci una pianificazione ottimale della capacità prevedendo le date di esaurimento della capacità in base ai parametri di monitoraggio dei container.
  3. Monitora la disponibilità e le prestazioni delle applicazioni containerizzate, utile sia per la pianificazione della capacità che per la risoluzione dei problemi relativi alle prestazioni.
  4. Automatizza i flussi di lavoro fornendo supporto per la gestione e la scalabilità dei contenitori e dei relativi ambienti di hosting.
  5. Automatizza il controllo degli accessi per monitorare la tua base utenti, disabilitare gli account obsoleti e ospite e rimuovere i privilegi non necessari.
  6. Assicurati che il tuo set di strumenti possa monitorare questi contenitori e applicazioni in più ambienti (cloud, on-premise o ibridi) per visualizzare e confrontare le prestazioni su infrastruttura, rete, sistemi e applicazioni.

Come archiviare i dati e garantirne la sicurezza

Con l’avvento dei contenitori stateful, i clienti devono considerare la presenza di dati all’esterno dell’host e la necessità di proteggerli. 

Secondo Sondaggio Portworx e Aqua Security, la sicurezza dei dati è in cima alla lista delle preoccupazioni in materia di sicurezza citate dalla maggior parte degli intervistati (61%). 

La crittografia dei dati è la principale strategia di sicurezza (64%), ma gli intervistati utilizzano anche il monitoraggio in fase di esecuzione

(49%), scansione dei registri per individuare vulnerabilità (49%), scansione per vulnerabilità nelle pipeline CI/CD (49%) e blocco delle anomalie tramite la protezione runtime (48%).

Raccomandazioni di Gartner:

  1. Scegli soluzioni di storage basate su principi architettura dei microservizi. È meglio concentrarsi su quelli che soddisfano i requisiti di archiviazione dei dati per i servizi container, sono indipendenti dall'hardware, guidati da API, hanno un'architettura distribuita, supportano la distribuzione locale e la distribuzione nel cloud pubblico.
  2. Evita plugin e interfacce proprietari. Scegli fornitori che forniscono l'integrazione Kubernetes e supportano interfacce standard come CSI (Container Storage Interfaces).

Come lavorare con le reti

Il tradizionale modello di rete aziendale, in cui i team IT creano ambienti di sviluppo, test, controllo qualità e produzione in rete per ciascun progetto, non sempre si adatta bene al flusso di lavoro di sviluppo continuo. Inoltre, le reti di contenitori si estendono su più livelli.

В blog Magalix raccolto regole di alto livello che l'implementazione di una soluzione di rete cluster deve rispettare:

  1. I pod pianificati sullo stesso nodo devono essere in grado di comunicare con altri pod senza utilizzare NAT (Network Address Translation).
  2. Tutti i daemon di sistema (processi in background come kubelet) in esecuzione su un particolare nodo possono comunicare con i pod in esecuzione sullo stesso nodo.
  3. Pod che utilizzano rete ospite, deve essere in grado di comunicare con tutti gli altri pod su tutti gli altri nodi senza utilizzare NAT. Tieni presente che la rete host è supportata solo su host Linux.

Le soluzioni di rete devono essere strettamente integrate con le primitive e le policy Kubernetes. I leader IT dovrebbero puntare a un elevato grado di automazione della rete e fornire agli sviluppatori gli strumenti giusti e una flessibilità sufficiente.

Raccomandazioni di Gartner:

  1. Scopri se il tuo CaaS (container as a service) o il tuo SDN (Software Defined Network) supporta le reti Kubernetes. In caso contrario o se il supporto non è sufficiente, utilizza l'interfaccia di rete CNI (Container Network Interface) per i tuoi contenitori, che supporta le funzionalità e le policy necessarie.
  2. Assicurati che il tuo CaaS o PaaS (platform as a service) supporti la creazione di controller di ingresso e/o bilanciatori del carico che distribuiscono il traffico in entrata tra i nodi del cluster. Se questa non è un'opzione, esplora l'utilizzo di proxy di terze parti o mesh di servizi.
  3. Forma i tuoi ingegneri di rete sulle reti Linux e sugli strumenti di automazione della rete per ridurre il divario di competenze e aumentare l'agilità.

Come gestire il ciclo di vita dell'applicazione

Per una distribuzione automatizzata e fluida delle applicazioni, è necessario integrare l'orchestrazione dei contenitori con altri strumenti di automazione, come i prodotti IaC (Infrastructure as Code). Questi includono Chef, Puppet, Ansible e Terraform. 

Sono inoltre necessari strumenti di automazione per la creazione e l'implementazione delle applicazioni (vedere “Magic Quadrant per l'orchestrazione del rilascio delle applicazioni"). I contenitori forniscono inoltre funzionalità di estensibilità simili a quelle disponibili durante la distribuzione di macchine virtuali (VM). Pertanto, i leader IT devono avere strumenti di gestione del ciclo di vita dei contenitori.

Raccomandazioni di Gartner:

  1. Stabilisci standard per le immagini del contenitore di base in base a dimensioni, licenza e flessibilità per consentire agli sviluppatori di aggiungere componenti.
  2. Utilizza i sistemi di gestione della configurazione per gestire il ciclo di vita dei contenitori che stratificano la configurazione in base alle immagini di base situate in repository pubblici o privati.
  3. Integra la tua piattaforma CaaS con strumenti di automazione per automatizzare l'intero flusso di lavoro dell'applicazione.

Come gestire i contenitori con gli orchestratori

La funzionalità principale per la distribuzione dei contenitori viene fornita a livello di orchestrazione e pianificazione. Durante la pianificazione, i contenitori vengono posizionati sugli host ottimali nel cluster, come imposto dai requisiti del livello di orchestrazione. 

Kubernetes è diventato di fatto lo standard di orchestrazione dei container con una comunità attiva ed è supportato dalla maggior parte dei principali fornitori commerciali. 

Raccomandazioni di Gartner:

  1. Definire i requisiti di base per controlli di sicurezza, monitoraggio, gestione delle policy, persistenza dei dati, rete e gestione del ciclo di vita dei contenitori.
  2. In base a questi requisiti, seleziona lo strumento più adatto alle tue esigenze e ai tuoi casi d'uso.
  3. Utilizzare la ricerca Gartner (vedere "Come scegliere un modello di distribuzione Kubernetes") per comprendere i pro e i contro dei diversi modelli di distribuzione Kubernetes e scegliere quello migliore per la tua applicazione.
  4. Seleziona un fornitore in grado di fornire orchestrazione ibrida per contenitori di lavoro in più ambienti con una stretta integrazione backend, piani di gestione comuni e modelli di prezzo coerenti.

Come utilizzare le funzionalità dei fornitori di servizi cloud

Gartner ci credel'interesse per l'implementazione di contenitori su cloud pubblico IaaS sta crescendo grazie alla disponibilità di offerte CaaS già pronte, nonché alla stretta integrazione di queste offerte con altri prodotti offerti dai fornitori di servizi cloud.

I cloud IaaS offrono consumo di risorse on-demand, scalabilità rapida e... gestione del servizio, che contribuirà a evitare la necessità di una conoscenza approfondita dell'infrastruttura e della sua manutenzione. La maggior parte dei provider cloud offre un servizio di gestione dei contenitori e alcuni offrono più opzioni di orchestrazione. 

I principali fornitori di servizi gestiti nel cloud sono presentati nella tabella: 

Fornitore di servizi cloud
Tipo di servizio
Prodotto/servizio

Alibaba
Servizio cloud nativo
Servizio Alibaba Cloud Container, Servizio Alibaba Cloud Container per Kubernetes

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

Sciame Gigante
MSP
Infrastruttura Kubernetes gestita da Giant Swarm

Google
Servizio cloud nativo
Motore contenitori di Google (GKE)

IBM
Servizio cloud nativo
Servizio IBM Cloud Kubernetes

Microsoft
Servizio cloud nativo
Servizio Azure Kubernetes, Azure Service Fabric

Oracle
Servizio cloud nativo
Motore contenitori OCI per Kubernetes

Platform9
MSP
Kubernetes gestito

Red Hat
Servizio ospitato
OpenShift dedicato e online

VMware
Servizio ospitato
Cloud PKS (Beta)

Soluzioni cloud Mail.ru*
Servizio cloud nativo
Contenitori cloud di Mail.ru

* Non lo nascondiamo, ci siamo aggiunti qui durante la traduzione :)

I fornitori di cloud pubblici stanno inoltre aggiungendo nuove funzionalità e rilasciando prodotti on-premise. Nel prossimo futuro, i fornitori di servizi cloud svilupperanno il supporto per cloud ibridi e ambienti multi-cloud. 

Raccomandazioni Gartner:

  1. Valuta obiettivamente la capacità della tua organizzazione di distribuire e gestire strumenti appropriati e prendere in considerazione servizi alternativi di gestione dei contenitori cloud.
  2. Scegli il software con attenzione, utilizza l'open source ove possibile.
  3. Scegli fornitori con modelli operativi comuni in ambienti ibridi che offrono un unico pannello di gestione dei cluster federati, nonché fornitori che semplificano l'hosting autonomo di IaaS.

Alcuni suggerimenti per scegliere un provider aaS Kubernetes dal blog Replex:

  1. Vale la pena cercare distribuzioni che supportino l'alta disponibilità immediatamente. Ciò include il supporto per più architetture principali, componenti etcd ad alta disponibilità e backup e ripristino.
  2. Per garantire la mobilità nei tuoi ambienti Kubernetes, è meglio scegliere provider cloud che supportino un'ampia gamma di modelli di distribuzione, da quello on-premise all'ibrido al multi-cloud. 
  3. Le offerte dei provider dovrebbero essere valutate anche in base alla facilità di configurazione, installazione e creazione di cluster, nonché agli aggiornamenti, al monitoraggio e alla risoluzione dei problemi. Il requisito di base è supportare aggiornamenti del cluster completamente automatizzati senza tempi di inattività. La soluzione scelta dovrebbe consentire anche di eseguire gli aggiornamenti manualmente. 
  4. La gestione delle identità e degli accessi è importante sia dal punto di vista della sicurezza che della governance. Assicurati che la distribuzione Kubernetes che scegli supporti l'integrazione con gli strumenti di autenticazione e autorizzazione che utilizzi internamente. Anche l'RBAC e il controllo capillare degli accessi sono set di funzionalità importanti.
  5. La distribuzione scelta deve disporre di una soluzione di rete nativa definita dal software che copra un'ampia gamma di requisiti applicativi o infrastrutturali diversi oppure supportare una delle popolari implementazioni di rete basate su CNI, tra cui Flannel, Calico, kube-router o OVN.

L'introduzione dei contenitori nella produzione sta diventando la direzione principale, come dimostrano i risultati di un sondaggio condotto su Sessioni Gartner su infrastrutture, operazioni e strategie cloud (IOCS) nel dicembre 2018:

Best practice e best practice per l'esecuzione di contenitori e Kubernetes negli ambienti di produzione
Come potete vedere, il 27% degli intervistati utilizza già i contenitori nel proprio lavoro e il 63% ha intenzione di farlo.

В Sondaggio Portworx e Aqua Security Il 24% degli intervistati ha riferito di investire più di mezzo milione di dollari all’anno in tecnologie per container, e il 17% degli intervistati ha speso più di un milione di dollari all’anno in esse. 

Articolo preparato dal team della piattaforma cloud Mail.ru soluzioni cloud.

Cos'altro leggere sull'argomento:

  1. Best practice DevOps: rapporto DORA.
  2. Kubernetes nello spirito della pirateria con un modello per l'implementazione.
  3. 25 strumenti utili per la distribuzione e l'adozione di Kubernetes.

Fonte: habr.com

Aggiungi un commento