Devtron is an open source software delivery workflow for kubernetes written in go.

Devtron is an open source software delivery workflow for kubernetes written in go.
Explore documentation ยป

Website ยท Blog ยท Join Discord ยท Twitter

Join Discord Go Report Card License CII Best Practices made-with-Go Website devtron.ai

?? Menu

๐Ÿ’ก Why Devtron?

It is designed as a self-serve platform for operationalizing and maintaining applications (AppOps) on kubernetes in a developer friendly way.



๐ŸŽ‰ Features

Zero code software delivery workflow
  • Workflow which understands the domain of kubernetes, testing, CD, SecOps so that you dont have to write scripts
  • Reusable and composable components so that workflows are easy to contruct and reason through
Multi cloud deployment
  • Deploy to multiple kubernetes cluster
Easy dev-sec-ops integration
  • Multi level security policy at global, cluster, environment and application for efficient hierarchical policy management
  • Behavior driven security policy
  • Define policies and exception for kubernetes resources
  • Define policies for events for faster resolution
Application debugging dashboard
  • One place for all historical kubernetes events
  • Access all manifests securely for e.g. secret obfuscation
  • Application metrics for cpu, ram, http status code and latency with comparison between new and old
  • Advanced logging with grep and json search
  • Intelligent correlation between events, logs for faster triangulation of issue
  • Auto issue identification
Enterprise grade security and compliances
  • Fine grained access control; control who can edit configuration and who can deploy
  • Audit log to know who did what and when
  • History of all CI and CD events
  • Kubernetes events impacting application
  • Relevant cloud events and their impact on applications
  • Advanced workflow policies like blackout window, branch environment relationship to secure build and deployment pipelines
Gitops aware
  • Gitops exposed through API and UI so that you dont have to interact with git cli
  • Gitops backed by postgres for easier analysis
  • Enforce finer access control than git
Operational insights
  • Deployment metrics to measure success of agile process. It captures mttr, change failure rate, deployment frequency, deployment size out of the box.
  • Audit log to understand the failure causes
  • Monitor changes across deployments and revert easily

๐Ÿš€ Getting Started

Quick installation with default settings

This installation will use Minio for storing build logs and cache.

helm repo add devtron https://helm.devtron.ai
helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd 

For detailed instructions and other options, check out devtron installation documentation

๐Ÿ”‘ Access Devtron dashboard

By default Devtron creates a loadbalancer. Use the following command to get the dashboard url.

kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}'

Devtron Admin credentials

For admin login use username:admin and for password run the following command.

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

Using devtron

๐Ÿ“ Compatibility notes

  • It uses modified version of argo rollout
  • Application metrics only works for k8s 1.16+

๐Ÿ‘ฅ Community

Get updates on Devtron's development and chat with the project maintainers, contributors and community members.

๐Ÿค Contribute

Check out our contributing guidelines. Included are directions for opening issues, coding standards, and notes on our development processes.

๐Ÿชฒ Vulnerability Reporting

We at Devtron take security and our users' trust very seriously. If you believe you have found a security issue in Devtron, please responsibly disclose us at [email protected].

๐Ÿ”– License

Devtron is available under the Apache License, Version 2.0

Owner
Devtron Labs
Software Delivery Workflow For Kubernetes
Devtron Labs
Comments
  • Make the logo text white.

    Make the logo text white.

    The logo text should be white in color in the readme while the dark mode is active for better visibility. White color contrasts the best with the background color, and it makes for a better UI.

    Kindly share your views on this issue.

    AB#656

  • Error: unable to build kubernetes objects from release manifest: unable to recognize

    Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "CronJob" in version "batch/v1"

    If you are trying to resolve an environment-specific issue or have a one-off question about the edge case that does not require a feature then please consider asking a question in Devtron Discord channel.

    Checklist:

    • [ ] I've searched in the docs and FAQ for my answer
    • [ ] I've included steps to reproduce the bug.

    Describe the bug

    A clear and concise description of what the bug is.

    To Reproduce

    [ordered list the process to finding and recreating the issue, example below]

    1. User goes to Create an application (to save space or whatever)
    2. User selects clone option
    3. Configmap in environment override is not cloned

    Expected behavior

    A clear and concise description of what you expected to happen.

    Current behavior

    describe what you currently experienced from this process, and thereby explain the bug

    Screenshots

    If applicable, add screenshots to help explain your problem.

    Logs

    Paste any relevant application logs here.
    
  • Can't install on k8s 1.22: failed to install CRD crds/crd-devtron-legacy.yaml: error parsing : json.

    Can't install on k8s 1.22: failed to install CRD crds/crd-devtron-legacy.yaml: error parsing : json.

    Describe the bug

    When trying to install devtron on Kubernetes 1.22 I get the following error:

    $ helm repo add devtron https://helm.devtron.ai "devtron" has been added to your repositories $ helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd Error: INSTALLATION FAILED: failed to install CRD crds/crd-devtron-legacy.yaml: error parsing : json: offset 2: invalid character '{' looking for beginning of object key string

    To Reproduce

    1. Execute "helm repo add devtron https://helm.devtron.ai"
    2. helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd
    3. Install does not start

    Expected behavior

    Devtron should install.

    Current behavior

    Devtron does not install.

  • Doc: replace

    Doc: replace "," with "," in the end of the sentence

    ๐Ÿ’ญ Description

    Where: https://github.com/devtron-labs/devtron/blob/main/README.md What: "Implements GitOps to manage the state of Kubernetes applications," ends in "," and should be a ".", according to other examples.

    Screenshot: image

    P.S. Please apply "good first time issue" label.

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

    AB#1006

  • Buildx support in CI pipelines

    Buildx support in CI pipelines

    Summary

    We would like to have docker buildx in the CI step, which would help us build multi-platform images with Devtron (which can run within amd, arm etc processors).

    Motivation

    Presently, Devtron runs CI pipelines with docker build command which we think is hardcoded as part of CI step. We would want to use docker buildx command which supports a lot of features on top of the good old docker build. buildx would help us in building multi-platform images which can run on all types of processors. https://docs.docker.com/buildx/working-with-buildx/#build-multi-platform-images

    Proposal

    We would like Devtron to provide buildx option in the CI pipelines. Few additional options can also be provided to the user to choose which platform images the user wants to build. Or, it can also be provided as part of Global Configurations, where the Admins can select the platform(s) (amd, arm etc) for which all the apps need to build their images.

  • Bug: GitOps (Argo CD) installation fails

    Bug: GitOps (Argo CD) installation fails

    ๐Ÿ“œ Description

    Created a kind cluster on 1.22.7 k8s version. Installed devtron using helm chart. When tried to install GitOps (Argo CD) from the UI, it got stuck in installing state and I see argocd-application-controller and argocd-server pods are in CrashLoopBackOff state.

    image

    argocd-application-controller-0 pod logs image argocd-server pod logs: image

    ๐Ÿ‘Ÿ Reproduction steps

    Install a kind cluster with below kind configurations: `kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: podSubnet: "10.214.0.0/16" serviceSubnet: "10.16.0.0/12" nodes:

    • role: control-plane image: kindest/node:v1.22.7@sha256:1dfd72d193bf7da64765fd2f2898f78663b9ba366c2aa74be1fd7498a1873166 extraPortMappings:
      • containerPort: 30000 hostPort: 30000
    • role: worker image: kindest/node:v1.22.7@sha256:1dfd72d193bf7da64765fd2f2898f78663b9ba366c2aa74be1fd7498a1873166
    • role: worker image: kindest/node:v1.22.7@sha256:1dfd72d193bf7da64765fd2f2898f78663b9ba366c2aa74be1fd7498a1873166 `

    and use devtron helm chart to install devtron

    ๐Ÿ‘ Expected behavior

    When installing Argo CD. Pods should spin up and installation should be successful.

    ๐Ÿ‘Ž Actual Behavior

    Argo pods go into CrashLoopBackOff state

    ๐Ÿ’ป Device

    Desktop/Laptop

    ๐Ÿ’ป Operating system

    MacOS

    ๐ŸŒ Browser

    Chrome

    ๐Ÿงฑ Your Environment

    I use kind for creating a k8s version 1.22.7 cluster

    โœ… Proposed Solution

    No response

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find any similar issue

    ๐Ÿข Have you read the Code of Conduct?

    AB#620

  • Git commit hash/sha as an environment variable in pre and post deployment steps

    Git commit hash/sha as an environment variable in pre and post deployment steps

    Summary

    In pre and post-deployment steps, it is useful to have the commit hash/sha as an environment variables, which we could use for example in webhook calls.

    Motivation

    Let's say we need to integrate with a third-party tool that provides deployment analytics. In such a case, their webhooks require us to append the commit hash. While it is very easy to add a post-deployment step, currently not having the commit hash is being a blocker in integrating with such tooling.

    Proposal

    Having the git hash provided as an environment variable during the pre and post deployment steps.

    AB#365

  • External secret Issue

    External secret Issue

    Checklist:

    • [x] I've searched in the docs and FAQ for my answer
    • [x] I've included steps to reproduce the bug.

    Describe the bug

    I deployed an app with AWS external-secret as secret all things running fine secrets are being used in the pod, even it shows degraded in-app status.

    To Reproduce

    [ordered list the process to finding and recreating the issue, example below]

    1. Create a custom app with AWS external-secret as secret.
    2. Deploy the app.
    3. Check the status of the app

    Expected behavior

    The app status should show healthy when everything running well.

    Current behavior

    Even after all things running fine but status is degraded.

    Screenshots

    Screenshot 2022-03-28 at 6 46 27 PM

    AB#311

  • Allow managers to give permission to any users even they are added by other managers.

    Allow managers to give permission to any users even they are added by other managers.

    Summary

    Allow managers to give permission to any users even they are added by other managers. Manager won't give permission today if user has already access for environment which he has not part of.

    Motivation

    Restriction need to remove for managers.

    Proposal

    Re-visit the user access module.

    AB#50

  • Obfuscate / Skip logging sensitive info in the console until debug mode is enabled

    Obfuscate / Skip logging sensitive info in the console until debug mode is enabled

    Obfuscate or skip logging sensitive info (passwords, keys etc) in the console until debug mode is enabled

    Checklist:

    • [x] I've searched in the docs and FAQ for my answer
    • [x] I've included steps to reproduce the bug.

    Describe the bug

    Some micro-services log sensitive info in the console logs, which should not be done until debug mode is enabled. Check the following micro-services:

    1. Git-sensor
    2. Devtron Orchestrator
    3. Ci-runner

    Expected behavior

    Logs should not contain any sensitive info like passwords, keys, tokens etc.

    Current behavior

    Some micro-services log sensitive info on console.

  • Schedule pipeline based on cron

    Schedule pipeline based on cron

    Summary

    We want to run our automation suite using Devtron pipeline. For that we need pipeline to get triggered based on cron.

    Proposal

    1. Create schedules based on cron.
    2. Add pipeline variables so that we can run job based on pipeline variable.

    AB#284

  • Bug: helm manifest output in deployment history

    Bug: helm manifest output in deployment history

    ๐Ÿ“œ Description

    helm generated manifest output is not coming for helm apps other than unlinked cli helm apps.

    ๐Ÿ‘Ÿ Reproduction steps

    1. Deploy an app using app store or link a cli helm app.
    2. manifest output tab will be missing in deployment history.

    ๐Ÿ‘ Expected behavior

    helm generated manifest output tab should come for all helm apps just like unlinked CLI helm apps.

    ๐Ÿ‘Ž Actual Behavior

    helm generated manifest output tab is not coming for all helm apps other than unlinked CLI helm apps.

    โ˜ธ Kubernetes version

    EKS 1.2.3

    Cloud provider

    Azure

    ๐ŸŒ Browser

    Chrome

    ๐Ÿงฑ Your Environment

    No response

    โœ… Proposed Solution

    No response

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find any similar issue

    ๐Ÿข Have you read the Code of Conduct?

  • fix: helm manifest output in deployment history

    fix: helm manifest output in deployment history

    Description

    This PR fixes two issues:-

    1. helm generated manifest output was not coming for helm apps other than unlinked cli helm apps.
    2. Deployment history was coming for app store helm apps. It was only coming after app is updated.

    Fixes #2823

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    1. By checking that helm generated manifest output is coming for all helm apps or not.

    Checklist:

    • [ ] The title of the PR states what changed and the related issues number (used for the release note).
    • [ ] Does this PR requires documentation updates?
    • [ ] I've updated documentation as required by this PR.
    • [x] I have performed a self-review of my own code.
    • [x] I have commented my code, particularly in hard-to-understand areas.
    • [x] I have tested it for all user roles.
    • [ ] I have added all the required unit/api test cases.

    Does this PR introduce a user-facing change?

    
    
  • Local nats migration test

    Local nats migration test

    Description

    Migrated to common lib pubsub client code instead of local pubsub client

    Fixes # (issue) https://github.com/devtron-labs/devtron/issues/2281

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    • [x] Tested the events coming from kubewatch in ci-build

    Checklist:

    • [x] The title of the PR states what changed and the related issues number (used for the release note).
    • [ ] Does this PR require documentation updates?
    • [ ] I've updated documentation as required by this PR.
    • [ ] I have performed a self-review of my own code
    • [ ] I have commented my code, particularly in hard-to-understand areas
    • [ ] I have tested it for all user roles
    • [ ] I have added all the required unit/api test cases
  • Bug: CI/CD install fail

    Bug: CI/CD install fail

    ๐Ÿ“œ Description

    china gfw network blocking,i try to install CI/CD, response "dial tcp 0.0.0.0:443: connect: connection refused"

    ๐Ÿ‘Ÿ Reproduction steps

    1.install or Retry install

    ๐Ÿ‘ Expected behavior

    install success

    ๐Ÿ‘Ž Actual Behavior

    Get "https://raw.githubusercontent.com/devtron-labs/devtron/v0.6.9/charts/devtron/devtron-bom.yaml": dial tcp 0.0.0.0:443: connect: connection refused

    response : {"code":500,"status":"Internal Server Error","errors":[{"code":"000","internalMessage":"[{Get "https:/ /raw.githubusercontent.com/devtron-labs/devtron/v0.6.9/charts/devtron/devtron-bom.yaml": dial tcp 0.0.0.0:443: connect: co nnection refused}]","userMessage":"Get "https://raw.githubusercontent.com/devtron-labs/devtron/v0.6.9/charts/devtron/devtr on-bom.yaml": dial tcp 0.0.0.0:443: connect: connection refused"}]}

    โ˜ธ Kubernetes version

    k3d

    Cloud provider

    self-hosted

    ๐ŸŒ Browser

    Chrome

    ๐Ÿงฑ Your Environment

    No response

    โœ… Proposed Solution

    This is a request from the golang http package,I want to use golang http proxy download devtron-bom.yaml Or use other methods to successfully download . What should I do

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find any similar issue

    ๐Ÿข Have you read the Code of Conduct?

  • Feature: Resource viewer for a cluster

    Feature: Resource viewer for a cluster

    ๐Ÿ”– Feature description

    A feature like Resource viewer for a cluster is very useful for users who want to view all the k8s resources for a k8s cluster and want to take any action (create resource, delete resource, edit resource) on that cluster. Currently users do these things from cli, so exposing a fine UI on dashboard for these will be better for users.

    ๐ŸŽค Pitch

    A button on left panel can be exposed and on clicking on that user should ask to select cluster. after selecting the cluster, Resource viewer should get open.

    โœŒ๏ธ Solution

    Resource viewer should give a complete picture of all the resources which are part of that cluster and user can take actions against them.

    ๐Ÿ”„๏ธ Alternative

    NA

    ๐Ÿ‘€ Have you spent some time to check if this issue has been raised before?

    • [X] I checked and didn't find similar issue

    ๐Ÿข Have you read the Code of Conduct?

Moby: an open-source project created by Docker to enable and accelerate software containerization
Moby: an open-source project created by Docker to enable and accelerate software containerization

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Dec 10, 2021
Hexa is the open-source, standards-based policy orchestration software for multi-cloud and hybrid businesses.

Hexa Policy Orchestrator Hexa is the open-source, standards-based policy orchestration software for multi-cloud and hybrid businesses. The Hexa projec

Dec 22, 2022
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

flagger Flagger is a progressive delivery tool that automates the release process for applications running on Kubernetes. It reduces the risk of intro

Jan 5, 2023
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications

Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications Explore PipeCD docs ยป Overview PipeCD provides a unified co

Jan 3, 2023
Workflow engine for Kubernetes
Workflow engine for Kubernetes

What is Argo Workflows? Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflow

Jan 4, 2023
go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data.
go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data.

go-opa-validate go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data. Installation Usage Cont

Nov 17, 2022
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster

Kube-Knark Project Trace your kubernetes runtime !! Kube-Knark is an open source tracer uses pcap & ebpf technology to perform runtime tracing on a de

Sep 19, 2022
TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative.

TriggerMesh open source event-driven integration platform powered by Kubernetes and Knative. TriggerMesh allows you to declaratively define event flows between sources and targets as well as add even filter, splitting and processing using functions.

Dec 30, 2022
OpenAIOS is an incubating open-source distributed OS kernel based on Kubernetes for AI workloads
OpenAIOS is an incubating open-source distributed OS kernel based on Kubernetes for AI workloads

OpenAIOS is an incubating open-source distributed OS kernel based on Kubernetes for AI workloads. OpenAIOS-Platform is an AI development platform built upon OpenAIOS for enterprises to develop and deploy AI applications for production.

Dec 9, 2022
Kubernetes is an open source system for managing containerized applications across multiple hosts.
Kubernetes is an open source system for managing containerized applications across multiple hosts.

Kubernetes Kubernetes is an open source system for managing containerized applications across multiple hosts. It provides basic mechanisms for deploym

Nov 25, 2021
Karpenter: an open-source node provisioning project built for Kubernetes
Karpenter: an open-source node provisioning project built for Kubernetes

Karpenter is an open-source node provisioning project built for Kubernetes. Its goal is to improve the efficiency and cost of running workloads on Kub

Dec 1, 2022
KubeOrbit is an open-source abstraction layer library that turns easy apps testing&debuging on Kubernetes in a new way
KubeOrbit is an open-source abstraction layer library that turns easy apps testing&debuging on Kubernetes in a new way

KubeOrbit is an open-source abstraction layer library that turns easy apps testing&debuging on Kubernetes in a new way

Jan 6, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | ็ฎ€ไฝ“ไธญๆ–‡ Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

Jan 8, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product โฃ English | ็ฎ€ไฝ“ไธญๆ–‡ Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

May 12, 2021
A Continuous Delivery system built on container technology
A Continuous Delivery system built on container technology

Drone is a Continuous Delivery system built on container technology. Drone uses a simple yaml configuration file, a superset of docker-compose, to def

Sep 29, 2021
Template Compose - Continues Delivery

Template Compose - Continues Delivery

Feb 4, 2022
Kubernetes OS Server - Kubernetes Extension API server exposing OS configuration like sysctl via Kubernetes API

KOSS is a Extension API Server which exposes OS properties and functionality using Kubernetes API, so it can be accessed using e.g. kubectl. At the moment this is highly experimental and only managing sysctl is supported. To make things actually usable, you must run KOSS binary as root on the machine you will be managing.

May 19, 2021
A Golang based high performance, scalable and distributed workflow framework
A Golang based high performance, scalable and distributed workflow framework

Go-Flow A Golang based high performance, scalable and distributed workflow framework It allows to programmatically author distributed workflow as Dire

Jan 6, 2023