We recently migrated our platform towards Kubernetes. That’s for sure one of the best move, technologically speaking, that we’ve ever done. It provides stability, scalability, service discovering, centralized configuration, rolling upgrade… the list could keep going.
When you move to a platform for automating deployment and scaling like Kubernetes/DCOS, one of the things you absolutely need to get right is a proper implementation of health checks (liveness and readiness) and a graceful shutdown of your application (on top of compute resources, but that’s another topic).
If you work with Docker, there’s no doubt you heard about Kubernetes. I won’t introduce this amazing gift from Google. This post is about a particular ressource, the Ingress and its controller. Introduced as a beta feature when releasing Kubernetes 1.2, the Ingress ressource is the missing part to open your cluster to the world.
Sure, if you’re lucky enough to run Kubernetes in a supported cloud environment (AWS, Google Cloud…), you can provision a load balancer automatically when creating a new Service. But…that’s it. If you need to do SSL termination, or just some simple routing rules, you’re stuck. This is where the Ingress ressource steps in.