Argo Rollouts Overview
Learn how to use Argo Rollouts with Harness GitOps
Argo Rollouts is a progressive delivery controller for Kubernetes that provides advanced deployment capabilities such as blue-green, canary, and analysis-driven rollouts. When integrated with Harness GitOps, Argo Rollouts enables you to execute sophisticated deployment strategies declaratively while maintaining the GitOps workflow.
Overview of Argo Rollouts and its benefits
Argo Rollouts extends Kubernetes Deployments with a new custom resource called a Rollout. This custom resource provides additional deployment strategies and features that aren't available with standard Kubernetes Deployments.
Key benefits
Safer deployments: Progressive rollout strategies minimize the blast radius of problematic releases by gradually shifting traffic to new versions while monitoring their health.
Advanced deployment strategies: Native support for canary and blue-green deployments without complex scripting or third-party service mesh requirements.
Traffic management: Fine-grained control over traffic shifting between different versions of your application, allowing you to test new releases with a subset of users.
Automated analysis: Integration with monitoring and observability tools to automatically promote or roll back deployments based on metrics and health checks.
Declarative configuration: Define your deployment strategies in YAML manifests that can be version-controlled alongside your application code.
GitOps-friendly: Works seamlessly with Argo CD and Harness GitOps to maintain a declarative, Git-based workflow for all your deployments.
How Argo Rollouts works with Harness GitOps
Harness GitOps integrates Argo CD with Argo Rollouts to provide a complete progressive delivery solution:
Rollout resources are defined in your Git repository alongside other Kubernetes manifests
Harness GitOps Agent syncs these resources to your cluster using Argo CD
Argo Rollouts controller executes the deployment strategy defined in your Rollout manifest
Harness pipelines can orchestrate and control rollout progression with built-in approval gates and monitoring
Prerequisites
Before installing Argo Rollouts, ensure you have the following:
Harness requirements
A Harness account with GitOps module enabled
Appropriate permissions to create and manage GitOps applications
A configured Harness GitOps Agent connected to your cluster
Kubernetes requirements
Access to a Kubernetes cluster (version 1.19 or later recommended)
Cluster admin permissions to install Custom Resource Definitions (CRDs)
kubectl installed and configured to access your cluster
Optional requirements
For advanced features, you may also need:
A service mesh (Istio, Linkerd, or SMI) for advanced traffic management
Ingress controller (NGINX, ALB, etc.) for traffic splitting
Monitoring tools (Prometheus, Datadog, New Relic) for analysis templates
Installation
Argo Rollouts can be installed in your Kubernetes cluster using the CLI. This method installs the Argo Rollouts controller and its associated Custom Resource Definitions.
Install using the CLI
This is the quickest method to get Argo Rollouts running in your cluster.
Step 1: Create a dedicated namespace for Argo Rollouts:
Step 2: Apply the Argo Rollouts manifest:
This command installs:
The Rollout Custom Resource Definition (CRD)
The Argo Rollouts controller deployment
Required RBAC permissions
Service accounts and config maps
Step 3: Verify the installation:
You should see the argo-rollouts controller pod running:
Verification steps
After installation, verify that Argo Rollouts is properly configured and ready to manage your deployments.
Verify the controller is running
Check that the Argo Rollouts controller pod is running and healthy:
Expected output:
Verify the CRDs are installed
Confirm that the Rollout custom resource definitions are registered:
Expected output:
You can also verify other related CRDs:
Check controller logs
Review the controller logs to ensure there are no errors:
Look for a log line similar to:
Verify RBAC permissions
Ensure the controller has the necessary permissions:
Both commands should return the respective resources without errors.
Install the kubectl plugin (optional)
For easier management of rollouts from the command line, install the Argo Rollouts kubectl plugin:
For Linux/Mac:
For Mac (using Homebrew):
Verify the plugin installation:
Quick start example
Let's deploy a simple canary rollout to see Argo Rollouts in action. This example uses a demo application that will help you understand the basic workflow.
Step 1: Fork the demo repository
Fork or clone the Harness Rollouts demo repository:
This repository contains several example rollout configurations in the examples/ directory.
Step 2: Create a GitOps application for the demo
In Harness, navigate to Deployments > GitOps > Applications
Click + New Application
Configure the application:
Name:
rollouts-canary-demoGitOps Agent: Select the same agent where you installed Argo Rollouts
Service (optional): Create or select a service to track this deployment
Environment (optional): Create or select an environment

Step 3: Configure the application source
On the Source page:
Repository Type: Git
Repository URL: https://github.com/harness-community/Gitops-Samples
Target Revision: master
Path: examples/canary
The repository uses Kustomize for configuration. You can leave the Kustomize options at their defaults.
Click Continue.

Step 4: Configure the destination
Cluster: Select your target cluster
Namespace: Enter an existing namespace or create a new one (e.g., rollouts-demo)
Click Create.

Step 5: Monitor the initial deployment
Navigate to Deployments > GitOps > Applications and click on rollouts-canary-demo
Wait for the application to sync and reach a Healthy state
In the Resources tab, you'll see:
A Rollout resource (instead of a standard Deployment)
Two Service resources (stable and canary)
A ReplicaSet created by the Rollout

Step 6: Understand the canary configuration
The demo rollout uses a basic canary strategy. View the rollout details:
20% of traffic → canary version
Pause for manual promotion
40% of traffic → canary version
Pause for manual promotion
60% of traffic → canary version
Pause for manual promotion
80% of traffic → canary version
Pause for manual promotion
100% of traffic → canary version (promotion complete)
Step 7: Trigger a new rollout
Update the image tag in your Git repository to trigger a new rollout. If you're using the demo repository, you can modify the examples/canary/kustomization.yaml file:
Commit and push this change. Harness GitOps will detect the change and sync it to your cluster.
Step 8: Observe the canary rollout
In Harness, navigate to your application's Resources tab
Watch as the Rollout progresses through the canary stages
You'll see the rollout pause at each stage, waiting for manual promotion

To manually promote the rollout using kubectl:
Repeat this command at each pause to progress through all canary stages.
Step 9: Access the demo application
If the demo includes a service of type LoadBalancer or you've configured an Ingress, you can access the application to see the color change as traffic shifts between versions.
Get the service endpoint:
What's next?
Now that you've seen a basic canary rollout in action, you can:
Configure automated promotions: Learn how to automatically promote rollouts based on analysis
Set up blue-green deployments: Explore instant traffic switching strategies
Integrate with Harness Pipelines: Use pipeline steps to control rollout progression
Add analysis templates: Implement automated validation with your monitoring tools
Continue to the next section to learn how to configure different rollout strategies for your applications.
Related resources
Last updated
Was this helpful?