On June 7, 2014, Google (Joe Beda to be exact) pushed its first commit on the Kubernetes repository. I immediately felt something going through my body and I knew, on that moment, that I would never be the same person anymore.
Note: Truth is, since it was a Saturday, I was probably playing World of Warcraft with my friends and did not care much about Kubernetes or even containers at that time.
6 years later, Kubernetes dominates the container orchestration market and is now being used by many companies (including the biggest ones) around the World. Cool thing is that Kubernetes is an OSS (Open Source Software) which is the largest open collaboration of building software together in the World.
Note: Thanks to the thousands of people that have been contributing and continue to contribute to it.
I am writing this article due to the complexity of Kubernetes itself. I see many of my friends in the IT World who are working for companies who deploy their own K8s cluster, CICD pipeline stack, monitoring stack, etc. It’s a crazy amount of work and money (cost to build).
The Kubernetes complexity
I would not say this picture is totally right but I am sure every engineer working with Kubernetes can relate on the same feeling. I have been using Kubernetes for more than 4 years now and I am still learning. And I mean it. Kubernetes is amazing but Kubernetes is difficult. You are not learning a new development language here but a whole new way of orchestrating applications — from deployment/scaling to networking.
Note: I will put aside the infrastructure (cloud or on-premise) and the monitoring part (get alerts and metrics) to only focus on the basic needs for developers when they use Kubernetes.
Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management
This basic challenge already translates to multiple requirements:
- Add Environment variables
- Limit the CPU/memory of your app
- Make your app High Available (or not — at least on production please)
- Make sure your app never goes down while deploying a new version
- Spread your replicas across multiple nodes
- Add Health Check to automatically restart your app in case of failure
- Access your app from within the cluster
- Access your app externally using an IP
- Ingress (because using dedicated IP for every app is expensive)
- Configure an ingress controller that will be used as a reverse proxy
- Add your SSL certificate to protect your routes
- Add Password protection / Basic Authentication / CORS on your routes
- Autoscale your app based on requests / memory / cpu
- How to search your logs
- Deploy your databases backed by Persistent Volumes and make it High Available
- Network Policy
- Only App A and B are able to connect to the Database
- Make your app running only when you use it to save cost
- Service Mesh
- Track your response time
- Blue/Green, Canary, Dark, Shadow, Dragon deployment
- And.. many more.
All of the above come with debates about the right tools to use.
Here is the CNFC (Cloud Native Computing Foundation) landscape (probably out of date -> there are more!).
Fortunately, there is a way of using the full power of Kubernetes without learning it. And it has a name: KintoHub.
Note 0: For Dragon Ball fan, KintoHub name comes from Kintoun. KAAAAAMEEEEE..
Note 1: I am working for KintoHub. If you think that I am trying to sell it to you, that’s probably true. However, I believe what I say and that you should check it out before trying to run your own Kubernetes cluster.
The power of Kubernetes without the complexities
KintoHub is an all-in-one platform to combine and deploy your backend services, websites, cron jobs, databases and everything your app needs in one place.
Put the components I listed above in a shaker, spice it up with some more, shake shake shake shake shake and … serve it (hot or cold). Hello KintoHub!
No need to spend ages thinking about the funky CNFC landscape I showed you above, KintoHub has tested many options and attempts to make the best choice for you. Not to mention, abstracts the choices under an intuitive dashboard experience.
We have failed many times and what we gained out of that is much more valuable than the product itself, it’s the experience.
Note: we tested 6 different tool for exposing our services — Nginx, Ambassador, Envoy, Kong, Istio, Linkerd — before actually choosing the right one (hopefully the right one).
KintoHub fully run on Kubernetes. Meaning that, you make sure that every pieces of software that you have built and deployed on KintoHub are fully compatible with Kubernetes — from your website to your database.
Here are the key features that KintoHub provides:
- KintoHub Build and deploy any of your applications for you.
We support any language and we support Dockerfile. You can literally build and deploy anything on KintoHub.
- Backend APIs, Websites, Jobs, CronJobs, Databases.
I said “literally anything”. If you know about Helm Charts, you can do it too.
- Multiple environments.
Deploy your apps in different environments —
prod. They are protected — your dev backend API will not be able to connect to your production database.
Easily duplicate an environment into another — take your
devenvironment and promote it to a
dev-2environment. Is there a better way to onboard a new developer in your team than setting up a brand new environment dedicated to her?
- Automatic SSL.
It seems obvious in 2020 but let’s enforce it, all your URLs are protected with our wildcard SSL certificates.
- Custom Domain Name.
Use your very own domain and get a free and automatic Lets Encrypt SSL certificate.
Take advantages of it and join us on Discord. We are available for any of your issues and consider every user request as the top of our priorities. Notes: I mean “any issues”. Including issues with your own app. Our CEO just pumped out a Prisma example for a user last week in real time: https://github.com/kintohub/prisma-example
- Free Tier.
Enjoy 512MB of deployment for free. Get a free account.
Note: This is probably the best thing about my job: we eat our own dog food. KintoHub uses KintoHub to deploy KintoHub. Each developer has its own environment with a fully up and running version of KintoHub. They cannot mess up with each other.
Why should you trust us? We don’t ask for it. Deploy your
dev environment in no time and play with it. Play build play build, password protect your website, deploy multiple environments for your team mates, shutdown and recreate when you are unhappy, add a custom domain name. When your MVP is ready, promote it to a
prod environment and give it access to your customers.
Nowadays, with the advent of the cloud native solutions, we are shipping ideas fast and we need to ship them even faster. The idea you are working on today might be obsolete tomorrow.
Be Lean. Fail fast. Maximize the value for your customers while using fewer resources. Don’t start with something big that is gonna take ages to build. Let your developers build a POC (Proof Of Concept) as fast as possible and use KintoHub to release your MVP (Minimum Viable Product) even faster.