A guide for CTO: 8 questions to ask before using Kubernetes
Congratulations, you finally consider moving your apps to Kubernetes. It is a big day! Here is a checklist to ensure you did not forget anything essential to increase your chances of success using Kubernetes. We divided those points into three sections, from the most important to the least. Let’s go.
The goal of this article is to help you to ask rational questions about moving on Kubernetes. At Qovery, we see too many companies using Kubernetes for simple technical needs - leading to unnecessary complexity and a longer time to market. Simpler is better than complex - especially when you need to focus on your business.
Critical points before using Kubernetes
Do you have the time to manage Kubernetes?
You may consider using Kubernetes for your development and production environments but do you have the time to manage your Kubernetes cluster? Even if you plan to use the managed Kubernetes provided by your cloud service provider (CSP) like AWS EKS, Google GKE, or Azure AKS, you will need to spend a serious amount of time on maintaining your Kubernetes Cluster.
Kubernetes is the beginning and not the end of the road. How do you plan to upgrade your cluster? How do you plan to monitor it? How do you give access to your developers, and how do you secure it? How will your developers deploy apps on it? All those questions must be answered if you want to run a production workload. Managing Kubernetes is a full-time job for an experienced DevOps engineer - don’t underestimate the amount of work to get your Kubernetes production-ready.
Do you have experience in using Kubernetes?
Your job as a CTO is to make sure your team is as productive as possible and spend time on things that matter. Did someone in your team already use Kubernetes? If not, you will need to spend more time to grasp all the different concepts like Deployment, Pod, Service, Ingress, Statefulset, etc. And all the tools related to the Kubernetes ecosystem like terraform, helm, cert-manager, etcd, etc. if your system and network knowledge are close to zero, you will spend even more time understanding those concepts first. Kubernetes is a complex technology that was built to scale applications under a high workload. If it sounds too complicated for your need - running a simple web app, then you are probably better to consider something else now.
Who is responsible for maintaining Kubernetes?
It must be obvious, but do you have someone responsible for maintaining Kubernetes on upgrades and troubleshooting? Cloud service providers like AWS force you to upgrade your Kubernetes regularly. It’s up to you to ensure that your applications are still working once you have upgraded your Kubernetes cluster. You need to be aware if your third-party tools like helm, external-dns, cert-manager (the list can be lengthy) are no longer going to work. Note: some CSPs like Scaleway and Digital Ocean put a lot of effort into ensuring seamless upgrades for you.
Major points before using Kubernetes
How will you deploy your apps?
Well, your Kubernetes cluster is ready to host your apps, but how do you deploy your app? You can deploy your apps manually, but you will see that it’s very far from the experience that you probably had in mind for your developers. Worst, they will probably hate using Kubernetes, and you will lose the benefits of Kubernetes which is supposed to help your team be more productive. So, did you consider setting up a CI (Continuous Integration) and CD (Continuous Deployment) like Gitlab CI and Codefresh? You need to spend some time fine-tuning those solutions and get the expected results.
How do you plan to monitor your apps?
This point is not directly related to Kubernetes because you need to have a monitoring solution for your apps in any case. But in the context of Kubernetes, it can be more complex than expected. You have to think about how to collect metrics from your applications, how you plug an open-source or proprietary solution, and how far they are compatible. You will hear about Prometheus, Loki, Grafana, Newrelic, Datadog, and tons of other products in the market. Finding the right one takes time. Combined with the time you need to invest for Kubernetes, you can feel that you will never end over deploying your application. No worries, monitoring your apps can be done in a second step, but it is a mandatory step for production.
How do you plan to manage your databases?
It is probably one of the most underestimated points when it comes to using Kubernetes. I would recommend you to read this article from Google Cloud. What you have to understand is that Kubernetes has not been made to run databases. In theory, you can, but you have to be aware of the implication of doing it. Knowing what you are doing is super important because it can have dramatic consequences for your business - like data loss. The rule of thumb is: if you plan to use Kubernetes on AWS, GCP, Azure, or any other CSP, then consider using their managed databases instead of running it by yourself for your production workload. That’s it! But once again, it takes time to think and make your own experience.
Minor points before using Kubernetes
How do you plan to have a staging environment?
As Oracle said, Kubernetes is the Operating System of the Cloud. Meaning it’s low level enough to control and manage all kinds of modern applications. But low-level means more work for you and especially when it comes to creating a staging environment. A staging environment is helpful to validate the changes that you made to your product before releasing it in production. Products like ArgoCD can help you but require time to set up and maintain.
Do you really need Kubernetes?
Today, Kubernetes is the defacto standard to run your applications. But Kubernetes is just the start and not the end of the road. The amount of work and knowledge required to have a production-ready stack is huge - leading to wasting your time on in-depth technical details. Your job as a CTO is to make sure your team is spending time on things that matter to your business. At the same time, using Kubernetes is a great way to build a future-proof technical stack. I hope those open questions will help you to make the best decision to build a successful business.
You can also read my previous article on 7 things that no one will ever tell you about Kubernetes.
-> See how to get started using Kubernetes in production in 15 minutes on your Cloud account.