Skip to main content
Argo Rollouts is a Kubernetes controller and a set of CRDs that enable advanced deployment strategies such as canary releases, blue-green deployments, and progressive delivery. It extends native Kubernetes Deployment semantics with fine-grained rollout control, traffic shifting, metrics-driven analysis, and automated rollbacks. This guide walks through installing Argo Rollouts into a cluster, installing the kubectl plugin that provides the local dashboard proxy, and verifying the controller and UI are running.

What you’ll install

  • Argo Rollouts controller and CRDs
  • RBAC and ConfigMap for the controller
  • A ClusterIP metrics Service (exposes metrics internally)
  • kubectl-argo-rollouts plugin to access the UI locally
Useful links and references:

Install Argo Rollouts

Apply the official install manifest. This creates the argo-rollouts namespace, CRDs, RBAC, the controller Deployment, Service, ConfigMap, and related resources. Run:
kubectl apply -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml
The install manifest creates several resource types. Example of common resources created:
Resource TypePurpose
CustomResourceDefinition (CRD)rollouts.argoproj.io, experiments.argoproj.io, etc. — defines Rollout API objects
ServiceAccount / RBACController permissions
Deploymentargo-rollouts controller Deployment
ServiceClusterIP service for controller metrics
ConfigMap / SecretController configuration and notifications
Example output you may see after applying the manifest:
customresourcedefinition.apiextensions.k8s.io/clusteranalysistemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/experiments.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/rollouts.argoproj.io created
serviceaccount/argo-rollouts created
clusterrole.rbac.authorization.k8s.io/argo-rollouts created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-admin created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-edit created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-view created
clusterrolebinding.rbac.authorization.k8s.io/argo-rollouts created
configmap/argo-rollouts-config created
secret/argo-rollouts-notification-secret created
service/argo-rollouts-metrics created
deployment.apps/argo-rollouts created
Confirm the controller pod and service are running in the argo-rollouts namespace:
kubectl -n argo-rollouts get all
Example output:
NAME                                    READY   STATUS    RESTARTS   AGE
pod/argo-rollouts-64d959676c-m6h4w      1/1     Running   0          23s

NAME                                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
service/argo-rollouts-metrics       ClusterIP   10.101.96.18   <none>        8090/TCP    24s

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/argo-rollouts     1/1     1            1           24s

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/argo-rollouts-64d959676c     1         1         1       24s
The Rollouts controller exposes metrics via a ClusterIP Service (internal to the cluster). It does not provide an externally hosted dashboard by default — to view the Rollouts UI locally, install the kubectl plugin which proxies the dashboard to your machine.

Install the kubectl-argo-rollouts plugin

The Rollouts UI is accessed through the kubectl plugin binary kubectl-argo-rollouts, which registers as kubectl argo rollouts. Download the appropriate binary for your OS/architecture from the Argo Rollouts GitHub releases page.
A dark-themed GitHub release page showing the "Assets" list for an argo-rollouts release, with file names like install.yaml, dashboard-install.yaml, kubectl-argo-rollouts binaries for multiple OS/architectures, checksums and YAML/JSON assets. Each entry shows a sha256 hash, file size and the Jun 5 date in a scrollable table.
Download, make executable, and move the binary into your PATH. Adjust the URL and filename to match the release and platform you chose:
# Example for Linux AMD64 (adjust version and filename as needed)
wget https://github.com/argoproj/argo-rollouts/releases/download/v1.8.3/kubectl-argo-rollouts-linux-amd64

# make it executable
chmod +x kubectl-argo-rollouts-linux-amd64

# move it into your PATH and give the canonical name
sudo mv kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts
Verify the plugin is installed and check its version:
kubectl argo rollouts version
Example output:
kubectl-argo-rollouts: v1.8.3+49fa151
    BuildDate: 2025-06-04T22:15:54Z
    GitCommit: 49fa1516cf71672b69e265267da4e1d16e1fe114
    GitTreeState: clean
    GoVersion: go1.23.9
    Compiler: gc
    Platform: linux/amd64
After installing the binary as /usr/local/bin/kubectl-argo-rollouts the plugin is available as the kubectl subcommand kubectl argo rollouts.

Launch the Rollouts dashboard

Start the local dashboard proxy to serve the UI on http://localhost:3100/rollouts by default:
kubectl argo rollouts dashboard -n argo-rollouts
  • The command opens a local proxy and hosts the UI at http://localhost:3100/rollouts.
  • If you don’t pass -n, the plugin will target the default namespace or the context’s current namespace; use -n <namespace> to specify another one.
  • If you prefer a different local port, check plugin help for available flags.
Open http://localhost:3100/rollouts in your browser. If you haven’t created any Rollout resources, the UI will indicate no Rollouts in the selected namespace.

Next steps

  • Create a Rollout manifest (canary or blue-green) and apply it to experiment with traffic shifting and automated analysis.
  • Integrate metrics providers (Prometheus) and AnalysisTemplates for automated, metric-driven promotion or rollback.
  • See the Argo Rollouts docs for examples and advanced configuration: https://argoproj.github.io/argo-rollouts/

Watch Video