In this blog we are going to discuss about the 3 major challenges with Helm and also how we can deal with these challenges. But before coming directly to the challenges, let's talk a bit about helm and helm charts in short.
What is Helm and Helm Chart ?
Helm is a command line utility for managing Kubernetes applications. A Helm Chart is a collection of files that describe a related set of Kubernetes resources. With a single chart, you can run an application with bare minimum configs to something very complex, like a full web app inside the Kubernetes cluster. Helm charts help you define, install and upgrade even the most complex Kubernetes application.
Challenges with Helm
No doubt that Helm is very popular tool to manage deployments on Kubernetes. Helm helps us to install, upgrade applications using single command, i.e
helm install stable/mysql. Without Helm, this would be done by creating and applying numerous Kubernetes yaml files. But still there are certain challenges with Helm which needs to be addressed. Here are the top 3 challenges which you might have faced if you are a helm user.
No actual state of deployments
Helm introduces an abstraction layer between Kubernetes and the users. It does not observe the actual state of the resources and results in obscure status of the deployments. To understand this point, let's take an example. Assume you deploy a Helm chart using helm and it is deployed successfully. Now check status of the deployment. This will show
deployed . Everything is okay till now. Now delete one of its required resources. After doing this, pods won't run anymore. Now again if querying
helm status , it will still shows the status as
deployed and it means everything is okay but it's not actually. Helm is not able to identify the live status of resources deployed. Once the application is deployed, helm's work is done.
Troubleshooting and debugging
The biggest challenge for Helm is complexity. The whole system is based on templating helm charts which makes it very difficult to create and debug complex applications that may consist of multiple Kubernetes resources. The more the Helm charts are, the more complex the entire system is. Imagine how much time it would take for a team to spot and resolve a bug in a Helm chart template that has been used numerous times across many Kubernetes resources in a complex application.
No UI for Helm applications
Yes, for some of you this might not be a challenge with helm because as a SRE/DevOps guys we all love terminal. But in some cases especially if we have 100s of charts deployed, it becomes really difficult to manage all these charts and Kubernetes resources corresponding to it. Managing these using GUI is much more easier than CLI. Therefore, managing and monitoring Helm charts using Helm CLI becomes a tedious task and also very confusing if you are new in the Kubernetes space. At each step of managing helm packages, you have to fire the helm commands which sometimes becomes a real mess. Just imagine, how convenient it would be having an UI to manage all you helm charts deployed with cli as well as for deploying new charts through UI and getting the live status of all those applications deployed.
What's the solution ?
Devtron! Devtron is a lightweight, opensource, easy to use web based tool for developers as well infra teams that can solve all the challenges described above and many more use cases apart from these.
(i) Shows live status of deployment
Devtron does everything that you cannot do using Helm CLI. As we discussed above that Helm CLI doesn't show the actual state of the deployment. Even if the pods are not running, Helm CLI consider the deployment healthy. But this doesn't happen in case of Devtron. It keeps on monitoring the state of all the resources in real-time. If everything is running fine then it shows the status as
Healthy otherwise it shows
Missing that means some of the required resources are failing or missing. Moreover you can expand the status to check the reasons behind the status
Missing which can help you to troubleshoot the deployment.
(ii) Troubleshooting and debugging
Devtron provides you with resources grouping of all the workloads deployed by the charts which makes it lot more easier for development and infra teams to troubleshoot & debug. As you can see in the image below, for all the workloads you get to look into its manifest, events, logs as well as you can login into the terminal too and all these from the UI itself. This makes the life much more easier even if you have 1000s of charts deployed.
(iii) Provides UI to manage Helm applications
As we discussed above, Helm does not provides an user interface to manage the Helm applications but this is not in case of Devtron. All the operations associated with the Helm applications that we do by firing Helm commands can be performed all those tasks in a more convenient manner with Devtron dashboard only. We can add helm repository, can list all the charts present in the repository and also can deploy the chart on a single click. To get all the charts, go-to charts store and you can see all the charts present as shown in the image below. Any existing helm chart repository can be added from
Global Configurations >
Chart Repositories >
Add Repository. For more details please have a look at the documentation
You can also easily deploy any chart if you want with just few clicks. To deploy any chart, `Click on Chart` > `Click on Deploy`. It will open the chart's values.yaml file as you can see in the image below. Also you can see the
README of that chart side-by-side which helps you to see the parameters and its descriptions as you can see in the image below. After making necessary changes, click on
Deploy Chart as seen in image below.
Hope you found the blog useful. Feel free to like, share and comment down your thoughts on it. Also you can join our community discord server and ask your queries if you have any.
For more details on how to add and deploy any existing helm chart using Devtron, please refer this blog.