ITServicenet = Kubernetes + Ceph + Nextcloud

Novembre 18, 2021
kubernetes nextcloud ceph itservicenet

Indice

  1. Introduzione
  2. L'era del deployment in container
  3. Perché necessito di Kubernetes e cosa posso farci
  4. ITServicenet = Kubernetes + Ceph + Nextcloud

Introduzione

Nel nostro lavoro quotidiano entrando in aziende di ogni tipo constatiamo la continua ed esasperata creazione di Virtual Machine anche solo per far eseguire semplici programmi dedicati ad una specifica attività.

Questo esubero di VM alla lunga appesantisce l’infrastruttura di virtualizzazione (sia essa HyperV, Vmware o Kvm, tanto per citare le più famose). Infatti una VM include l’astrazione hardware ed il sistema operativo in modo completo, quando invece in molti casi non sarebbe strettamente necessario avere tutto a disposizione.

Consapevoli di questa situazione e complice il fatto che le infrastrutture IT devono scalare e dimensionarsi in modo dinamico, senza dimenticare la necessità di avere sempre più servizi in cloud, gli IT Manager hanno iniziato a convergere verso il concetto di Container e di Kubernetes, uno tra gli orchestratori più famosi.

Dunque questa tecnologia ha iniziato a diffondersi in modo inesorabile.

Il container, elemento portante della infrastruttura Kubernetes rappresenta l’astrazione dell’applicativo fine a se stesso.

L'era del deployment in container

I container sono simili alle macchine virtuali, ma presentano un modello di isolamento più leggero, condividendo il sistema operativo (OS) tra le applicazioni. Pertanto sono considerati più leggeri.

Analogamente a una macchina virtuale, un container dispone di una segregazione di filesystem, CPU, memoria, PID e altro ancora.

Poiché disaccoppiati dall'infrastruttura sottostante, risultano portabili tra differenti cloud e diverse distribuzioni.

I container sono diventati popolari dal momento che offrono molteplici vantaggi, ad esempio:

  • Creazione e distribuzione di applicazioni in modalità Agile: maggiore facilità ed efficienza nella creazione di immagini container rispetto all'uso di immagini VM.
  • Adozione di pratiche per lo sviluppo/test/rilascio continuativo: consente la frequente creazione e la distribuzione di container image affidabili, dando la possibilità di fare rollback rapidi e semplici (grazie all'immutabilità dell'immagine stessa).
  • Separazione delle fasi di Dev e Ops: le container image vengono prodotte al momento della compilazione dell'applicativo piuttosto che nel momento del rilascio, permettendo così di disaccoppiare le applicazioni dall'infrastruttura sottostante.
  • L'osservabilità: che non riguarda solo le informazioni e le metriche del sistema operativo, ma anche lo stato di salute e altri segnali dalle applicazioni.
  • Coerenza di ambiente tra sviluppo, test e produzione: i container funzionano allo stesso modo su un computer portatile come nel cloud.
  • Portabilità tra cloud e sistemi operativi differenti: lo stesso container funziona su Ubuntu, RHEL, CoreOS, on-premise, nei più grandi cloud pubblici e da qualsiasi altra parte.
  • Gestione incentrata sulle applicazioni: aumenta il livello di astrazione, dall'esecuzione di un sistema operativo su hardware virtualizzato, all'esecuzione di un'applicazione su un sistema operativo utilizzando risorse logiche.
  • Microservizi liberamente combinabili, distribuiti, ad alta scalabilità: le applicazioni sono suddivise in pezzi più piccoli e indipendenti che possono essere distribuiti e gestiti dinamicamente - niente stack monolitici che girano su una singola grande macchina.
  • Isolamento delle risorse: le prestazioni delle applicazioni sono prevedibili.
  • Utilizzo delle risorse: alta efficienza e densità.

Perché necessito di Kubernetes e cosa posso farci

I container sono un buon modo per distribuire ed eseguire le tue applicazioni. In un ambiente di produzione, è necessario gestire i container che eseguono le applicazioni e garantire che non si verifichino interruzioni dei servizi. Per esempio, se un container si interrompe, è necessario avviare un nuovo container. Non sarebbe più facile se questo comportamento fosse gestito direttamente da un sistema?

È proprio qui che Kubernetes viene in soccorso!

Ti fornisce un framework per far funzionare i sistemi distribuiti in modo resiliente.

Si occupa della scalabilità, del failover, della distribuzione delle tue applicazioni.

E per esempio può facilmente gestire i rilasci con modalità Canary deployment.

Inoltre Kubernetes offre anche:

  • Scoperta dei servizi e bilanciamento del carico: può esporre un container usando un nome DNS o il suo indirizzo IP. Se il traffico verso un container è alto Kubernetes è in grado di distribuire il traffico su più container in modo che il servizio rimanga stabile.
  • Orchestrazione dello storage: Kubernetes ti permette di montare automaticamente un sistema di archiviazione a scelta, come per esempio storage locale, dischi forniti da cloud pubblici e altro ancora.
  • Rollout e rollback automatizzati: si può utilizzare Kubernetes per descrivere lo stato desiderato per i propri container, e sarà lui ad occuparsi di cambiare lo stato attuale per raggiungere quello desiderato ad una velocità controllata. Per esempio, puoi automatizzare Kubernetes per creare nuovi container per il tuo servizio, rimuovere i container esistenti e adattare le loro risorse a quelle richieste dal nuovo container.
  • Ottimizzazione dei carichi: fornisci a Kubernetes un cluster di nodi per eseguire i container. Puoi istruire su quanta CPU e memoria (RAM) ha bisogno ogni singolo container. Kubernetes allocherà i container sui nodi per massimizzare l'uso delle risorse a disposizione.
  • Self-healing: Kubernetes riavvia i container che si bloccano, sostituisce container, termina i container che non rispondono agli health checks, ed evita di far arrivare traffico ai container che non sono ancora pronti per rispondere correttamente.
  • Gestione di informazioni sensibili e della configurazione: Kubernetes consente di memorizzare e gestire informazioni sensibili, come le password, i token OAUTH e le chiavi SSH. Puoi distribuire e aggiornare le informazioni sensibili e la configurazione dell'applicazione senza dover ricostruire le immagini dei container e senza svelare le stesse informazioni nella configurazione del tuo sistema.

ITServicenet = Kubernetes + Ceph + Nextcloud

Ci siamo sempre impegnati a rendere i sistemi IT semplici ed affidabili.
La nostra ambizione è poter offrire un sistema scalabile, flessibile, sicuro utilizzando quello che oggi è il massimo offerto dal mercato Open Source Professionale.
Ci siamo voluti specializzare nelle tecnologie che fanno uso della distribuzione del dato e che in forme più o meno elaborate lavorano in modo autonomo ed automatico per permetterci di erogare servizi in alta affidabilità e alta persistenza del dato (self healing).

Quindi oggi possiamo installare un sistema full-stack di gestione container partendo dallo storage CEPH, che ci dà accesso a block device, filesystem e storage S3, quindi Kubernetes per tutti i punti sopra elencati e l’erogazione di servizi Web style come Nextcloud di cui siamo partner ufficiali per l’Italia - https://nextcloud-italia.it/

Il nostro ambiente così istanziato permette di erogare il servizio Nextcloud in modalità altamente scalabile, clusterizzata e di facile manutenzione.

Tutti gli applicativi Web Style possono essere erogati con la medesima modalità dalla infrastruttura Kubernetes + Ceph.

Si parlerà ampiamente di questo ad Open Source Week 2021 - https://opensourceweek.it/

Per registrarsi all’evento è possibile cliccare qui: registrazione open source week.

Per consulenze, preventivi o dettagli contattateci qui: https://www.itservicenet.net/contattaci/

o scriveteci direttamente a m.marcato@itservicenet.net.

Ing. Alessandro Bolgia

Bibliografia:

https://kubernetes.io/it/docs/concepts/overview/what-is-kubernetes/

© 2022 All rights reserved