Get to know about Devtron tool and how to set it up in a Kubernetes cluster
Nowadays, Kubernetes has been widely used as an orchestrator and multiple open-source tools can be integrated with it for monitoring, debugging, automating workflows, and so on. But using and managing all these tools together with Kubernetes is difficult. So, to solve this problem, the Devtron tool can be used.
In this hands-on lab, we will be going to explore and learn about Devtron deeply, and later on, we will see how to set it up in a Kubernetes cluster.
Lab Setup
You can start the lab setup by clicking on the Lab Setup button on the right side of the screen. Please note that there are app-specific URLs exposed specifically for the hands-on lab purpose.
Our lab has been set up with all necessary tools like base OS (Ubuntu), and developer tools like Git, Vim, wget, and others.
About Devtron
Devtron is an open-source tool that provides No-Code Software-as-a-Service (SaaS) experience for creating and managing software delivery workflows for Kubernetes. It easily integrates with multiple open-source tools like ArgoCD, Helm, Prometheus, and so on to provide and build an ecosystem for Kubernetes software delivery workflows and give ease of experience in managing all.
But now the question is, apart from getting seamless experience of managing various open-source tools through Devtron, why should one use this and what other features does it have?
Devtron: Why use it
Managing various open-source tools with Kubernetes is not an easy task as these tools don’t interact with each other for managing various aspects of the application lifecycle like security, cost, observability, stabilization, CI/CD.
Devtron is introduced as it provides a uniform interface and a seamless experience, integrated with various popular open-source tools across the entire life cycle in an isolated way. Along with this, it also focuses on user experience by providing a self-serve model, able to handle security, cost, stability in a unified way.
The different open-source tools that Devtron comprises are as follows:
- Prometheus: A system for monitoring and alerting.
- Grafana: It allows to query, visualize and understand the metrics through beautiful dashboards.
- Flux: A tool that helps Kubernetes clusters to be in sync with sources of configuration like git repositories.
- Argo: A tool that helps Kubernetes to run workflows and do GitOps in the right way.
- Clair: A tool for scanning vulnerabilities in application containers such as Docker.
- Keda: An event-driven auto-scaler based on Kubernetes which works with HPA.
- Elastic: It is a set of tools that creates a data management platform that allows doing the monitoring, logging, observability, and analysis.
- Helm: It is a package manager for Kubernetes applications.
Features of Devtron
Following are the features of Devtron:
No code software delivery workflow for Kubernetes
- Workflows that helps in managing Kubernetes, testing, and other operations without writing any scripts.
- Giving ease of reusable and connected components so that workflows are easy to construct and manage.
Multi-cloud deployment
- With one Devtron setup, one can deploy applications and workflows to multiple Kubernetes clusters on multiple cloud platforms and on-premises
Easy DevSecOps(development, security, and operations) integration
- Provides multi-level security through policies at global, cluster, environment, and application levels.
- Comes with a behavior-driven security policy.
- It also defines policies and exceptions for Kubernetes resources and events.
Dashboard for application debugging
- Provides application metrics such as CPU, RAM, HTTP status code, and latencies comparisons
- Access all manifests in a secure way
- Advanced logging with grep and JSON search
- For the faster resolution of issues, a smart correlation between events and logs.
- Easy to see and observe all Kubernetes events
- Auto issue identification
Compliance and security
- Provide fine-grained access control like who can deploy and who can edit configurations
- Generates audit logs to know who did what and when
- Keeps a record and history of all CI/CD events
- Give details about the Kubernetes and cloud events and their impact on applications
- Provide advanced workflow policies such as branch environment relationships to build and secure the deployment pipelines.
GitOps(Git Operations)
- Makes GitOps easy through API and UI without intervening it through git CLI.
- Backing it up by Postgres for easier analysis and enforcing more access control than git.
Operational insights
- Generates audit logs to know the cause of failure
- Deployment metrics to measure agile process success and failure by capturing mttr, change failure rate, deployment frequency, and deployment size out of the box.
- Monitoring changes across the deployments and reverting them easily if needed.
Cost Management
- Resource optimization through HPA(Horizontal Pod Autoscaler)
- Optimizing cluster through unused resource management
- Giving complete insights into the cost of the cluster, environment, and applications.
Installation of Devtron
Devtron is installed in a Kubernetes cluster in various ways. In this hands-on lab, we will be going to install Devtron without any integrations through the Helm package manager for Kubernetes, and then through Devtron Dashboard, we will be integrating more functionalities to the Devtron stack.
As we triggered the lab through the LAB SETUP button, a terminal, and an IDE comes for us which already have a Kubernetes cluster running in it. This can be checked by knowing about cluster nodes.
kubectl get nodes -o wide
Helm Installation
As we have a cluster running now, let’s install Helm by running the following commands
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
To verify the Helm installation, check its version.
helm version
Devtron Installation
- Installing Devtron without any integrations through Helm along with its default configurations
helm repo add devtron https://helm.devtron.ai helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd
This will starts the Devtron-operator which will spin up all the Devtron microservices in a few minutes in a devtroncd
namespace.
- Check the different microservices Devtron comes with, and for this check, its pods and services running inside the
devtroncd
namespace.
kubectl get pods -n devtroncd
kubectl get svc -n devtroncd
Accessing Devtron Dashboard
Once the Devtron installation gets finished, access the Devtron dashboard by exposing it through a NodePort service.
- Run the following command which will expose the
devtron-service
running inside thedevtroncd
namespace toNodePort
service via a30000
port.
kubectl patch -n devtroncd svc devtron-service -p '{"spec": {"ports": [{"port": 80,"targetPort": "devtron","protocol": "TCP","name": "devtron","nodePort": 30000}],"type": "NodePort","selector": {"app": "devtron"}}}'
- Verify the patch on
devtron-service
running indevtroncd
namespace.
kubectl get svc -n devtroncd
At this moment, the Devtron dashboard can be accessed through the devtronui
URL under the Lab-URLs section.
- To login as an admin into the Devtron dashboard, it needs credentials. Use
admin
as a username and for password run the following command
kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
Copy the generated password and use it to log in to the dashboard.
Yay!! Now you are inside the Devtron dashboard. Now we will be adding Devtron integrations to enhance the functionality of Devtron.
Devtron Integrations
These integrations will help development teams to automate the build and deployment process, maintaining code quality and improving security.
Installation
- On the
Devtron Stack Manager > Discover
page, select theBuild and Deploy (CI/CD) integration.
- On the
Discover integrations/Build and Deploy (CI/CD)
page, selectInstall
. - A list of installed integrations can be viewed on the
Devtron Stack Manager > Installed
page.
Conclusion
In this hands-on lab, we saw what Devtron is with its features and saw how to set it up and access its dashboard and add integrations to it.