Káto (from Greek κάτω: 'down', 'below', 'underneath') is an opinionated software-defined infrastructure (SDI) which governs diverse computing workloads and work-flows. Like in catabolism (from Greek κάτω káto, 'downward' and βάλλειν ballein, 'to throw'), the Káto system is the catalyst used to breakdown complex monolithic platforms into its fundamental microservices.
Distinctive attributes
- Geolocation
- Multidatacenter
- Cloud agnostic
- Variable costs
- Hardware abstraction
- Endo/exo-elasticity
- Microservices
- Containerization
- Task scheduling
- CI/CD pipelines
- Service discovery
- Load balancing
- High availability
- Self-healing
CoreOS is the foundation on which Káto is built. It provides the fundamental components used to assemble container-based distributed systems: etcd is used for consensus and discovery, fleet is a distributed init system, flannel is used for virtual networking and rkt and docker are container engines.
All this CoreOS goodies are used to bootstrap a Mesos cluster. Mesos is a distributed systems kernel which abstracts compute resources away from machines. Accordingly, it provides schedulers (or frameworks in Mesos parlance) which can run on top in order to utilise the exposed compute resources.
Marathon is one of such frameworks. It is a cluster-wide init and control system for long-running applications. Other frameworks like Jenkins and Elasticsearch might share the same cluster resources.
REX-Ray delivers persistent storage access for container runtimes, such as Docker and Mesos, and provides an easy interface for enabling advanced storage functionality across common storage, virtualization and cloud platforms.
Component | Current Version | Container |
---|---|---|
CoreOS | alpha | - |
Mesos | 0.28.0 | |
Mesos-DNS | 0.5.2 | |
Marathon | 1.1.1 | |
Zookeeper | 3.4.8 | |
go-dnsmasq | 1.0.5 | |
cAdvisor | 0.22.0 | |
Pritunl | 1.21.954.48 | |
REX-Ray | 0.3.3 | - |
not yet
marc@desk-1 ~ $ go get -u github.com/h0tbird/kato/cmd/katoctl
marc@desk-1 ~ $ go install github.com/h0tbird/kato/cmd/katoctl
marc@desk-1 ~ $ eval "$(katoctl --completion-script-${0#-})"
Káto can be deployed on a few IaaS providers. More providers are planned but feel free to send a pull request if your prefered provider is not supported yet. Find below deployment guides for each supported provider:
✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
---|---|---|---|---|---|
Vagrant | Packet.net | Amazon EC2 | Google GCE | Digital Ocean | Microsoft Azure |
Once you have deployed the infrastructure, run sanity checks to evaluate whether the cluster is ready for normal operation. Use the edge-1
node if you are in the cloud or the master-1
node if you are using Vagrant and you decided not to deploy an edge
node:
marc@desk-1 ~ $ ssh -A core@edge-1.ext.<your-ns1-managed-public-domain>
core@edge-1 ~ $ etcdctl cluster-health
core@edge-1 ~ $ fleetctl list-machines
core@edge-1 ~ $ watch "fleetctl list-units"
Open a second terminal to edge-1
(bastion host) and jump to master-1
from there (don't forget to enable forwarding of the authentication agent ssh -A
). If you are using Vagrant you can ssh directly to master-1
instead:
marc@desk-1 ~ $ ssh -A core@edge-1.ext.<your-ns1-managed-public-domain>
core@edge-1 ~ $ ssh master-1
Use fleetctl
to start all the service units while you check the status on the first terminal. Wait for Zookeeper to become active and running before starting all the remaining units:
core@master-1 ~ $ fleetctl start /etc/fleet/zookeeper.service
core@master-1 ~ $ fleetctl start /etc/fleet/*.service
Pritunl is an OpenVPN server that provides secure access to Káto's private networks.
Access your Pritunl WebGUI at http://edge-1.ext.<your-ns1-managed-public-domain>
Make sure you setup udp port 18443
for VPN connections.