deployster

command module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2015 License: MIT Imports: 6 Imported by: 0

README

Deployster

Deployster is a Golang HTTP service for simplifying deploys to a CoreOS Fleet cluster. It is extremely opinionated in how you tag your Docker images, where you store them, and how the service's unit files are configured.

This project is also available as bmorton/deployster publicly on the Docker Hub Registry.

Currently this project is in use for a few side projects, but is not in heavy production use. At this point it's experimental and feedback is very welcomed and appreciated. Yammer has been exploring a similar path for production and this will likely be used in some prototyping there, as well.

Features
  • Deploy a new version of a service from the Docker registry (with optionally destroying the previously running version)
  • Shutdown a deployed version of a service
  • List all units associated to a service
  • Basic authentication and HTTPS support
  • Custom task launching for doing things like migrating a database using a given service image and version
  • Source images from the public Docker Hub Registry or a private registry
Requirements and limitations

To use Deployster, you'll need:

  • CoreOS cluster - There are some tutorials for doing this on DigitalOcean and Azure. Make sure to be using version 550.0.0 or greater of CoreOS so that Fleet's HTTP API is available for Deployster to use.
  • HTTP service exposed on port 3000 of container - This should be configurable in the future too.
  • Stateless containers - Linking in volumes is currently not supported. Again, something for the future.
  • Vulcand running - For zero downtime deploys of new versions of services.
  • Automatic environment configuration - As we're currently reusing the same unit file for all services, environment variables can't be passed to containers at boot, so containers need to use something like etcd, consul, or confd to bootstrap themselves at launch.
Task limitations

Tasks are limited to 10 minutes of running time, after which they will be forcefully removed. If the task is killed, it will have an exit code of 124. In the future, this timeout may be configurable per task to override the default timeout.

Getting started

There are two options for getting started with Deployster. If all the above requirements are fulfilled, you can launch Deployster with Fleet on your own CoreOS cluster and start deploying right away! If you're just looking for a quick demo to see what Deployster can do, we've provided a Vagrant environment and accompanying tutorial as well.

Command line options
$ deployster -h
Usage of deployster:
  -cert="": Path to certificate to be used for serving HTTPS
  -docker-hub-username="deployster": The username of the Docker Hub account that all deployable images are hosted under
  -key="": Path to private key to be used for serving HTTPS
  -listen="0.0.0.0:3000": Specifies the IP and port that the HTTP server will listen on
  -password="mmmhm": Password that will be used to authenticate with Deployster via HTTP basic auth
  -registry-url="": If using a private registry, this is the address:port of that registry (if supplied, docker-hub-username will be ignored)
  -username="deployster": Username that will be used to authenticate with Deployster via HTTP basic auth
Notes
Contributing

Pull requests and bug reports are greatly appreciated and encouraged. If you'd like to help out with any of the above items or have a feature that you think would be awesome for this project, we'd love your help! To get the design conversation started, open a new GitHub issue with your ideas and we can hash out the details.

License

Code and documentation copyright 2015 Brian Morton. Code released under the MIT license.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
fleet is a package for communicating with Fleet's HTTP API to list units and their states, launch new units, and destroy units.
fleet is a package for communicating with Fleet's HTTP API to list units and their states, launch new units, and destroy units.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL