> ## Documentation Index
> Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Demo Argo Rollouts Installation and UI

> Guide to installing Argo Rollouts in Kubernetes, setting up the kubectl-argo-rollouts plugin, and launching the local Rollouts dashboard

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:

* [Argo Rollouts documentation](https://argoproj.github.io/argo-rollouts/)
* [Argo Rollouts Releases on GitHub](https://github.com/argoproj/argo-rollouts/releases)

## 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:

```bash theme={null}
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 Type                  | Purpose                                                                           |
| ------------------------------ | --------------------------------------------------------------------------------- |
| CustomResourceDefinition (CRD) | rollouts.argoproj.io, experiments.argoproj.io, etc. — defines Rollout API objects |
| ServiceAccount / RBAC          | Controller permissions                                                            |
| Deployment                     | argo-rollouts controller Deployment                                               |
| Service                        | ClusterIP service for controller metrics                                          |
| ConfigMap / Secret             | Controller configuration and notifications                                        |

Example output you may see after applying the manifest:

```bash theme={null}
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:

```bash theme={null}
kubectl -n argo-rollouts get all
```

Example output:

```bash theme={null}
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
```

<Callout icon="lightbulb" color="#1CB2FE">
  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.
</Callout>

## 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.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/v7HW2PPNQOGxY8Ve/images/Prep-Course-Certified-Argo-Project-Associate-CAPA/Argo-Rollouts/Demo-Argo-Rollouts-Installation-and-UI/argo-rollouts-github-release-assets-sha256.jpg?fit=max&auto=format&n=v7HW2PPNQOGxY8Ve&q=85&s=e95ba1fe77eccf85f95b2a7b50993390" alt="A dark-themed GitHub release page showing the &#x22;Assets&#x22; 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." width="1920" height="1080" data-path="images/Prep-Course-Certified-Argo-Project-Associate-CAPA/Argo-Rollouts/Demo-Argo-Rollouts-Installation-and-UI/argo-rollouts-github-release-assets-sha256.jpg" />
</Frame>

Download, make executable, and move the binary into your PATH. Adjust the URL and filename to match the release and platform you chose:

```bash theme={null}
# 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:

```bash theme={null}
kubectl argo rollouts version
```

Example output:

```bash theme={null}
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
```

<Callout icon="lightbulb" color="#1CB2FE">
  After installing the binary as /usr/local/bin/kubectl-argo-rollouts the plugin is available as the kubectl subcommand `kubectl argo rollouts`.
</Callout>

## Launch the Rollouts dashboard

Start the local dashboard proxy to serve the UI on [http://localhost:3100/rollouts](http://localhost:3100/rollouts) by default:

```bash theme={null}
kubectl argo rollouts dashboard -n argo-rollouts
```

* The command opens a local proxy and hosts the UI at [http://localhost:3100/rollouts](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](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/](https://argoproj.github.io/argo-rollouts/)

<CardGroup>
  <Card title="Watch Video" icon="video" cta="Learn more" href="https://learn.kodekloud.com/user/courses/certified-argo-project-associate-capa/module/959dfde0-9415-4fc2-bcad-fe9e4bf84cc7/lesson/8085d4fd-d85d-45dd-99a7-eba5ced8e438" />
</CardGroup>
