CoreOS: il sistema operativo Linux minimale per l'epoca dei container

CoreOS (dicembre 2013) di Alex Polvi e Brandon Philips: distribuzione Linux minimale, immutabile, con aggiornamenti atomici e orientata all'esecuzione di container. L'embrione di molte idee dell'era cloud-native.

Open SourceWebR&D CoreOSContainerLinuxImmutableDockerCloudOpen Source

Un OS pensato per i container

Il marzo 2013 ha visto l’uscita pubblica di Docker, che porta i container Linux (basati su cgroups, namespaces) a uno status di tecnologia mainstream. Le distribuzioni Linux tradizionali — Ubuntu, Debian, CentOS, RHEL — sono state progettate negli anni ‘90-2000 per server pet: macchine long-lived, configurate manualmente, aggiornate pacchetto per pacchetto. Le caratteristiche tipiche (decine di migliaia di pacchetti disponibili, gestione stateful, kernel custom) sono sovradimensionate per un host che deve solo eseguire container.

CoreOS nasce nell’ottobre 2013 come startup di Alex Polvi e Brandon Philips con una tesi netta: serve un OS progettato nativamente per i container. La prima release pubblica stabile è di dicembre 2013.

Caratteristiche di design

CoreOS Linux (poi rinominato Container Linux nel 2016) introduce scelte radicali per un sistema operativo server:

  • Immagine minimale — circa 200 MB di base, senza package manager runtime. Solo kernel, systemd, OpenSSH, Docker/rkt
  • Filesystem read-only per root/usr è read-only; la configurazione sta in /etc, i dati in /var, le applicazioni dentro container
  • Aggiornamenti atomici A/B — due partizioni /usr, CoreOS scarica la nuova immagine nella partizione inattiva, si riavvia sull’aggiornata; in caso di failure può tornare alla vecchia
  • Automatic updates — di default ogni nodo si aggiorna automaticamente secondo politiche di “canal” (stable, beta, alpha)
  • Cloud-config — file YAML di provisioning (poi sostituito da Ignition in versioni successive) per configurare unità systemd, account, rete, certificati
  • Systemd everywhere — tutti i servizi sono unit systemd, inclusi Docker
  • Licenza Apache 2.0 per i componenti originali CoreOS

I componenti CoreOS

L’ecosistema iniziale CoreOS si articola in:

  • CoreOS Linux — la distribuzione base
  • etcd (febbraio 2014) — distributed key-value store consistente (Raft consensus), per configurazione distribuita. Diventerà componente centrale di Kubernetes
  • fleet — orchestratore di servizi distribuiti su cluster CoreOS, basato su systemd + etcd. Poi deprecato a favore di Kubernetes
  • rkt (Rocket, 2014) — runtime container alternativo a Docker, con approccio più modulare
  • flannel — networking per container
  • Container Linux Update Operator — componente successivo di gestione aggiornamenti

La filosofia “immutable infrastructure”

CoreOS promuove il concetto di immutable infrastructure: i server non vengono configurati modificandoli, ma sostituendoli. Se cambi qualcosa al sistema base, ricostruisci un’immagine nuova, la rilasci, i nodi si riavviano aggiornati. È l’opposto del modello pets tradizionale; anticipa pratiche che diventeranno diffuse nell’era Kubernetes.

Questo approccio si abbina naturalmente ai container Docker: l’applicazione è l’immagine container, il sistema operativo è l’immagine CoreOS, entrambi sono artefatti versionati e riproducibili.

Il mercato 2013-2018

Al debutto 2013 i concorrenti di CoreOS sono ancora ridotti:

  • Ubuntu Core (Canonical) — in preparazione, rilascio 2014-2015
  • RancherOS (Rancher Labs) — 2015, molto minimale
  • Project Atomic (Red Hat) — 2014, distribuzioni trimmed di RHEL/CentOS per container

CoreOS ha la prima mossa e una comunità forte. Tra 2014 e 2017 CoreOS è la scelta di riferimento per cluster container in produzione per:

  • Startup che hanno adottato Docker precocemente
  • Google Cloud — GCE CoreOS come OS disponibile
  • AWS — CoreOS come AMI supportata
  • Ambienti on-premise con Kubernetes precoci

Acquisizione Red Hat e convergenza

Nel gennaio 2018 Red Hat acquisisce CoreOS Inc. per 250 milioni di dollari. L’integrazione porta a:

  • Fedora CoreOS — evoluzione di Container Linux nell’ecosistema Fedora
  • Red Hat CoreOS (RHCOS) — versione enterprise, base di OpenShift 4
  • etcd consolidato come storage backend Kubernetes
  • rkt deprecato (Kubernetes standardizza su Container Runtime Interface e CRI-O / containerd)
  • Operator Framework — pattern nato in CoreOS per gestire applicazioni stateful in Kubernetes, diventa mainstream

Container Linux riceve l’ultimo update nel maggio 2020; Fedora CoreOS/RHCOS ne raccoglie l’eredità.

Cosa resta di CoreOS

Il progetto CoreOS come brand autonomo finisce nel 2020, ma la sua influenza è visibile ovunque nel cloud-native:

  • etcd è centrale in ogni deployment Kubernetes
  • Immutable infrastructure è pratica standard
  • A/B atomic updates emergono in altri OS (Talos Linux, Bottlerocket di AWS, Flatcar Linux fork di Container Linux)
  • Operator pattern è il modello per applicazioni Kubernetes complesse

Il pattern distribuzione minimale + container + aggiornamenti atomici è oggi standard per OS specializzati (MicroK8s, Bottlerocket, FlatCar, RancherOS).

Nel contesto italiano

Al 2013-2014 CoreOS è adottato sperimentalmente da team italiani avanzati (startup Docker-native, laboratori di ricerca, alcuni grandi ISP). Con l’arrivo di Kubernetes (2015) e la maturazione dell’offerta cloud pubblico italiana, la filosofia CoreOS si integra nel tessuto delle piattaforme container italiane, sia on-premise che cloud.


Riferimenti: CoreOS (ottobre 2013), Alex Polvi, Brandon Philips. Prima release pubblica dicembre 2013. etcd, fleet, rkt. Licenza Apache 2.0. Acquisizione Red Hat (gennaio 2018, 250M USD). Container Linux end-of-life maggio 2020; continuazione come Fedora CoreOS e Red Hat CoreOS (OpenShift 4).

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi