Deis v0.13 - High Availability Backed by Ceph
The Deis project is happy to bring you the v0.13.0 release. Deis now ships with Ceph providing a highly-available platform control plane. Additionally, new microservices for service registration and log shipping increase the efficiency and reliability of Deis at scale.
If you are coming from an earlier version of Deis, read the "Upgrading Deis" documentation for details.
What is Deis?
- store is a new Ceph-backed component used to store persistent data for the platform
- database now streams WAL logs to store with automatic restore on host failure
- registry now stores layers in store using an S3-compatible gateway
- The logspout service on each host removes the need for sidecar logging containers
- The publisher service on each host removes the need for sidecar announce containers
deiscommand-line client can be installed with
curl -sSL http://deis.io/deis-cli/install.sh | sh
- A specific version of
deiscan now be installed with
curl -sSL http://deis.io/deis-cli/install.sh | sh -s 0.13.0
- A specific version of
deisctlcan now be installed with
curl -sSL http://deis.io/deisctl/install.sh | sh -s 0.13.0
Under the Hood
- Updated to CoreOS 459.0.0
- Updated to fleet v0.8.3
- All Dockerfiles are now based on Ubuntu 14.04
- All components have been updated to include fixes for the Bash Shellshock bug
- All data containers except logger-data have been removed
deisctlutility comes pre-installed on all CoreOS hosts provisioned with Deis
- Moved the
deisctlproject to deis/deis
For more details, please see CHANGELOG.md.
We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:
- @achannarasappa: Build hook error: Server Error (500)
- @aledbf: Restrict published containers, logspout message too long error, Router restarts, Add git commit to image env, Change to controller scheduler for fleet v0.8.3, Retry Fleet scheduling operations, feat(controller): restart the app if there is a failure., feat(router): image without development libraries to reduce the size.
- @chuenlye: Ownership of /usr/local/bin was changed when installing deisctl
- @cmshetty: Fleetctl shows old dead and failed units., Web process fails to start - "ruby: command not found", Config set for integer gives internal error.
- @cn28h: deisctl platform start requires several runs to succeed
- @gust1n: Deis publisher improvements
- @ianblenke: Feature request: deis users:list
- @intellix: builder: issue with check-repos script removing an active repository
- @jaystewart: Vagrant - deisctl start platform - email@example.com: failed
deisctl install platformthrows logger-data template not found, docs(standards): remove [skip ci] instructions, docs(client readme): remove travis build status icon
- @kingcody: Builder and Controller "hang" on fresh install
- @lpickerson86: some admin services wake up after run command on app
- @nathansamson: Running 2 web processes in one application, Use Real CoreOS on DigitalOcean
- @ngpestelos: Failed to install deisctl, Multiple publishers running on the same node, X-Deis-Builder-Auth not checked?
- @peterrosell: Missing instruction in "Get Deis" section 02 , solved: local DNS not resolving for local.deisapp.com
- @pgrm: Update the documentation on how to deploy on DigitalOcean
- @PierreKircher: doc > baremetal, deis-store > database, restart behavior of deisctl, master > builder in endless loop on GCE, (DOC) upstream new builds with privatregistry on boot2docker + ngrok
- @scottrobertson: Few issues with Digital Ocean
- @sstarcher: Fleet scheduler to not get memory/cpu scheduling
- @tobyhede: Deploy of example app fails with 'invalid compressed data--format violated', Error on install: Failed getting response from http://127.0.0.1:4001, ==> deis-1: No etcd discovery URL set in /tmp/vagrantfile-user-data
- @tombell: Installation of deisctl results in 404 error
- @vincentpaca: deisctl start platform keeps timing out.
- @Xe: deisctl causes the cluster to implode, Basic user operations, Metadata tagging for deis unit installs, Installing deis client on OSX causes failure in cleanup process, install fails, pgbouncer in buildpack fails due to missing system library, Feature request: ability to see who you are logged in as, deisctl doesn't follow versioning for default installs, deisctl refresh-units defaultly tries to write to non-user-owned space, Suggestion: setting where administrator needs to confirm new registrations, docs(deisctl): document DEISCTL_UNITS better, feat(userdata): add deisctl to the coreos install
The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know.
Problems with etcd leader failure
During the course of simulating cluster failures and testing platform HA, we came across a serious bug in etcd. If the current etcd leader is killed, sometimes a new leader election does not take place leaving etcd, fleet and Deis in a badly broken state. This issue is tracked in the etcd project. We are working with the CoreOS team to identify the root cause, and will update to a new CoreOS release once the issue is fixed.
Log Data Availability
While the critical components in the Deis control plane are now highly available, we have not yet addressed availability of our logger component, used to store aggregated logs. We are waiting for Ceph to support volume mounts from within containers. Once this lands, we can store aggregated logs in Ceph and allow all control plane components to float across the cluster for complete platform HA.
We will soon announce simple in-place upgrade instructions for Deis clusters. Beyond that, this release also lays the groundwork for a Deis update engine based on CoreUpdate which will ultimately provide fast, painless, zero-downtime upgrades of the platform control plane.
Deis is being used in production at companies of all sizes. We are committed to delivering our first stable release in the next few weeks. Once logger HA and updates are behind us, we will focus on API versioning, bug fixes and a comprehensive documentation update with a focus on how to operate Deis in production.
Interactive Admin Commands
deis run executes individual admin commands inside containers, Deis doesn't yet support long-running interactions, such as
deis run bash. Once this infrastructure is in place, Deis can implement log tailing and other real-time features.
Deis must make it simple for ops folks to publish a set of reusable backing services (databases, queues, storage, etc.) and to allow developers to attach those services to applications. This will be done in a loosely coupled way, following Twelve Factor best practices. You can review the initial implementation and follow progress on this GitHub issue.
How can you help?
- Star our GitHub repository
- Help spread the word about @opendeis on Twitter
- Join the conversation in the #deis channel on Freenode
- Pick an easy-fix issue and start contributing!
Learn about other ways to get involved on our website.