Skip to content

Instantly share code, notes, and snippets.

@mdobson
Last active August 29, 2015 14:14
Show Gist options
  • Save mdobson/ba264338d62a6c143418 to your computer and use it in GitHub Desktop.
Save mdobson/ba264338d62a6c143418 to your computer and use it in GitHub Desktop.
CoreOS Deployment Analysis

CoreOS Deployment Analysis

purpose: Determine what are the tradeoffs for running CoreOS as a hosted platform for Zetta.

  1. Tools in the stack
  • CoreOS - Stripped down linux.
  • systemd - Linux Service System
  • etcd - Distributed key value store. Things like service discovery, and distributed configuration would be stored here.
  • docker - Containerization software.
  • zetta - IoT Platform.
  • Logging - journalctl logging in systemd
  1. Benefits
  • Updates use Omaha protocol for full OS updates instead of package by package updates
  • All applications are containerized
  • Systemd for service management
  • etcd for distributed key value store
  • fleet integration allows deployment across a cluster
  1. Downsides
  • Docker support ending? Low probability of this happening.
  • Stability? CoreOS uses three branches for distributing their OS. Stable, Beta, Alpha. Stable branch has seen minimal issues from my research.
  • Documentation? CoreOS has had thorough docs, and I have been able to answer nearly all my questions on CoreOS using them.
  1. Deployment Workflow
  • CloudFormation
  • published docker container
  • Service description file for docker
  1. Cluster Discovery
  • discovery.ectd.io used as public endpoint for clusters
  • Service needed to establish leader of a fleet cluster
  • Used in cloud-config file
  1. Cloud Config
  • File given to each CoreOS box
  • Machine Meta Data
  1. Sidekick processes
  • Processes that monitor containers on fleet. Update on the status of the process and any other relevant information.

What does an ideal zetta docker look like?

  1. Config file capabilities?
  2. Mounting file system resources for registries? or using something like postegres for replacement?
  3. Instance naming?
  4. How to update within container?
  5. How to handle deployment of app code?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment