Deploying and Configuring Devtron

The cloud-native, DevOps, and Platform engineering landscapes have a big problem - there are way too many tools. It’s not helping. It’s simply causing a massive amount of confusion. Instead of creating new tools, we need methods for managing the tools and platforms we’re already working with in one location.

In this blog post, you’ll learn about one platform that helps you do that, Devtron.

Why Devtron

There are a lot of tool lists, platform lists, and landscapes in the cloud-native world today. If you google “what’s the best DevOps tool” or “what’s the best cloud-native tool”, you’re going to come up with several different lists and every single list is going to showcase new tools from the previous list. The truth is that the landscape is a nightmare. Engineers don’t know which tools to use, which tools to focus on, and which tools actually make a difference… and these are the mid-to-senior level engineers. The entry-level engineers simply don’t even know where to start.

To solve the problem, we need methods for using the tools and platforms that are already implemented in our environments in a central location.

That’s where Devtron comes into play.

Devtron is a platform that gives you the ability to use the tools you already use. You can implement plugins for CICD, ArgoCD, view your existing Kubernetes clusters, and ultimately manage it all from one place. It also has a “platform engineering” feel from an IDP perspective as it gives the capability to deploy with a button click. The logic of said button click stays wherever the existing location is (for example, GitHub Actions), but you can make it easier to use on Devtron.

In the upcoming sections, you’ll see a few different ways to install, use, and manage Devtron.

Installing Devtron

To install Devtron, you can start off on the website: https://devtron.ai

Click on the Pricing button.

You’ll come to a page where you can get started for free.

Once you click the Get Started > button, you’ll be brought to the GitHub page with the installation details. The installation details on the GitHub page showcase how to install Devtron with the GitOps integration. Before doing that, let’s see how to install Devtron by itself to get a feel and understanding of how it works.

💡 The last section of this blog post will go into the Devtron installation with ArgoCD and the “why” behind it.

For the Devtron installation, you can use Helm. From a production perspective, using Helm makes the most sense as it’ll give you package management capabilities vs installing raw Kubernetes Manifests.

First, add the Devtron repo.

helm repo add devtron <https://helm.devtron.ai>

Ensure that the Devtron repo is up to date.

helm repo update devtron

Install Devtron in the devtroncd Namespace.

helm install devtron devtron/devtron-operator \\
--create-namespace --namespace devtroncd

After the installation, you should see several resources within the devtroncd Namespace.

💡 You may see some CrashBackLoops for the Devtron Pod. It appears that there’s a race condition between the Pod coming up and the Pod connecting to the Postgres database. It should resolve itself after 3 restarts of the Pod.

One of the resources installed will be a Service called devtron-service. If you’re running a Kubernetes environment that has load balancers available, you should see a public IP address associated with the service. If not, you can use the port-forward command to access the Devtron dashboard.

The username for the dashboard is admin. You can retrieve the password from Kubernetes Secrets.

kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d

You should now see a successful login.

Kubernetes Resource Explorer

Once Devtron is installed, one of the first things you can use is the Kubernetes Resource Explorer. The Explorer gives you the ability to manage any existing Kubernetes resource. Pods, RBAC, Ingress, CRD’s, etc… You can get to the Resource Explorer by clicking your Kubernetes cluster within the Devtron GUI.

Taking a look at some resource examples, you can see all of the information that’s available about the Pod on the Devtron GUI.

Diving in a bit via the resources, you can also see things like Service endpoints.

After you click on a particular resource, you can see and edit the YAML associated with the Kubernetes resource.

Remember that anything you edit should be saved within Source Control. Otherwise you may experience Configuration Drift.

💡 Within the Devtron documentation, there are installation instructions for the Devtron Kubernetes Client. After installing it, I noticed it’s the same thing that’s already in the environment which I showcased above. Just in case you think it’s something different, I tested and ensured it’s the same portal.

Devtron Installation With ArgoCD

The most popular installation method with Devtron is to use the CICD configuration method. The CICD method will automatically install the CICD plugin and the ArgoCD plugin for simpler deployments and a popular GitOps solution.

First, delete your existing Devtron deployment.

helm uninstall devtron -n devtroncd

Ensure that the Devtron Helm Chart is added.

helm repo add devtron [<https://helm.devtron.ai>](<https://helm.devtron.ai/>)

Install the Devtron Helm Chart and set the values for CICD and Argo to be enabled.

helm install devtron devtron/devtron-operator \\
--create-namespace --namespace devtroncd \\
--set installer.modules={cicd} \\
--set argo-cd.enabled=true

Obtain the password for the Devtron GUI.

kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d

You’ll see that within the Stack Manager, CICD and ArgoCD are enabled.

Wrapping Up

In this blog post, you learned about a few different installation and configuration methods for Devtron. As mentioned, the great thing about Devtron is it isn’t a tool or a platform that’s giving you more things to learn. It’s simply a GUI that allows you to work with the tools you’re already working with in a central location.

Tools and platforms like Devtron are what we need. We don’t need new ways of doing things, new tools, new buzzwords, etc. We need ways to take the tools we’re already working with and put them in one location to manage.

If you have any queries, don't hesitate to connect with us. Join the lively discussions and shared knowledge in our actively growing Discord Community.