# CoreOS

CoreOS és un sistema operatiu lleuger de codi obert basat en el nucli de Linux i desenvolupat per proporcionar la infraestructura per als desplegaments en clúster, seguidament, se centra en l'automatització, facilitat de desplegament d'aplicacions, seguretat, fiabilitat i escalabilitat. Com sistema operatiu, CoreOS ofereix només les funcionalitats mínimes necessaris per a la implementació d'aplicacions dins de contenidors de software, junt amb mecanismes incorporats per al descobriment de serveis i el intercanvi de configuració.
CoreOS és un fork de Google Chrome OS, fent servir el seu «equip de desenvolupament de programari» (SDK) disponible sense cost, utilitzant Chromium OS com a base, al mateix temps que afegeix noves funcionalitats i personalització per suportar el maquinari utilitzat en servidors. A partir de juliol de 2014, CoreOS se desenvolupa activament, sobretot per Alex Polvi, Brandon Phillips y Michael Marineau, amb les seves característiques principals (excepte ETCD y fleet) disponibles com una versió estable.

## Sumari

CoreOS no proporciona un gestor de paquets, de manera que requereix que totes les aplicacions s'executin dins dels seus contenidors, utilitzant Docker i els seus contenidors Linux (LXC) subjacents de virtualització a nivell de sistema operatiu de tecnologia per a l'execució de múltiples sistemes Linux aïllats en un únic host de control (instància coreos). D'aquesta manera, la partició dels recursos es porta a terme a través de múltiples instàncies d'espais d'usuari aïllades, en lloc d'utilitzar un hipervisor i una màquina virtual. Aquest enfocament es basa en cgroups, funcionalitat del nucli de Linux que ofereix aïllament de l'espai de noms i habilitats per limitar, comptabilitzar i aïllar l'ús dels recursos (CPU, la memòria, disc I / O, etc.) d'un grup de processos.

### Distribució de actualitzacions

Per major seguretat y fiabilitat en actualitzacions, CoreOS empra FastPatch com un esquema de doble partició només per a la seva lectura de sistema de fitxers arrel, el que significa que les actualitzacions del sistema operatiu es duen a terme en la seva totalitat i s'instal·len en una partició secundària passiva arrel, que s'activa al reiniciar o realitzant una execució de nucli (kexec). D'aquesta manera, reversions fàcils a la versió coneguda a-ser-estable del sistema operatiu també es va assegurar, i cada partició d'arrencada pot ser firmó per a la seguretat addicional. Parts gravables del sistema de fitxers s'emmagatzemen en una partició "estat" independent, que es canvia de mida automàticament per ocupar tot l'espai disponible en disc en els reinicis.
El sistema de distribució d'actualitzacions de CoreOS es basa en el projecte de codi obert de Google Omaha, que proporciona un mecanisme per al desdoblament de les actualitzacions i el protocol subjacent petició-resposta sobre la base de XML A més, CoreOS ofereix CoreUpdate com un panell de control basat en la web per a la gestió de les actualitzacions del clúster. Les operacions disponibles a través de CoreUpdate inclueixen l'assignació dels membres del cluster als diferents grups que comparteixen les polítiques d'actualització personalitzades, revisar les falles de tot el cluster en versions de CoreOS, aturar i reiniciar les actualitzacions, i la revisió dels registres d'actualització gravats. CoreUpdate també ofereix una API basada en HTTP que permet la seva integració en els serveis de tercers o sistemes de desdoblament.

### Infraestructura de Cluster

CoreOS ofereix ETCD, un dimoni, que s'executa en tots els equips en un clúster, permetent que les dades de configuració siguin fàcilment compartides, proporcionant un registre de configuració dinàmica. Ya que los datos clave-valor almacenados dentro de ETCD son automáticamente distribuidos i replicados (con elección de maestro automatizada), todos los cambios se reflejan en todo el clúster. Además de la gestión de configuración, ETCD también proporciona el descubrimiento de servicios al permitir aplicaciones desplegadas anunciarse a sí mismas. La comunicación con ETCD se realiza a través de una API simple, que utiliza internamente JSON en la parte superior de HTTP; la API se puede utilizar directamente (a través de curl , por ejemplo), o indirectamente a través de etcdctl , que es una utilidad de línea de comandos también suministrada por CoreOS.
CoreOS también ofrece fleet, un demonio para la administración del clúster, que controla instancias systemd separadas de CoreOS a nivel del clúster. Mediante el uso de fleet, CoreOS crea un sistema d'inici distribuido que enlaza diferentes instancias de systemd y de despliegue ETCD en todo el clúster; internamente, fleet se comunica con systemd sobre D-Bus. Fleet permite tener contenedores simples o múltiples que se desplegarán en todo el clúster, con opciones más avanzadas incluyendo redundancia, failover, despliegue a miembros específicos del clúster, dependencias entre los contenedores, y el despliegue de contenedores agrupados. La utilidad de línea de comandos denominada fleetctl se utiliza para configurar y supervisar este sistema init distribuido; internamente, se comunica con el clúster ETCD. Cuando se utiliza de forma local en un miembro de clúster, fleetctl se comunica con la instancia local de ETCD; cuando se utiliza desde un host externo, el túnel SSH se utiliza con la autenticación proporcionada a través de clave SSH pública.
Tanto etcd como fleet están escritos en el lenguaje de programación GO y distribuidas bajo la licencia de Apache 2.0

## Despliegue

Además de ejecutar en hardware dedicado, donde puede ser tanto instalado en el disco permanentemente como ejecutado remotamente via PXE o iPXE, CoreOS soporta despliegues en varias plataformas de virtualización de hardware, incluyendo Amazon EC2, DigitalOcean, Google Compute Engine, Microsoft Azure, OpenStack, QEMU / KVM, Vagrant i VMware.

## Notes

* 1 2 3 4 Libby Clark. «Brandon Philips: How the CoreOS Linux Distro Uses Cgroups». Linux.com.
* 1 2 Cade Metz. «Linux Hackers Rebuild Internet From Silicon Valley Garage». Wired.
* 1 2 «CoreOS – a new approach to Linux-based server systems». Arxivat de l'original el 2014-11-29. [Consulta: 6 març 2015].
* 1 2 3 4 5 «CoreOS documentation». Arxivat de l'original el 2014-02-23. [Consulta: 6 març 2015].
* ↑ Brian Harrington. «CoreOS: Anatomy of a CoreOS update». Rackspace.
* ↑ Alex Polvi. «CoreOS Stable Release».
* ↑ «CoreOS Release Notes». Arxivat de l'original el 2018-04-10.
* ↑ Blake Mizerany. «etcd – The Road to 1.0».
* ↑ «coreos documentation». Arxivat de l'original el 2014-02-14.
* 1 2 «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ «Omaha software installer and auto-updater for Windows».
* ↑ «Omaha Overview». Arxivat de l'original el 2009-05-06.
* ↑ «Package omaha».
* ↑ «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ Brandon Philips. «etcd @ GoSF».
* ↑ «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ «coreos/fleet».
* ↑ «coreos/fleet».
* ↑ «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ «CoreOS documentation».
* ↑ Alex Crawford. «CoreOS Image Now Available On DigitalOcean».
* ↑ Jack Clark. «Google brings intercambiofuturistic Linux software CoreOS onto its cloud». The Register.
* ↑ Alex Crawford. «CoreOS Now Available On Microsoft Azure».