Production Infra Recommendations
1. Infrastructure Overviewβ
For production environments, we recommend a dedicated infrastructure setup that separates Devtron microservices to ensure optimal performance, reliability, and cost efficiency.
Node Group Structureβ
Set up separate node groups to isolate workloads, optimize resource allocation, and ensure system stability under production load.
| Node Group | Purpose | Instance Type | Configuration |
|---|---|---|---|
| Devtron Microservices | Hosts all Devtron core components | On-Demand | 3 nodes (4 CPU, 16 GB RAM each) |
| CI Workers | Handles build jobs and CI processes | Spot Instances | Auto-scaling based on workload |
Autoscaling Configurationβ
Configure autoscaling to handle fluctuating workloads efficiently, reduce downtime, and control cloud costs without manual intervention.
- Devtron Node Group: Minimum 1 node, Maximum 5 nodes (Autoscaled)
- CI Node Group (Tainted): Configure based on build volume and concurrency requirements
Blob Storageβ
Use blob storage to persist build caches and logs, enabling faster builds and reliable CI troubleshooting in production environments. Refer Blob Storage Guide to know more.
- Cache-Storage: Used to store the build cache to reduce build time of your application.
- CI Logs Bucket: Used to store the build logs of your application.
2. Cloud-Specific Setup Guidelinesβ
Depending on your choice of cloud provider, refer the instructions/scripts below to set up a cluster.
AWS (EKS)β
You can follow this Readme for setting up the EKS cluster for Devtron.
GCP (GKE)β
Use our provided Terraform scripts to set up GKE cluster for Devtron.
Azure (AKS)β
Use our provided Terraform scripts to set up AKS cluster for Devtron.
Proceed with the Devtron installation on your cluster.
3. Microservice Resource Recommendationsβ
Below are the core components (Devtron microservices) for which you need to allocate appropriate CPU and memory resources. This will ensure optimum performance and prevent resource contention in production.
| Component | CPU Requests | CPU Limits | Memory Requests | Memory Limits |
|---|---|---|---|---|
| Devtron | 1 | 1 | 1536Mi | 1536Mi |
| Kubelink | 1 | 1 | 1536Mi | 1536Mi |
| Dashboard | 100m | 100m | 150Mi | 150Mi |
| Lens | 200m | 200m | 100Mi | 100Mi |
| Git-sensor | 800m | 1 | 1510Mi | 1510Mi |
| Kubewatch | 200m | 300m | 600Mi | 1000Mi |
You can create a resources file similar to this YAML file and add resources according to your load and requirements for any service you want, and remove those you donβt wish to modify.
Run the following command once the file is ready:
helm upgrade devtron devtron/devtron-operator -n devtroncd --reuse-values -f resources-values-file.yaml
4. Kubernetes Configurationβ
CI Isolation with Taints and Tolerationsβ
To ensure CI workloads run exclusively on the dedicated CI nodes, you need to specify the taints and labels to the node. Then, for the CI build pods, you can add the tolerations and node selectors in the devtron-custom-cm (ConfigMap) of devtroncd namespace using these keys. These will automatically propagate to CI workloads when they are created.
If you are following our Cloud-Specific Setup Guidelines then set the below values for the keys in devtron-custom-cm:
CI_NODE_LABEL_SELECTOR: purpose=ci
CI_NODE_TAINTS_KEY: dedicated
CI_NODE_TAINTS_VALUE: ci