Try Devtron Enterprise!
Start Free Trial
LogoLogo
WebsiteDevtron demoGithub RepoJoin Discord
v0.7
v0.7
  • Introduction
  • Getting Started
  • Install Devtron
    • Install Devtron with CI/CD
    • Install Devtron with CI/CD and GitOps (Argo CD)
    • Install Devtron without Integrations
    • Install Devtron on Minikube, Microk8s, K3s, Kind, Cloud VMs
    • Install Devtron on Airgapped Environment
    • Demo on Popular Cloud Providers
    • Backup for Disaster Recovery
    • Uninstall Devtron
    • FAQs
  • Install Devtron Enterprise Trial
  • Devtron Kubernetes Client
  • Configurations
    • Installation Configurations
    • Override Configurations
    • Ingress Setup
  • Global Configurations
    • Host URL
    • GitOps
    • Projects
    • Clusters & Environments
    • Git Accounts
    • Container/OCI Registry
    • Chart Repositories
    • Deployment Charts
    • Authorization
      • SSO Login Services
        • Google
        • GitHub
        • GitLab
        • Microsoft
        • LDAP
        • OIDC
          • Keycloak
          • Okta
        • OpenShift
      • User Permissions
      • Permission Groups
      • API Tokens
    • Notifications
    • Deployment Window
    • Approval Policy
    • External Links
    • Catalog Framework
    • Scoped Variables
    • Plugin Policy
    • Pull Image Digest
    • Tags Policy
    • Filter Condition
    • Lock Deployment Configuration
    • Image Promotion Policy
    • Build Infra
  • Devtron Upgrade
    • Update Devtron from Devtron UI
    • Upgrade to 1.5.0
    • 0.6.x-0.7.x
    • 0.5.x-0.6.x
    • 0.4.x-0.5.x
    • 0.4.x-0.4.x
    • 0.3.x-0.4.x
    • 0.3.x-0.3.x
    • 0.2.x-0.3.x
  • Usage
    • Applications
      • Create a New Application
      • Clone an Existing Application
      • Deploy a Sample Application
      • App Configuration
        • Git Repository
        • Build Configuration
        • Base Deployment Template
          • Deployment
          • Rollout Deployment
          • Job and Cronjob
          • StatefulSets
        • GitOps Configuration
        • Workflow Editor
          • CI Pipeline
            • Pre-Build/Post-Build Stages
            • Override Build Configuration
          • CD Pipeline
        • ConfigMaps
        • Secrets
          • External Secret Operator (ESO)
            • AWS Secrets Manager
            • Google Secrets Manager
            • HashiCorp Vault
        • Environment Overrides
        • Deleting Application
      • Build and Deploy
        • Triggering CI
        • Triggering CD
        • Rollback Deployment
        • Applying Labels to Images
      • App Details
        • Debugging Deployment And Monitoring
        • Using Ephemeral Containers
        • Application Metrics
      • Application Overview
    • Jobs
      • Create a new job
      • Configurations
      • Workflow Editor
      • Trigger Job
      • Overview
    • Application Groups
    • Software Distribution Hub
      • Tenants
      • Release Hub
    • Resource Browser
    • Resource Watcher
    • Charts
      • Charts Overview
      • Deploy & Observe
      • Examples
        • Deploying Mysql Helm Chart
        • Deploying MongoDB Helm Chart
      • Chart Group
    • Security
      • Security Scans
      • Security Policies
    • Bulk Edit
    • Integrations
      • Build and Deploy (CI/CD)
      • GitOps (Argo CD)
      • Vulnerability Scanning (Clair)
      • Notifications
      • Monitoring (Grafana)
    • Pipeline Plugins
      • Create Your Plugin
      • Our Plugins
        • Ansible Runner
        • Bitbucket Runner Trigger
        • Codacy
        • Code-Scan
        • Copacetic
        • Container Image Exporter
        • Copy Container Image
        • Cosign
        • CraneCopy
        • Dependency track - Maven & Gradle
        • Dependency track - NodeJS
        • Dependency track - Python
        • Devtron CD Trigger
        • Devtron CI Trigger
        • Devtron Job Trigger
        • DockerSlim
        • EKS Create Cluster
        • GCS Create Bucket
        • GitHub Pull Request Updater
        • GKE Provisioner
        • GoLang-migrate
        • Jenkins
        • Jira Issue Validator
        • Jira Issue Updater
        • K6 Load Testing
        • Pull images from container repository
        • Semgrep
        • SonarQube
        • SonarQube v1.1.0
        • Terraform CLI
        • Vulnerability Scanning
  • Resources
    • Glossary
    • Troubleshooting
    • Use Cases
      • Devtron Generic Helm Chart To Run CronJob Or One Time Job
      • Connect SpringBoot with Mysql Database
      • Connect Expressjs With Mongodb Database
      • Connect Django With Mysql Database
      • Pull Helm Charts from OCI Registry
    • Telemetry Overview
    • Devtron on Graviton
    • Release Notes
Powered by GitBook
On this page
  • Creating CD Pipeline
  • New Deployment
  • Deploy to Environment
  • Deployment Strategy
  • Pre-Deployment Stage
  • Deployment Stage
  • Post-Deployment Stage
  • Migrate to Devtron
  • Migrate Helm Release
  • Migrate Argo CD Application
  • Updating CD Pipeline
  • Deleting CD Pipeline
  • Extras
  • Deployment Strategies
  • Creating Sequential Pipelines

Was this helpful?

Export as PDF
  1. Usage
  2. Applications
  3. App Configuration
  4. Workflow Editor

CD Pipeline

PreviousOverride Build ConfigurationNextConfigMaps

Last updated 1 month ago

Was this helpful?

After your CI pipeline is ready, you can start building your CD pipeline. Devtron enables you to design your CD pipeline in a way that fully automates your deployments. Images from CI stage can be deployed to one or more environments through dedicated CD pipelines.

Creating CD Pipeline

Click the '+' sign on CI Pipeline to attach a CD Pipeline to it.

Figure 1a: Adding CD Pipeline

A basic Create deployment pipeline window will pop up.

Here, you get two tabs:


New Deployment

The New Deployment tab displays the following sections:

Deploy to Environment

This section expects four inputs from you:

Setting
Description
Options

Environment

Select the environment where you want to deploy your application

(List of available environments)

Namespace

Automatically populated based on the selected environment

Not Applicable

Trigger

When to execute the deployment pipeline

Automatic: Deployment triggers automatically when a new image completes the previous stage (build pipeline or another deployment pipeline) Manual: Deployment is not initiated automatically. You can trigger deployment with a desired image.

Deployment Approach

How to deploy the application

Deployment Strategy

Now, the window will have 3 distinct tabs, and you will see the following additions:

You can create or edit a deployment strategy in Advanced Options. Remember, only the default strategy will be used for deployment, so use the SET DEFAULT button to mark your preferred strategy as default after creating it.

Pre-Deployment Stage

If your deployment requires prior actions like DB migration, code quality check (QC), etc., you can use the Pre-deployment stage to configure such tasks.

  1. Tasks

Here you can add one or more tasks. The tasks can be re-arranged using drag-and-drop and they will be executed sequentially.

  1. Trigger Pre-Deployment Stage

  1. ConfigMaps & Secrets

Prerequisites

If you want to use some configuration files and secrets in pre-deployment stages or post-deployment stages, then you can use the ConfigMaps & Secrets options. You will get them as a drop-down in the pre-deployment stage.

  1. Execute tasks in application environment

These Pre-deployment CD / Post-deployment CD pods can be created in your deployment cluster or the devtron build cluster. If your scripts/tasks has some dependency on the deployment environment, you may run these pods in the deployment cluster. Thus, your scripts (if any) can interact with the cluster services that may not be publicly exposed.

Some tasks require extra permissions for the node where Devtron is installed. However, if the node already has the necessary permissions for deploying applications, there is no need to assign them again. Instead, you can enable the Execute tasks in application environment option for the pre-CD or post-CD steps. By default, this option is disabled.

To enable the Execute tasks in application environment option, follow these steps:

  • Go to the chart store and search for the devtron-in-clustercd chart.

  • Configure the chart according to your requirements and deploy it in the target cluster.

  • After the deployment, edit the devtron-cm configmap and add the following key-value pair:

    ORCH_HOST: <host_url>/orchestrator/webhook/msg/nats
    
    Example:
    
    ORCH_HOST: http://xyz.devtron.com/orchestrator/webhook/msg/nats
    

    ORCH_HOST value should be same as of CD_EXTERNAL_LISTENER_URL value which is passed in values.yaml.

  • Delete the Devtron pod using the following command:

    kubectl delete pod -l app=devtron -n devtroncd
  • Again navigate to the chart store and search for the "migration-incluster-cd" chart.

  • Edit the cluster-name and secret name values within the chart. The cluster name refers to the name used when adding the cluster in the global configuration and for which you are going to enable Execute tasks in application environment option.

  • Deploy the chart in any environment within the Devtron cluster. Now you should be able to enable Execute tasks in application environment option for an environment of target cluster.

Deployment Stage

Pipeline Name

Pipeline name will be auto-generated; however, you are free to modify the name as per your requirement.

Custom Image Tag Pattern

  1. Enable the toggle button as shown below.

  2. Click the edit icon.

  3. You can write an alphanumeric pattern for your image tag, e.g., prod-v1.0.{x}. Here, 'x' is a mandatory variable whose value will incrementally increase with every pre or post deployment trigger (that option is also available to you). You can also define the value of 'x' for the next trigger in case you want to change it.

Ensure your custom tag do not start or end with a period (.) or comma (,)
  1. Click Update Pipeline.

Pull Container Image with Image Digest

Therefore, to eliminate the possibility of pulling an unintended image, Devtron offers the option to pull container images using digest and image tag.

An image digest is a unique and immutable SHA-256 string returned by the container registry when you push an image. So the image referenced by the digest will never change.

Who Can Perform This Action?

Post-Deployment Stage

If you need to run any actions for e.g., closure of Jira ticket, load testing or performance testing, you can configure such actions in the post-deployment stages.

Post-deployment stages are similar to pre-deployment stages. The difference is, pre-deployment executes before the deployment, while post-deployment occurs after.


Migrate to Devtron

When can I see this option?

Who Can Perform This Action?

Only superadmins can migrate existing Helm releases or Argo apps to Devtron

If you already use external Helm or Argo CD for deployment and wish to try out Devtron, this feature helps you onboard and manage your external applications using Devtron’s CI/CD capabilities, offering the following benefits:

  • No hassle of manually migrating your existing applications

  • No need to set up a parallel Argo CD instance

  • No risk of losing your existing configurations

  • Use build pipeline in your workflow

  • Execute pre-deployment and post-deployment tasks

  • Scan your apps for vulnerabilities

  • Hibernate or restart your app

Migrate Helm Release

Prerequisites

  1. Click Helm Release in 'Select type of application to migrate'.

  2. Select the external cluster containing your Helm releases, and select the Helm release you wish to migrate.

  1. Select the trigger (Automatic/Manual) and click Create Pipeline.

Limitations

  • Apps deployed using Helm + manual kubectl, kubectl, kustomize + helm are not supported.

  • By default, Devtron detects and uses app-values.yaml as the values file. If your Helm app contains multiple values files, you must consolidate it into a single app-values.yaml.

  • Once an app is onboarded to Devtron, the user should only use Devtron to manage that application and not make manual changes on that onboarded Helm release. This is because Devtron might not monitor or reconcile the manual changes you make outside Devtron.

Migrate Argo CD Application

Prerequisites

  • It must have a single Git source and a single values file. By default, Devtron expects app-values.yaml so make sure it is committed to Git.

  • The external Argo CD should have auto-sync enabled or an alternative syncing mechanism, as Devtron does not perform manual syncs.

  1. Click Argo CD Application in 'Select type of application to migrate'.

  2. Select the external cluster containing your Argo apps, and select the Argo CD application you wish to migrate.

  1. Select the trigger (Automatic/Manual) and click Create Pipeline.

Limitations

  • The Git source type should be branch HEAD.

  • The target deployment cluster’s endpoint in Devtron must be the same as the one configured in Argo CD.

  • Once onboarded to Devtron, users should manage the application only through Devtron and avoid making changes directly in Git or Argo CD. This is because Devtron might not monitor or reconcile the manual changes you make outside Devtron.

Note


Updating CD Pipeline

You can update the deployment stages and the deployment strategy of the CD Pipeline whenever you require it. However, you cannot change the name of a CD Pipeline or its Deployment Environment. If you want a new CD pipeline for the same environment, first delete the previous CD pipeline.

To update a CD Pipeline, go to the App Configurations section, Click on Workflow editor and then click on the CD Pipeline you want to Update.

Make changes as needed and click on Update Pipeline to update this CD Pipeline.


Deleting CD Pipeline

If you no longer require the CD Pipeline, you can also delete the Pipeline.

To delete a CD Pipeline, go to the App Configurations and then click on the Workflow editor. Now click on the pipeline you wish to delete. A pop-up having the CD details will appear. Verify the name and the details to ensure that you are not accidentally deleting the wrong CD pipeline and then click Delete Pipeline to delete it.

Deleting a CD pipeline also deletes all the K8s resources associated with it and will bring a disruption in the deployed micro-service. Before deleting a CD pipeline, please ensure that the associated resources are not being used in any production workload.


Extras

Deployment Strategies

A deployment strategy is a method of updating, downgrading, or creating new versions of an application. The options you see under deployment strategy depend on the selected chart type (see fig 2). Below are some deployment configuration-based strategies.

Blue-Green Strategy

Blue-green deployments involve running two versions of an application at the same time and moving traffic from the in-production version (the green version) to the newer version (the blue version).

blueGreen:
  autoPromotionSeconds: 30
  scaleDownDelaySeconds: 30
  previewReplicaCount: 1
  autoPromotionEnabled: false
Key
Description

autoPromotionSeconds

It will make the rollout automatically promote the new ReplicaSet to active Service after this time has passed

scaleDownDelaySeconds

It is used to delay scaling down the old ReplicaSet after the active Service is switched to the new ReplicaSet

previewReplicaCount

It will indicate the number of replicas that the new version of an application should run

autoPromotionEnabled

It will make the rollout automatically promote the new ReplicaSet to the active service

Rolling Strategy

A rolling deployment slowly replaces instances of the previous version of an application with instances of the new version of the application. Rolling deployment typically waits for new pods to become ready via a readiness check before scaling down the old components. If a significant issue occurs, the rolling deployment can be aborted.

rolling:
  maxSurge: "25%"
  maxUnavailable: 1
Key
Description

maxSurge

No. of replicas allowed above the scheduled quantity

maxUnavailable

Maximum number of pods allowed to be unavailable

Canary Strategy

Canary deployments are a pattern for rolling out releases to a subset of users or servers. The idea is to first deploy the change to a small subset of servers, test it, and then roll the change out to the rest of the servers. The canary deployment serves as an early warning indicator with less impact on downtime: if the canary deployment fails, the rest of the servers aren't impacted.

canary:
  maxSurge: "25%"
  maxUnavailable: 1
  steps:
    - setWeight: 25
    - pause:
        duration: 15 # 1 min
    - setWeight: 50
    - pause:
        duration: 15 # 1 min
    - setWeight: 75
    - pause:
        duration: 15 # 1 min
Key
Description

maxSurge

It defines the maximum number of replicas the rollout can create to move to the correct ratio set by the last setWeight

maxUnavailable

The maximum number of pods that can be unavailable during the update

setWeight

It is the required percent of pods to move to the next step

duration

It is used to set the duration to wait to move to the next step

Recreate Strategy

The recreate strategy is a dummy deployment that consists of shutting down version 'A' and then deploying version 'B' after version 'A' is turned off.

A recreate deployment incurs downtime because, for a brief period, no instances of your application are running. However, your old code and new code do not run at the same time. It terminates the old version and releases the new one.

recreate:

Unlike other strategies mentioned above, 'Recreate' strategy doesn't contain keys for you to configure.

Creating Sequential Pipelines

Devtron supports attaching multiple deployment pipelines to a single build pipeline, in its workflow editor. This feature lets you deploy an image first to stage, run tests and then deploy the same image to production.

Please follow the steps mentioned below to create sequential pipelines:

  1. After creating CI/build pipeline, create a CD pipeline by clicking on the + sign on CI pipeline and configure the CD pipeline as per your requirements.

  2. To add another CD Pipeline sequentially after previous one, again click on + sign on the last CD pipeline.

  3. Similarly, you can add multiple CD pipelines by clicking + sign of the last CD pipeline, each deploying in different environments.

Tip

Figure 1b: Creating CD Pipeline

- Use this option to create new Helm/GitOps deployment.

- Use this option if you wish to migrate your existing Helm Release/Argo CD Apps to Devtron.

Helm or GitOps Refer

Devtron supports multiple deployment strategies depending on the .

Figure 2: Strategies Supported by Chart Type

Refer to know more about each strategy in depth.

The next section is and it comes with additional capabilities. This option is available at the bottom of the Create deployment pipeline window. However, if you don't need them, you may proceed with a basic CD pipeline and click Create Pipeline.

Figure 3: Advanced Options

Figure 4: Advanced Options (Expanded View)
Figure 5: Pre-deployment Stage

Refer the trigger types from .

Make sure you have added and in App Configuration.

Make sure your cluster has installed.

Figure 6: 'devtron-in-clustercd' Chart
Figure 7: Configuration
Figure 8: 'migration-incluster-cd' chart
Figure 9: Configuration

This will be utilized only when an existing container image is copied to another repository using the . The image will be copied with the tag generated by the Image Tag Pattern you defined.

Figure 10: Enabling Custom Image Tag Pattern
Figure 11: Edit Icon
Figure 12: Defining Tag Pattern

To know how and where this image tag would appear, refer

Although Devtron ensures that remain unique, the same cannot be said if images are pushed with the same tag to the same container registry from outside Devtron.

Figure 13: Pull with Image Digest
Figure 14: Tag@Digest

Users need to have Admin permission or above (along with access to the environment and application) to enable this option. However, this option will be non-editable in case the super-admin has enabled .

You can use in post deployments as well. The option to execute tasks in application environment is available too.

Figure 15: Post-deployment Stage

This option will be available only during the in your workflow. Existing CD pipelines will not have this option.

View config diff, deployment history, and all the capabilities that come with Devtron Apps. Check the .

Add your external cluster (containing your Helm Apps) in .

Your Helm release must use the same chart type as your application. If needed, you can upload or select the appropriate chart in Global Configurations → Deployment Charts, then save the chart type at of your application.

You can not only , but also manage their deployments using Devtron's CI/CD.

Figure 16: Choosing External Cluster and Helm Release from Dropdown

The target cluster, its namespace, and environment would be visible. If the environment is not available, click Add Environment. This will open a new tab. Once you have , return and click the refresh button.

Figure 17: Adding Environment to Target
Figure 18: Creating CD Pipeline for Helm Release

Once the pipeline is created, you may go to to trigger the pipelines. Your Helm release would be deployed using Devtron.

This feature comes with certain mentioned limitations and expectations. If your use case doesn't fit and goes beyond, feel free to .

You can not only , but also manage their deployments using Devtron's CI/CD.

Your app should be an Argo Helm app ().

GitOps credentials required to commit in the Git repo should be configured in .

The cluster containing your external Argo applications should be added to Devtron. Refer .

The target deployment cluster, its namespace, and its should be added to Devtron.

Your Argo CD app must use the same chart type as your application. If needed, you can upload or select the appropriate chart in Global Configurations → Deployment Charts. Then save the chart type at of your application.

Figure 19: Choosing External Cluster and Argo App from Dropdown

The target cluster, its namespace, and environment would be visible. If the environment is not available, click Add Environment. This will open a new tab. Once you have , return and click the refresh button.

Figure 20: Adding Environment to Target
Figure 21: Creating CD Pipeline for Argo CD App

Once the pipeline is created, you may go to to trigger the pipelines. Your Argo CD app would be deployed using Devtron.

This feature comes with certain mentioned limitations and expectations. If your use case doesn't fit and goes beyond, feel free to .

If you have configured for your external Argo apps in Devtron, and later install the GitOps (ArgoCD) module from to deploy your Devtron apps/Helm apps via GitOps, you must once again save your GitOps and Cluster configurations after installation. This might prevent potential errors and ensure your GitOps deployments are functional.

Figure 22: Updating CD Pipeline

Does your app have different requirements for different environments? Read

Figure 23: Adding Multiple CD Pipelines

If you have multiple applications that already have an existing pipeline (for a given environment) in their workflow, you may clone the same pipeline and its configurations for new environments instead of recreating them in each application. Refer to know more.

ConfigMaps
Secrets
Copy Container Image Plugin
Copy Container Image Plugin
pull image digest in Global Configurations
full list of features
Clusters & Environments
base configuration
Build & Deploy
open a feature request
read about supported tools
Global Configurations
Clusters & Environments
base configuration
Build & Deploy
open a feature request
GitOps
Devtron Stack Manager
Environment Overrides
New Deployment
Migrate to Devtron
Deploy to Environment
Deployment Strategy
Advanced Options
Deployment Strategies
Advanced Options
Pre-Deployment stage (tab)
Deployment stage (tab)
Post-Deployment stage (tab)
here
image tags
ConfigMap and Secrets
creation of CD pipeline
GitOps
view your external Helm apps
view your external Argo CD apps
deployment chart type
devtron-agent
added the environment to your cluster
environment
added the environment to your cluster
Clone Pipeline Config