I've spent a fair amount of time evaluating different solutions through my startup[0] and have found Kubernetes, by far, to come with the least pain. It's not hard to get started with, but also works well as you grow and mature. It makes most of the decisions right from the start and kubectl gives you most of the functionality you need to manage deployments easily. Also, while I have a vested interest in saying this,…
Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
11–20 of 116 posts
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#12* Development: docker + docker-compose. Ideally, we would want to get rid of docker-compose for development.
* CI: Travis (planning on switching to something that is more on the CD side)
* Infrastructure management: terraform
* Prod: AWS, CoreOs, Kubernetes 1 master node and 5-6 worker nodes (m4.large) in an autoscaling group.
Infrastructure deployments and updates are done by Terraform. Blue/Green deployments thanks to the autoscaling group.
Kubernetes deployments and updates are done by kubectl.
There's still problems with each piece, but for the most part they work great without much trouble.
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#13I, personally, prefer the bare-metal deploys of automated scripts. I usually just spin up a VM and write a bash script to "prep" it the way I want. After that, I just run "./deploy" and it pushes where I want. I like this because I feel like I have more control and it actually feels easier. Plus, I've run into weird issues with Docker that take so long to debug that it completely cancels out the benefit of using it for me.
The bash script I have works for every side project I create, and is simply copied from project to project. :)
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#14I use Gitlab CI and helm[1] for deploying. The last step of the ci process checks out the helm chart which is just another git repo and executes a helm install/upgrade CHART-NAME. Making things accessible is done through kubernetes ingress with nginx[2](which includes getting let's encrypt automatically for all external endpoints) so when I want to deploy a new staging version of the app I can do helm install app --set host=my-stage.domain.com .
There still a few gotchas like the pods won't update when a configmap was changed which is important because I keep the container configuration maps as configmaps. A crude workarround for this is [3] which triggers a configuration reload of the application running inside the container.
This solution has no licensing cost unlike Openshift(Tectonic[4] is another enterprise Kubernetes distribution which is free for 10 nodes) and the cost are based on the amount of time to set this up. But after you got into helm and more complex kubernetes deployments it should be easy.
[1] https://github.com/kubernetes/helm
[2] https://github.com/jetstack/kube-lego
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#15I'm currently on an all-docker pipeline but I resent it. It's slow, tedious and everybody's trying to use docker against its design (everybody tries to make images with as few layers as possible, I think docker should just do away with the layers altogether). It also makes it harder than it should be to make an image that works both for local development and deployment at the same time. Also, docker-compose is riddle…
I'd take the opposite stance, really. As far as the image format, it's the major differentiation Docker has, and IMO a really clean way of keeping image pulls DRY. Once your hosts have pulled a single image, given that you don't actively undermine it, subsequent pulls, even for different images, only need to retrieve the absolute minimum since they already have hopefully pulled the majority of the file system.
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#16Our 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.
Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#17Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#18Re: Ask HN: Docker, Kubernetes, Openshift, etc – how do you deploy your products?
#19I've spent a fair amount of time evaluating different solutions through my startup[0] and have found Kubernetes, by far, to come with the least pain. It's not hard to get started with, but also works well as you grow and mature. It makes most of the decisions right from the start and kubectl gives you most of the functionality you need to manage deployments easily. Also, while I have a vested interest in saying this,…
Offtopic: How do you implement the product of your startup precisely? It seems way too good of a promise to be true and it seems that people might become very disappointed.
There's still a decent amount of human intelligence involved though, since obviously we want to give customers a good experience. This mainly comes in upfront (where we tune the implementation for each customer) and for any tasks which Gandalf hasn't learned to do yet. I've also invested in making it easier to train Gandalf to do things—for example, I can say "watch me" and then do a bunch of things with the AWS console/API and they get turned into a parametrizable playbook.
Any good DevOps engineer invests heavily in automation. Gandalf is just one level up of automating the process of automation.
If you have any other questions, feel free to email morgante@getgandalf.com.