All Projects → roburio → Albatross

roburio / Albatross

Licence: isc
Albatross: orchestrate and manage MirageOS unikernels with Solo5

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to Albatross

Linux Unattended Installation
This project provides all you need to create an unattended installation of a minimal setup of Linux.
Stars: ✭ 215 (+152.94%)
Mutual labels:  provisioning, virtual-machine
nautilus
Nautilus Aerokernel
Stars: ✭ 30 (-64.71%)
Mutual labels:  virtual-machine, unikernel
Provision
Digital Rebar Provision is a simple and powerful Golang executable that provides a complete API-driven DHCP/PXE/TFTP provisioning system.
Stars: ✭ 252 (+196.47%)
Mutual labels:  provisioning, deployment
Core
Eru, a simple, stateless, flexible, production-ready orchestrator designed to easily integrate into existing workflows. Can run any virtualization things in long or short time.
Stars: ✭ 147 (+72.94%)
Mutual labels:  virtual-machine, orchestration
awesome-microvm
🎉 A curated list of awesome things related to Micro-VMs
Stars: ✭ 22 (-74.12%)
Mutual labels:  virtual-machine, unikernel
Ansible Pan
Ansible modules for Palo Alto Networks NGFWs
Stars: ✭ 197 (+131.76%)
Mutual labels:  provisioning, orchestration
ops-examples
A repository of basic and advanced examples using Ops
Stars: ✭ 68 (-20%)
Mutual labels:  orchestration, unikernel
Azuredatabricksbestpractices
Version 1 of Technical Best Practices of Azure Databricks based on real world Customer and Technical SME inputs
Stars: ✭ 186 (+118.82%)
Mutual labels:  provisioning, deployment
Amp
** THIS PROJECT IS STOPPED ** An open source CaaS for Docker, batteries included.
Stars: ✭ 74 (-12.94%)
Mutual labels:  provisioning, orchestration
ultimate-kubernetes-bootcamp
Ultimate Kubernetes Bootcamp
Stars: ✭ 43 (-49.41%)
Mutual labels:  deployment, orchestration
akk-stack
Containerized EverQuest Emulator Server Environment
Stars: ✭ 36 (-57.65%)
Mutual labels:  deployment, orchestration
Rundeck
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
Stars: ✭ 4,426 (+5107.06%)
Mutual labels:  deployment, orchestration
misp-vagrant
Deploy MISP Project software with Vagrant.
Stars: ✭ 37 (-56.47%)
Mutual labels:  deployment, virtual-machine
atlassian-kubernetes
All things Atlassian and Kubernetes
Stars: ✭ 30 (-64.71%)
Mutual labels:  deployment, orchestration
Flubucore
A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.
Stars: ✭ 695 (+717.65%)
Mutual labels:  deployment, orchestration
Autodmg
Create deployable system images from OS X installer
Stars: ✭ 1,179 (+1287.06%)
Mutual labels:  deployment
Corewar
School 42 project // Implementation of programming game “Core War” [Champions + Assembler + Disassembler + Virtual Machine + Visualizer]
Stars: ✭ 76 (-10.59%)
Mutual labels:  virtual-machine
The forge
Our groundbreaking, lightning fast PWA CLI tool
Stars: ✭ 70 (-17.65%)
Mutual labels:  deployment
Meteor Azure
Automate Meteor deployments on Azure App Service
Stars: ✭ 69 (-18.82%)
Mutual labels:  deployment
Surf
Easy and powerful PHP deployment tool
Stars: ✭ 79 (-7.06%)
Mutual labels:  deployment

Albatross: orchestrate and manage MirageOS unikernels with Solo5

The goal of albatross is robust deployment of MirageOS unikernels using Solo5. Resources managed by albatross are network interfaces of kind tap, which are connected to already existing bridges, block devices, memory, and CPU. Each unikernel is pinned (cpuset / taskset) to a specific core.

Albatross allows remote management, to deploy or destroy a unikernel, no shell access is necessary. The remote channel is a mutually authenticated (with X.509 certificates) TLS connection. Console output of the unikernels is stored in memory in a ring buffer, and accessible from remote. Monitoring data (CPU and memory usage) of the unikernels can be collected as well, and pushed into a Influx time series database.

Albatross consists of multiple processes, each running with the least privileges. Albatross can be run next to other orchestration systems, it does not assume to be the single instance on a dom0 which creates and destroys virtual machines. Resource policies can be dynamically configured for each administrative domain (similar to DNS, a hierarchical naming scheme), and is statically checked (to decrease while going down the tree) and dynamically when a new unikernel is to be deployed.

When a unikernel was deployed on albatross, it tries the best to keep this running, even when the physical hardware reboots, or albatross is restarted. When the unikernel exits, depending on configuration and its exit code, it is re-started. The current set of running unikernels is persisted on disk, though there is no dependency or order how to restart them.

The scope of albatross is to provide a minimal orchestration system that avoids the need of shell access on the dom0. This leads to mostly immutable - or only mutable via albatross which writes a log for every administrative change - infrastructure. Further dissemination of albatross into virtual machines, and a communication interface for deploying and destroying unikernels, is being researched on.

Components

Albatross consists of a set of binaries. Several daemons, which communicate in a request-response style over Unix domain sockets, are run in the host system:

  • albatrossd: privileged to create and destroy unikernels
  • albatross-console: reads the console output of unikernels
  • albatross-log: event log
  • albatross-stats: statistics gathering (rusage, ifstat, BHyve debug counters)
  • albatross-tls-inetd: remote deployment via TLS and inetd (an alternative is albatross-tls-endpoint)
  • albatross-influx: statistic reporting from albatross-stats to influx

The main daemon is the privileged albatrossd, which supervises unikernels. It opens a listening Unix domain socket, reads the persisted unikernel configuration, starts these unikernels, and awaits commands. Access can be regulated by Unix file permissions, only those users who can write to that socket can send commands.

Albatross-console does not keep any persistent state, but a ring buffer of console output from each unikernel. These messages can be retrieved by a client, as a stream of messages (history, and whenever a new line is output, it is send to the interested client). Each unikernel output can only be read by a single client, to avoid amplification of traffic if lots of clients are connected. Albatrossd sends a message to albatross-console whenever a new unikernel is started, upon reception albatross-console opens and reads the fifo which the unikernel will write their standard output to.

Albatross-log keeps a persistent event log for albatross, can be read by clients.

Albatross-stats gathers periodically statistics (memory, CPU, network, hypervisor) from all running unikernels.

Albatross-tls-inetd is executed via inetd (socket activation), and proxy requests from remote clients to the respective daemons described above. It enforce client authentication, and use the commen names of the client certificate chain as administrative domain. The policies are embedded in CA certificates, the command is embedded in the leaf certificate. The albatross-tls-endpoint is an alternative, which listen on a TCP port and executes an asynchronous task for each incoming request.

The following command-line applications for local and remote management are provided:

  • albatross-client-local: sends a command locally to the Unix domain sockets
  • albatross-client-remote-tls: connects to a remote TLS endpoint and sends a command
  • albatross-provision-request: creates a certificate signing request containing a command
  • albatross-provision-ca: certificate authority operations: sign, generate, and revoke (NYI)
  • albatross-client-bistro: command line utility to execute a command remotely: request, sign, remote (do not use in production, requires CA key locally)

Installation

To install Albatross, run opam install albatross.

Init scripts for FreeBSD are provided in the packaging/FreeBSD/rc.d subdirectory, and a script to create a FreeBSD package packaging/FreeBSD/create_package.sh. For Linux, systemd service scripts are available in packaging/Linux.

It may help to read the outdated blog article for motivation of albatross and an overview over its functionality.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].