Hacker News new | ask | show | jobs
by marcc 3428 days ago
This is a great question and something we've been trying to figure out ourselves. Historically, we were using Ansible to deploy Docker containers to EC2 instances, but have moved some services over to Kubernetes, Swarm and Lambda/Serverless. All of these are create the same deployment challenges -- the current products out there don't fit perfectly. The more we want to deploy to a higher level than "just Docker", the less Ansible provides today. But we wanted to stick to the core concepts of automation, continuous delivery (at least to staging), and chatops style management of production.

Our current approach is using an Operable (https://operable.io) Cog we wrote which takes the kubernetes yaml and applies it to a running cluster. It's not perfect, but I'm pretty happy with the direction it's going. We built this cog in a public repo (https://github.com/retracedhq/k8s-cog) so you are welcome to use any of it, if it's useful. Then we have our CI service send a message (using SQS) after a build is done to deploy to staging.

2 comments

I've been dancing over the line between devops and backend development. It sounds like I am where you were historically, I'm using ansible to deploy docker images to EC2 instances, and a few monitoring scripts in python to do a little more finely tuned orchestration.

Lately I've been using home-brew chatops to manage products so it's nice to hear what other people are using. Operable looks really interesting, I'm going to give it a shot. Thanks for the example cog!

Would you mind expanding on why you're using both K8s and Swarm?
We don't use both in the same product. Currently we have a product deployed on k8s and a different one on swarm (well, 1.12 swarm mode, not the original swarm). We won't keep it this way forever, but we've definitely learned a lot about managing each in a production environment while running this way.