Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
238 changes: 238 additions & 0 deletions docs/operator-manual/applicationset/Web-UI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
# ApplicationSet Web UI

> [!WARNING]
> **Alpha Feature (Since v3.5.0)**
>
> This is an [alpha](https://github.com/argoproj/argoproj/blob/main/community/feature-status.md#alpha) feature.
> The look, behavior, and APIs it consumes may change in future releases or be removed in backwards-incompatible ways.

Argo CD introduces a first-class Web UI for ApplicationSets. Until now,
ApplicationSets were managed primarily through `kubectl`, the
`argocd appset` CLI, or by browsing the generated child Applications. The
new UI surfaces ApplicationSets directly, with a list view, a resource
tree, a slide-out details panel, and a preview tab that lets you see what
Applications an ApplicationSet will generate.

## ApplicationSets list page

The new `/applicationsets` page is the entry point. It lives next to the
existing Applications list and shares the same filtering, search, and
view-preferences, so it should feel familiar.

You can reach it from the top-level navigation, or directly at
`https://<your-argocd>/applicationsets`.

![ApplicationSets list page](../../assets/applicationset/Web-UI/applicationsets-list.png)

What's on the page:

- **Search bar** — fuzzy-matches against name and namespace. Use the
keyboard shortcut `/` to focus it.
- **Filters sidebar** — filter by project, namespace, labels, and
ApplicationSet health status (`Healthy`, `Progressing`, `Degraded`,
`Unknown`). Filters are reflected in the URL so they can be shared or
bookmarked.
- **Health summary** — a pie chart at the top summarizes the health of
ApplicationSets matching the current filter.
- **Tile / table views** — toggle between a tile grid and a table view.
The table view shows name, namespace, project, health, conditions, and
the number of generated Applications.

> [!TIP]
> The page shows ApplicationSets across every namespace your user has
> access to. RBAC is enforced exactly as on the CLI — if you can `get` an
> ApplicationSet from `argocd appset get`, you can see it here.

## ApplicationSet resource tree

Selecting an ApplicationSet from the list opens its details page. The
center of the page is a **resource tree** that visualizes the
ApplicationSet and the child Applications it generates.

![ApplicationSet resource tree](../../assets/applicationset/Web-UI/appset-resource-tree.png)

Things to know:

- The root node is the ApplicationSet itself. Each downstream node is a
child Application generated by the ApplicationSet.
- Health and sync status icons render on each node the same way they do
on the Application resource tree.
- Clicking a child Application navigates to that Application's own
details page.

## Status bar: health, conditions, age

The top of the ApplicationSet details page shows a status bar summarizing
the ApplicationSet at a glance: its **health**, the count of
**conditions** by severity, and **last updated**.

![ApplicationSet status bar](../../assets/applicationset/Web-UI/appset-status-bar.png)

### How health is derived

The ApplicationSet controller now writes a `status.health` field on the
ApplicationSet CR (with `status` and `message`), computed from the
ApplicationSet's `status.conditions`. The UI reads this field directly.

The rules the controller applies, in order:

1. If `status.conditions` is empty → **Unknown**
(`"No status conditions found for ApplicationSet"`).
2. If an `ErrorOccurred` condition has `status: True`
→ **Degraded**, with the condition's message.
3. Otherwise, if a `RolloutProgressing` condition has `status: True`
→ **Progressing**, with the condition's message.
4. Otherwise, if a `ResourcesUpToDate` condition has `status: True`
→ **Healthy**, with the condition's message.
5. Otherwise → **Unknown** (`"Waiting for health status to be determined"`).

### How conditions are shown

![ApplicationSet conditions modal](../../assets/applicationset/Web-UI/appset-conditions.png)

The conditions modal shows each condition's **type**, **status**, the
**message** reported by the controller and **when** it was last reported.
This is usually the first place to look when an ApplicationSet shows up
as **Degraded** or **Unknown**.

## Slide-out panel: Summary, Manifest, Events, Preview

Clicking the ApplicationSet node (or any node on the tree) opens a
slide-out panel from the right edge of the screen — the same pattern used
elsewhere in Argo CD for resource details.

### Summary

Shows metadata at a glance: name, namespace, creation timestamp,
health, conditions, labels, annotations, and sync policy.

![Summary tab](../../assets/applicationset/Web-UI/summary-tab.png)

If the ApplicationSet has conditions, the **CONDITIONS** row links to a
detailed conditions view so you can see warnings or errors raised by the
controller (for example, a generator that failed to evaluate).

### Manifest

A read-only YAML view of the ApplicationSet's `spec`.

### Events

Kubernetes events for the ApplicationSet — useful when investigating why
a particular generator parameter set produced (or failed to produce) an
Application.

### Preview

The Preview tab is the most significant new capability. It is covered in
detail in the next section.

## Preview: see what your ApplicationSet will generate

The **PREVIEW** tab mirrors the `argocd appset generate` CLI command in
the browser. It shows you the Applications an ApplicationSet would
generate right now. When you edit the spec a diff between the
proposed output and what is currently live.

![Preview tab demo](../../assets/applicationset/Web-UI/preview-demo.gif)

### How it works

The Preview tab calls the existing
`POST /api/v1/applicationsets/generate` endpoint, which the controller
uses to render template output without persisting anything to the
cluster.

The result is rendered in three sub-tabs:

| Tab | Shows |
|----------------|--------------------------------------------------------------------------------|
| `DIFF` | The default tab. A unified diff of each Application that would change. |
| `LIVE APPS` | The Applications currently generated by the ApplicationSet on the cluster. |
| `DESIRED APPS` | The Applications that *would* be generated if the proposed spec were applied. |

Each entry in `DIFF` represents one child Application and is categorized
as added (only in `DESIRED APPS`), removed (only in `LIVE APPS`), or
modified (present in both with field-level differences).

### Editing the spec

Click **Edit** on the ApplicationSet manifest card to make the YAML
editable. Hit **Preview** again and the diff regenerates against your
edits. Click **Cancel** to discard local edits.

> [!IMPORTANT]
> Edits in the Preview tab are **never saved**. The tab is a sandbox; to
> persist a change you must update the ApplicationSet through your normal
> GitOps flow (or via `kubectl apply` / `argocd appset create`).

### Permissions

Generating a preview requires `applicationsets, create` permission on
the project of the ApplicationSet's template. If you don't have it, the
Preview tab returns a clear permission-denied message instead of a diff.

## Changes to Applications generated by an ApplicationSet

For Applications that are generated by an ApplicationSet (i.e. that have
an `ApplicationSet` `ownerReference`), the Application UI now shows two
new things on the resource tree.

### Owner badge

A small badge labeled with the parent ApplicationSet's name
appears on the Application node. Clicking it jumps directly to the
ApplicationSet details page.

![ApplicationSet owner badge on an Application](../../assets/applicationset/Web-UI/appset-owner-badge.png)

### Show / hide parent ApplicationSet

In the Application's view preferences, a new toggle —
**Show parent ApplicationSet** — adds the parent ApplicationSet as a
synthetic root node on the resource tree, with an edge to the
Application. This is useful when you want a single view that includes
both the ApplicationSet and the Application it produced.

![Show parent ApplicationSet toggle](../../assets/applicationset/Web-UI/show-parent-toggle.png)

When the toggle is on, the badge is hidden (since the parent is already
rendered explicitly).

### Per-Application preview from the app-of-appset pattern

When you use the
[app-of-ApplicationSets pattern](Use-Cases.md) — an Application whose
resources include an ApplicationSet — the ApplicationSet node on the
parent Application's tree now includes a preview feature in its slide-out
panel. Selecting it opens a panel with a **Preview** experience similar
to the one described above, scoped to the changes that would land when
you sync the parent Application.

![App-of-AppSet preview](../../assets/applicationset/Web-UI/app-of-appset-preview.png)

There are two important differences from the standalone Preview tab:

- **Desired state comes from Git, not an editor.** The proposed
ApplicationSet is the target manifest tracked by the parent
Application (i.e. what's in Git). There is no YAML editor in this panel.
- **Only available when the ApplicationSet is OutOfSync.** If the parent
Application's ApplicationSet resource is already in sync, there is no
diff to show — the panel renders a short status message instead.

This is the bridge between "I have a pending sync on my parent
Application" and "show me which child Applications would change as a
result."

## Known limitations

- The Preview tab compares whole Application manifests. It does **not**
recurse into the Kubernetes resources inside each child Application —
for that, sync the child Application and use the existing Application
diff view.
- Generators that depend on external systems (Git, SCM Provider, Pull
Request, Cluster) are re-evaluated each time you click **Preview**. If
the upstream system is slow or flaky, the preview will reflect that.
- The UI honors ApplicationSet RBAC. Users who cannot `create`
ApplicationSets in the target project will not be able to render a
preview, even if they can `get` the ApplicationSet.
2 changes: 2 additions & 0 deletions docs/operator-manual/feature-maturity.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ to indicate their stability and maturity. These are the statuses of non-stable f
| [Cluster Sharding: consistent-hashing][9] | v2.12.0 | Alpha |
| [Service Account Impersonation][10] | v2.13.0 | Beta |
| [Source Hydrator][11] | v2.14.0 | Alpha |
| [ApplicationSet Web UI][12] | v3.5.0 | Alpha |

## Unstable Configurations

Expand Down Expand Up @@ -73,3 +74,4 @@ to indicate their stability and maturity. These are the statuses of non-stable f
[9]: ./high_availability.md#argocd-application-controller
[10]: app-sync-using-impersonation.md
[11]: ../user-guide/source-hydrator.md
[12]: applicationset/Web-UI.md
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ nav:
- Git File Generator Globbing: operator-manual/applicationset/Generators-Git-File-Globbing.md
- ApplicationSet Specification Reference: operator-manual/applicationset/applicationset-specification.md
- ApplicationSet in any namespace: operator-manual/applicationset/Appset-Any-Namespace.md
- ApplicationSet Web UI: operator-manual/applicationset/Web-UI.md
- Server Configuration Parameters:
- operator-manual/server-commands/argocd-server.md
- operator-manual/server-commands/argocd-application-controller.md
Expand Down
Loading