Hey everyone, cofounders of Redspread here, Mackenzie and Dan. We built Spread, our open source command line tool to build and deploy Docker to Kubernetes in one command, to enable rapid iteration with Kubernetes and provide the easiest way to deploy Docker to prod.
Our mission is to enable people to own their own deployment processes and infrastructure, and we're very passionate about that (see our philosophy.md).
Would love your angry bug reports, feature requests, and feedback!
rolling updates to services would be nice. running this as a service (possibly deployed on the kubernetes cluster) to facilitate this via web hooks would be amazing.
Excuse the self promotion, but if you're interested also check out a UI Docker/K8s deployment tool my team open-sourced earlier in the week. It's opinionated, but it might meet some of your needs:
yes, rolling updates are definitely on our roadmap. right now everything is client side - we’re building a light kubernetes workflow - but web hooks are a great idea
Great to see such a great tool for deployments. Will you be adding support for managing multiple containers in a single deployment and scaling deployments up/down?
Hey thank you! So right now Spread supports deploying multiple containers in a single deployment. We want to let Kubernetes be Kubernetes as much as possible, so scaling deployments up/down (I assume autoscaling is what you meant!) is actually coming out in 1.2 - with a release date of March 7!
So we built Spread to be a workflow that improves on the usual `kubectl create -f ...` `kubectl describe services/example` experience by enabling rapid iteration with Kubernetes. Next on the roadmap is building the image and pushing it to a registry along with deploying to Kubernetes in one command. And it runs wherever Kubernetes runs - so you can use it beyond Google.
This is cool - We are using Convox to manage an ECS cluster at the moment, but Kubernetes/Container Engine seems to be the better system overall. Container Engine is very complex though (like ECS), so a tool which makes it easier to work with would make it much more practical for us to move over.
Definitely - making it easier to interface with Container Engine is a big reason why we built this workflow. Because we wanted to make our own lives easier developing with Kubernetes!
Do you have recommendations for another tool to set up a Kubernetes cluster in the first place? At first glance, it seems somewhat complex and easy to misconfigure.
Or is that something you plan to support in redspread as well?
We don't plan on getting into the hosting game but we have considered making it easy to set up a free temporary test cluster so people can play around with Spread. Would that be useful?
Hey! Good question. So we're encouraging a .ctr file because we think container reusability will become really important, especially as more organizations share containers across teams.
We're playing around with this idea of embedding different kube objects and containers to construct applications across directories, so setting up directories with .ctr files will make the introduction of that feature pretty easy.
Hey! Very simply, Kubernetes puts containers on servers. It takes care of a lot of logic around scheduling, networking, health checks (i.e. what happens if a pod goes down).
A little history - it's an open source project by Google, modeled after Google's infrastructure (Borg/Omega). Many of the engineers who designed Borg/Omega are chief architects of Kubernetes.
So right now it's best for two sets of users:
1) those who are looking to deploy Docker to production but don't have any orchestrator set up - Spread makes it really easy to use Kubernetes
2) those who have a remote Kubernetes cluster running, often develop with Kubernetes and want to quickly be able to deploy to that cluster
We're adding a bunch of functionality for building images, pushing to Docker registries, and offline dev with Kubernetes.
Hey! If this workflow we're building is the git for Docker deployment, we'll make money on the GitHub - collaborative deployment tools built on top of this workflow.
cool to see this open source - readme talks about versioning; is that like deployment versioning for kube objects? how is that different than what's coming out in 1.2?
So in 1.2, Deployment API facilitates the transition from state to state for an RC or a pod. This provides a basic form of revision history, but isn't "versioning" - it's more if you could only go back one step.
For us, we see the big use case for full deployment versioning when there are multiple kube objects and config files to track. Already this is introducing some complication into developer workflows - ex: I have a bunch of services, rc's, and secrets. They are parameterized by this configuration. Now I've updated the configuration. I want to propagate that configuration to my cluster "with no downtime” - right now there isn't an easy way to do this.
Hey thanks! So we evaluated a bunch of different orchestrator options when we were first thinking about Redspread, and Kubernetes was opinionated in a way we liked the best. Google's been running containers in production for a decade now, so a lot of their learnings and best practices are baked into Kube. This article does a pretty good job of laying out the pros/cons of different orchestrators: http://code.haleby.se/2016/02/12/why-we-chose-kubernetes/
Our mission is to enable people to own their own deployment processes and infrastructure, and we're very passionate about that (see our philosophy.md).
Would love your angry bug reports, feature requests, and feedback!