Il DevOps è diventato parte integrante dei processi di sviluppo di tantissime realtà e piattaforme come Kubernetes e Docker hanno contribuito a realizzare software, Web Application, API e SaaS in maniera rapida, scalabile e gestibile.
Kubernetes abilita la distribuzione flessibile di risorse e workload contando, tra le funzionalità native, zero-downtime deployment, service discovery, automatic rollout e rollback oltre alla già citata scalabilità che vuol dire abbattere i costi ed aumentare le performance in base alla domanda computazionale. Contattaci subito e senza impegno per ottenere la soluzione Kubernetes per il tuo progetto.
Kubernetes, seppur sembrando a prima vista semplice, è complesso in quanto ricchissimo di funzionalità che necessitano di priorità ed esperienza per poter trarne il massimo beneficio altrimenti guiderai un’auto da corsa come un’utilitaria. Per iniziare a migliore l’ambiente di produzione di Kubernetes ti indichiamo 12 Best Practices da utilizzare subito.
1. Utilizza l’Health Check con Readiness e Liveness Probe
Gestire sistemi grandi e distribuiti è complicato soprattuto se c’è qualcosa che non va. E’ pertanto importante utilizzare health check attagliati ai tuoi servizi ed al tuo ambiente, per farlo puoi utilizzare probe di Readiness che ti indicano che l’applicazione è pronta a fornire servizi e di Liveness che ti indicano se l’applicazione è “morta” e quindi rimuove il pod con uno nuovo.
2. Gestione delle Risorse
Specifica le richieste di risorse ed i limiti per ogni container; è anche una best practices dividere l’ambiente in parti più piccole. Mantieni alta l’attenzione verso la quantità di risorse che ogni pod usa perchè maggiore è l’utilizzo maggiori sono i costi. Avere questa visione aiuta anche a portare avanti un miglioramento continuo delle performance e delle ottimizzazioni.
3. Utilizza il Role Based Access Control (RBAC)
Il RBAC è un approccio per restringere gli accessi e le autorizzazioni sia ad utenti sia ad applicazioni sui sistemi e sulla rete. Grazie all’API rbac.authorization.k8s.io puoi creare policy autorizzative.
4. Load Balancing e Cluster Provisioning
Un cluster Kubernetes, generalmente, deve mettere in campo high availability, fault tolerance, multi-etcd, ecc.. Kubernetes, da solo, non è sufficiente per garantire tutti questi aspetti ed è necessario integrare il suo Ingress Controller con altri tool Cloud Based o meno per avere maggiore affidabilità in ambienti critici.
Puoi utilizzare pod anti affinity per assicurarti che più repliche di un pod sono distribuite sui nodi e pod disruption budgets per avere un minimo di repliche ad ogni costo.
5. Aggiungi le etichette (label) agli oggetti
Utilizza le label per identificare gli attributi degli oggetti che sono importanti, tali etichette permettono di operare “in bluk” con tutti gli oggetti che hanno la stessa etichetta e di essere richiamate per specifiche query.
6. Imposta le policy di rete
Le policy di rete permettono di abilitare esplicitamente quale traffico può passare e quale no. In questa maniera sarai in grado di bloccare il traffico che non si conforma alle tue policy ottenendo una migliore sicurezza e performance.
7. Monitoring e Logging
Più che una best practices è un must per qualsiasi ambiente di produzione. Devi monitorare e loggare gli eventi, il traffico, le configurazioni e quanto necessario, non solo per compliance a specifiche norma, ma anche per applicare il miglioramento continuo che si traduce in minori costi.
8. Inizia con le Applicazioni Stateless
Se stai iniziando ad usare Kubernetes ti consigliamo di di partire con le applicazioni Stateless in quanto è possibile sviluppare sempre con zero-downtime ed essere certi che nulla è rimasto appeso. Mantenere lo stato in maniera congruente nei Cluster è complesso ed i casi di applicazioni che mostrano dati di altri utenti ed informazioni sbagliate sono tipici errori di scarsa progettazione della gestione dello stato.
9. Abilita gli Auto Scaler
Usa gli Auto Scale nativi di Kubernes per rendere scalabile il tuo cluster. Kubernet supporta:
- Horizontal Pod Autoscaler(HPA): scala la quantità di pod in base alle capacità computazionali;
- Vertical Pod Autoscaler(VPA): scala le risorse dei singoli pod
- Cluster Autoscaling: scala interamente il pool di nodi
10. Controlla le sorgenti delle immagini
Le sorgenti delle immagini potrebbe essere pubbliche, in questo caso non sai cosa realmente sta girando nel tuo ambiente. Utilizza invece un registro qualificato al fine di applicare policy.
11. Proteggi i servizi importanti
Utilizza Pod priority per differenziare e prioritizzare i tuoi servizi al fine di garantire maggiore stabilità applicativa e mantenere attivi servizi critici.
12. Pianifica il fallimento
In un servizio Business critical devi sempre avere un piano di disaster recovery. Non averlo per quanto tu ti possa affidare a Cloud, Data Center evoluti, ti espone sempre a rischi.
Glue Labs e Kubernetes
Lo utilizziamo dalla sua nascita e ti forniamo formazione avanzata e assistenza e supporto per qualsiasi progetto Kubernetes grazie all’esperienza maturata con numerosi Clienti e la forza del nostro Gruppo Aziendale.
Contattaci subito e senza impegno per maggiori informazioni.