This blog is hosted by 4 machines, has it's own internal network, has hundreds of gigabytes of storage and has a failover mechanism. Why? To bring you what 1/100th of a server could have done.
Deployed my blog on Kubernetes
— Dex (@dexhorthy) April 24, 2017
In case you wondered, yes the first line is pure sarcasm. But indeed this blog is powered by Kubernetes. Why? Not becasue it needs it but as a proof of concept for how we're building out a new reliable infrastructure for Cast.
Back in 2015 we designed a cluster infrastucture based on CoreOS (now called Container Linux). The tools we used there are now all old and deprecated. But we had a huge stack built on them, so we replaced pieces by our own code.
Now we're in 2018 and we decided we need a better infrastructure to build future products on, the old infrastructure only delayed our development.
So we started fresh. We built our new system on top of Kubernetes. This all is now running on powerful ARM64 machines (no Intel inside!). But we had special needs. We're now slowly redesigning and rewriting important parts of the old infrastructure to work with the new cluster.
For example: for a long time we ran OpenResty to loadbalance the traffic with the ability to offer nice features like custom domains (with HTTPS!) to our clients. So we built an OpenResty Ingress Controller to handle this for us in Kubernetes.
Next up we'll tackle the issue of automatic provisioning of services. This is the next step in moving Cast to be the most reliable that it has ever been.