diff --git a/README.md b/README.md index 06608ed7b..51e4ee6a4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # OpenShift Console GitOps Plugin Based on [Openshift Console dynamic plugin](https://github.com/openshift/console/tree/master/frontend/packages/console-dynamic-plugin-sdk), this plugin implement the console elements for GitOps. +## Documentation + +[docs/](docs/) provide description of what the UI does. Preview with `pnpm serve-docs` (http://localhost:3000). ## Building ### Option 1: Without running Console locally diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..f7fb39ca2 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,63 @@ +# Working with the GitOps Console plugin + +The GitOps Console plugin extends the OpenShift Container Platform web console by adding GitOps resources. The plugin is available as part of the Red Hat OpenShift GitOps Operator and provides a console UI for managing Argo CD and Argo Rollouts custom resources. + +After you install the Red Hat OpenShift GitOps Operator, the OpenShift web console displays a **GitOps** navigation tab in the **Administrator** perspective. The plugin is enabled by default. The GitOps navigation tab replaces the previous **Environments** tab and related pages in the **Developer** perspective. + +The GitOps navigation tab provides access to the following Argo CD and Argo Rollouts resources: + +* Applications +* ApplicationSets +* AppProjects +* ImageUpdaters +* Rollouts + +## Prerequisites + +* You have access to OpenShift Container Platform 4.19 or later. +* You have installed the Red Hat OpenShift GitOps Operator. + +## GitOps resources in the web console + +Each GitOps resource provides list and details pages that follow the standard OpenShift web console experience. + +You can use these pages to: + +* View GitOps resources in a selected namespace +* Create resources by using YAML templates +* Edit labels and annotations +* Filter resources by status, where applicable +* Paginate large filtered lists and details tables (10, 20, 50, or 100 items per page; default 50) +* Access related resources and events + +The GitOps Console plugin integrates with the console navigation, allowing you to navigate between related resources and access contextual actions for each resource type. + +### Search and YAML templates + +The GitOps Console plugin provides search and template capabilities: + +* **Search integration**: Search pages are enabled for Applications and ApplicationSets, allowing you to find instances from global search like other first-class resources. +* **YAML templates**: Pre-configured YAML templates are registered for Applications, ApplicationSets, AppProjects, ImageUpdaters, and Rollouts. These templates provide starter configurations with placeholders to speed up resource creation from the console. + +## Additional resources + +* [Enable the GitOps Console plugin](admin-enable-plugin.md) +* [Applications in the GitOps Console](applications.md) +* [ApplicationSets in the GitOps Console](applicationsets.md) +* [AppProjects in the GitOps Console](appprojects-rbac.md) +* [ImageUpdaters in the GitOps Console](image-updaters.md) +* [Rollouts in the GitOps Console](rollouts.md) +* [Filter, search, and paginate resources](filter-resources.md) +* [Graphs and topology views](topology.md) +* [Getting started](getting-started.md) +* [Troubleshooting](troubleshooting.md) + +## Preview this manual + +From the `gitops-console-plugin` repository root: + +```bash +pnpm serve-docs +``` + +Open [http://localhost:3000](http://localhost:3000). diff --git a/docs/_sidebar.md b/docs/_sidebar.md new file mode 100644 index 000000000..06da0a124 --- /dev/null +++ b/docs/_sidebar.md @@ -0,0 +1,11 @@ +- [Working with the GitOps Console plugin](/) +- [Getting started](getting-started.md) +- [Enable the GitOps Console plugin](admin-enable-plugin.md) +- [Applications in the GitOps Console](applications.md) +- [ApplicationSets in the GitOps Console](applicationsets.md) +- [AppProjects in the GitOps Console](appprojects-rbac.md) +- [ImageUpdaters in the GitOps Console](image-updaters.md) +- [Rollouts in the GitOps Console](rollouts.md) +- [Graphs and topology views](topology.md) +- [Filter, search, and paginate resources](filter-resources.md) +- [Troubleshooting](troubleshooting.md) diff --git a/docs/admin-enable-plugin.md b/docs/admin-enable-plugin.md new file mode 100644 index 000000000..cc7949797 --- /dev/null +++ b/docs/admin-enable-plugin.md @@ -0,0 +1,98 @@ +# Enable the GitOps Console plugin + +The GitOps Console plugin is enabled by default after you install the Red Hat OpenShift GitOps Operator. If you disable the plugin, you can enable it manually. + +## Prerequisites + +* You have installed the Red Hat OpenShift GitOps Operator. +* You have access to the OpenShift web console with cluster administrator permissions. + +## Procedure + +1. In the OpenShift web console, navigate to **Home** → **Overview**. + +  + +2. In the **Status** panel, click **Dynamic Plugins**. + +  + + A popup appears with a link to view all dynamic plugins. + +3. Click **View all**. + +4. Under the **Console plugins** tab, find **gitops-plugin**. + +5. If the plugin is disabled, click **Enable**. + +  + + The browser might require a refresh. After refreshing, the page indicates that the plugin is **Enabled**. + +## Verification + +* Navigate to **GitOps** in the navigation menu and verify that you can access Applications, ApplicationSets, AppProjects, ImageUpdaters, and Rollouts pages. + +  + +## Disable the plugin + +Use the same **Console plugins** list and disable **gitops-plugin**. + +### Disable or enable with the CLI + +The console loads plugins listed in `spec.plugins` on `console.operator.openshift.io/cluster`. + +1. Check which plugins are enabled: + + ```bash + oc get console.operator.openshift.io cluster -o jsonpath='{.spec.plugins}{"\n"}' + ``` + +2. To enable **gitops-plugin**: + + * If step 1 printed a JSON array (for example `["monitoring-plugin"]`), append **gitops-plugin**: + + ```bash + PLUGIN_PATCH='[{"op":"add","path":"/spec/plugins/-","value":"gitops-plugin"}]' + oc patch console.operator.openshift.io cluster --type=json -p "${PLUGIN_PATCH}" + ``` + + * If step 1 printed nothing (or only `null`), `spec.plugins` is missing. Create the list: + + ```bash + PLUGIN_PATCH='[{"op":"add","path":"/spec/plugins","value":["gitops-plugin"]}]' + oc patch console.operator.openshift.io cluster --type=json -p "${PLUGIN_PATCH}" + ``` + + Skip this step if `gitops-plugin` is already in the list from the previous command. + +3. To disable **gitops-plugin**, edit the Console operator and remove `gitops-plugin` from `spec.plugins`: + + ```bash + oc edit console.operator.openshift.io cluster + ``` + + Example: + + ```yaml + spec: + plugins: + - monitoring-plugin + # remove: - gitops-plugin + ``` + +4. Refresh the browser after the change. The **GitOps** entry disappears from the navigation when the plugin is disabled. + +## Multi-instance configuration + +The GitOps Console plugin is cluster-scoped. A single plugin deployment serves all Argo CD instances on the cluster; you do not install a separate plugin for each instance. + +When multiple Argo CD instances exist in different namespaces, their resources appear together in the GitOps pages. Use the namespace selector to limit the view to one namespace or to browse across namespaces. + +The **View in Argo CD** action opens the selected application in the Argo CD user interface. This action requires a Route to the Argo CD server. + +## Related information + +* [Getting started](getting-started.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/applications.md b/docs/applications.md new file mode 100644 index 000000000..d3d8934f4 --- /dev/null +++ b/docs/applications.md @@ -0,0 +1,236 @@ +# Applications in the GitOps Console + +The GitOps Console plugin provides list and details pages for Argo CD Applications in the OpenShift web console. You can search and filter Applications, create them from a YAML template, review health and sync status, inspect sources, managed resources, sync history, and events. + +> **IMPORTANT** +> +> The plugin displays the health status stored on the Application custom resource (CR). If health is missing or incorrect, set `controller.resource.health.persist: "true"` in the `argocd-cmd-params-cm` ConfigMap. For more information, see [Troubleshooting](troubleshooting.md). + +## Prerequisites + +* You have access to the OpenShift web console. +* The GitOps Console plugin is enabled. See [Enable the GitOps Console plugin](admin-enable-plugin.md). +* You can list Applications in the selected namespace (or across namespaces, depending on your permissions). + +## Applications list page + +1. In the **Administrator** perspective, navigate to **GitOps** → **Applications**. + +2. Optional: Use the **Project** dropdown to limit the list to one project (namespace), or choose all projects to view Applications across namespaces. + +  + +### Filter and search + +Use the list page controls to narrow results: + +* **Filter**: Use **Filter** to narrow by: + * **Sync Status**: Synced, OutOfSync, Unknown + * **Health Status**: Healthy, Progressing, Suspended, Degraded, Missing, Unknown +* **Search**: Use the search field to match by **Name** or **Label**. Choose the mode from the dropdown next to the field (for example, **Name** with **Search by name...**). + +You can combine search and filters. Clear individual chips or use **Clear all filters**. Changing filters, search, or project returns pagination to page 1. See [Filter, search, and paginate resources](filter-resources.md). + +### Table columns + +The Applications table includes: + +| Column | Description | +| --- | --- | +| **Name** | Application name, with a link to the details page. | +| **Namespace** | Namespace of the Application. | +| **Sync Status** | Current sync state, with quiet operation state when a sync is in progress or recently finished. | +| **Health Status** | Overall Application health. | +| **Revision** | Target revision (or **HEAD**). Multi-source Applications may show additional revision count. | +| **Labels** | Application labels. | +| **App Project** | AppProject that this Application belongs to. | +| **Actions** | Row kebab menu. | + +### Pagination + +Browse results in pages of **10**, **20**, **50**, or **100** items (default **50**). Search and filters change which rows are included. Page and page size are stored in the URL. See [Filter, search, and paginate resources](filter-resources.md). + +### Create an Application + +1. On the Applications list page, click **Create Application**. + +2. The console opens the YAML editor with a starter Application template. The template includes placeholders for name, destination, project, repository URL, path, target revision, and sync policy (`automated`, `prune`, `selfHeal`). + + The editor includes a **Schema** side panel that describes Application fields, and a **Download** control to save the YAML. + +3. Edit the YAML for your repository and cluster destination, then create the resource. + +Application creation uses YAML only. There is no guided form. + +### Row actions + +From the row kebab, you can: + +* **Edit labels** +* **Edit annotations** +* **Edit Application** (opens the YAML editor) +* **Delete Application** + +> **NOTE** +> +> The Application kebab does not include **Sync** or **Rollback**. Sync policy toggles on the Details tab (**Automated**, **Prune**, **Self Heal**) and YAML changes only configure sync policy or the manifest; they do not run a one-time sync. For a manual sync or rollback, use the Argo CD UI or the `argocd` CLI. The History tab lists past revisions for reference; it does not roll back. + +### Favorites + +You can mark Applications as favorites by using the console favorites control on the list and details pages. Favorites follow your console user settings. + +## Application details page + +1. From the Applications list, click an Application name. + +2. The details page breadcrumb shows **Applications** → **Application details**. + +3. Use the page header **Actions** menu for the same edit, delete, and (when available) **View in Argo CD** actions as the list. **View in Argo CD** requires a Route to the Argo CD server. + +The details page includes the following tabs. + +### Details tab + +The **Details** tab summarizes identity, status, and sync policy. + + + +**Application summary (left)** + +* **Name**, with an optional **Argo CD** link when a Route is available +* **Namespace** +* **Labels**, with **Edit** +* **Annotations** +* **Created at** +* **Owner** + +**Application status and destination (right)** + +* **Health Status**: Overall health of the Application +* **Current Sync Status**: Sync state and revision information +* **Last Sync Status**: Last operation state, with Application conditions when present (errors, warnings, or notices) +* **Target Revision**: Desired revision, or **HEAD** +* **Project**: Link to the AppProject +* **Destination**: Destination cluster and namespace +* **Sync Policy** toggles (when you have update permission): + * **Automated** + * **Prune** (requires automated sync) + * **Self Heal** (requires automated sync) + +Without update permission, the sync policy toggles are disabled. + +### YAML tab + +The **YAML** tab provides a live editor for the Application manifest. Use it to inspect or update the full resource definition. + +The editor includes a **Schema** side panel that describes Application fields, and a **Download** control to save the YAML. + +### Sources tab + +The **Sources** tab lists repository sources for the Application (single-source and multi-source). + + + +Section title: **Application sources**. + +The sources table includes: + +| Column | Description | +| --- | --- | +| **Type** | Source type such as **Git**, **Helm**, or **OCI**. | +| **Repository** | Repository URL. | +| **Target Revision** | Desired revision for that source. | +| **Path / Chart** | Git path or Helm chart (root path can appear as **(root)**). | +| **Ref** | Source reference name when used in multi-source Applications. | + +The table supports pagination. An Argo CD link on the tab can open source parameters in the Argo CD UI when a Route is available. + +### Resources tab + +The **Resources** tab shows the Application’s immediate managed resources in list or graph form. + +Section title: **Application resources**. + +The graph and table show health and sync status for the Application’s **immediate** resources only, not the full Argo CD resource tree. Use the **Argo CD** link on the tab to open the complete hierarchy in the Argo CD UI. + +#### List view and graph view + +* Switch between **List view** and **Graph view**. The console remembers your preference. +* Filters apply to both views: + * **Sync Status** + * **Health Status** + * **Kind** + * Search by resource name +* In list view, the table columns include **Name**, **Namespace**, **Sync Wave**, **Sync Status**, **Health Status**, and row actions. + +  + +* Row actions can include **View in Argo CD** and **Delete**, depending on the resource and your permissions. +* The list supports sorting and pagination. See [Filter, search, and paginate resources](filter-resources.md). + +#### Graph view + +* Pan, zoom, and select nodes. +* Toggle OpenShift shapes and Argo CD shapes. +* Group or ungroup resources of the same kind. +* Context-menu actions on nodes can include viewing details, editing labels and annotations, deleting resources, editing the Application, and opening **View in Argo CD**. + +For more about graph controls, see [Graphs and topology views](topology.md). + +### Sync Status tab + +The **Sync Status** tab shows the latest sync operation and the resources involved in that sync. + +**Sync status** + +* **Operation**, with conditions when present +* **Phase** +* **Message** +* **Initiated By** (for example, a user name or automated sync policy) +* **Started At**, **Duration**, and **Finished At** + +**Resources Last Synced** + +A paginated table of resources from the last sync operation: + +| Column | Description | +| --- | --- | +| **Name** | Resource name. | +| **Namespace** | Resource namespace. | +| **Status** | Sync result for that resource. | +| **Hook** | Hook information when applicable. | +| **Message** | Status message. | + +Row actions follow the same resource actions pattern as the Resources tab. + +### History tab + +The **History** tab shows Application sync and deployment history. + +Section title: **Sync history**. + +The history table includes: + +| Column | Description | +| --- | --- | +| **ID** | History entry identifier. | +| **Deploy Started At** | When the deploy started. | +| **Deployed At** | When the deploy completed. | +| **Initiated By** | User or **Automated**. | +| **Revision(s) and Source Repo URL(s)** | Revision and repository information for the entry. | + +Entries display newest first by default. Column sorting keeps the direction you select. The table supports pagination. + +This tab is informational. It does not provide an in-console **Rollback** action. Use the Argo CD UI or CLI to roll back. + +### Events tab + +The **Events** tab shows Kubernetes events for the Application object, using the standard console event stream for that resource. + +## Related information + +* [Filter, search, and paginate resources](filter-resources.md) +* [Graphs and topology views](topology.md) +* [ApplicationSets in the GitOps Console](applicationsets.md) +* [AppProjects in the GitOps Console](appprojects-rbac.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/applicationsets.md b/docs/applicationsets.md new file mode 100644 index 000000000..12b4fae11 --- /dev/null +++ b/docs/applicationsets.md @@ -0,0 +1,134 @@ +# ApplicationSets in the GitOps Console + +The GitOps Console plugin shows list and details pages for Argo CD ApplicationSets in the OpenShift web console. You can search and filter ApplicationSets, create them from a YAML template, review generated Applications, inspect generators, and use the graphical view for owner-reference and progressive sync layouts. + +## Prerequisites + +* You have access to the OpenShift web console. +* The GitOps Console plugin is enabled. See [Enable the GitOps Console plugin](admin-enable-plugin.md). +* You can list ApplicationSets in the selected namespace (or across namespaces, depending on your permissions). + +## List page + +1. In the **Administrator** perspective, navigate to **GitOps** → **ApplicationSets**. + +2. Optional: Use the **Project** dropdown to limit the list to one project (namespace), or choose all projects. + +The ApplicationSets list page includes: + +* **Filtering**: Filter ApplicationSets by: + * **Health Status**: Healthy, Error, Unknown +* **Search**: Use the search field to match by **Name** or **Label**. Choose the mode from the dropdown next to the field. +* **Create action**: Click **Create ApplicationSet** to open the YAML editor with a default ApplicationSet template +* **Table columns**: **Name**, **Namespace**, **Health Status**, **Generated Apps**, **Generators**, **Labels**, **Created At**, and row actions +* **Pagination**: Browse results in pages of 10, 20, 50, or 100 items (default 50). Search and filters change which rows are included. See [Filter, search, and paginate resources](filter-resources.md). + +> **NOTE** +> +> Creation uses the YAML editor. The console does not provide an ApplicationSet form wizard. + +### Row actions + +From the row kebab, you can: + +* **Edit labels** +* **Edit annotations** +* **Edit ApplicationSet** (opens the YAML editor) +* **Delete ApplicationSet** + +## ApplicationSet details page + +1. From the ApplicationSets list, click an ApplicationSet name. + +2. The details page breadcrumb shows **ApplicationSets** → **ApplicationSet details**. + +3. Use the page header **Actions** menu for the same edit and delete actions as the list. + +The details page includes the following tabs. + +### Details tab + +The **Details** tab summarizes identity, status, and related counts. + +Section title: **ApplicationSet details**. + +**Summary (left)** + +* **Name** +* **Namespace** +* **Labels**, with **Edit** +* **Annotations** +* **Created at** +* **Owner** + +**Status and configuration (right)** + +* **Status**: Overall health of the ApplicationSet (**Healthy**, **Error**, or **Unknown**) +* **Generated Apps**: Count of Applications owned by this ApplicationSet, with a link to the **Applications** tab +* **Generators**: Count of configured generators, with a link to the **Generators** tab +* **App Project**: AppProject that generated Applications belong to +* **Repository**: Template source repository URL when the ApplicationSet template uses a single `source` (multi-source templates may not show this field) + +**Conditions** + +Below the summary, the **Conditions** section shows ApplicationSet status conditions from the controller. Use this table to diagnose generation failures, progressive sync progress, and whether managed Applications are up to date. + +The conditions table includes: + +| Column | Description | +| --- | --- | +| **Type** | Condition type, such as **ErrorOccurred**, **ParametersGenerated**, **ResourcesUpToDate**, or **RolloutProgressing**. | +| **Status** | **True**, **False**, or **Unknown**. | +| **Updated** | When the condition last changed. | +| **Reason** | Short machine-readable cause. | +| **Message** | Human-readable details. | + +Common conditions: + +* **ErrorOccurred**: Generation or sync errors for the ApplicationSet. +* **ParametersGenerated**: Whether generator parameters were produced successfully. +* **ResourcesUpToDate**: Whether generated Applications match the desired state. +* **RolloutProgressing**: Progressive sync or rollout is still in progress. + +If no conditions are reported, the section shows **No conditions found**. + +### YAML tab + +The **YAML** tab provides a live editor for the ApplicationSet manifest. Use it to inspect or update the full resource definition. + +The editor includes a **Schema** side panel that describes ApplicationSet fields, and a **Download** control to save the YAML. + +### Generators tab + +The **Generators** tab shows the ApplicationSet generator configuration in a structured view. + +Supported generator presentations include **List**, **Cluster**, **git**, **Matrix**, **Merge**, and **Union**. Other generator types use a generic view that shows the configuration as JSON. + +If no generators are configured, the tab shows an empty state. + +### Applications tab + +The **Applications** tab shows Applications generated by this ApplicationSet in list or graph form. + +Section title: **ApplicationSet Applications**. + +* Switch between **List view** and **Graph view**. The console remembers your preference. +* Use **Filter** and **Search** (by name or label) to narrow by health and sync status, or by Application name or label. +* List view uses the same Application table columns, sorting, and pagination as the main Applications list. See [Applications in the GitOps Console](applications.md). +* Graph view shows the ApplicationSet and its generated Applications: + * **Standard layout**: Owner-reference tree when progressive sync is not active + * **Progressive Sync Flow View**: Step groups when progressive sync is enabled and step status is available + +For graph controls and progressive sync requirements, see [Graphs and topology views](topology.md). + +### Events tab + +The **Events** tab shows Kubernetes events for the ApplicationSet object, using the standard console event stream for that resource. + +## Related information + +* [Filter, search, and paginate resources](filter-resources.md) +* [Graphs and topology views](topology.md) +* [Applications in the GitOps Console](applications.md) +* [AppProjects in the GitOps Console](appprojects-rbac.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/appprojects-rbac.md b/docs/appprojects-rbac.md new file mode 100644 index 000000000..ae6194533 --- /dev/null +++ b/docs/appprojects-rbac.md @@ -0,0 +1,149 @@ +# AppProjects in the GitOps Console + +The GitOps Console plugin provides list and details pages for Argo CD AppProjects in the OpenShift web console. You can search and filter AppProjects, create them from a YAML template, review destinations and allow or deny rules, and manage roles and sync windows. + +## Prerequisites + +* You have access to the OpenShift web console. +* The GitOps Console plugin is enabled. See [Enable the GitOps Console plugin](admin-enable-plugin.md). +* You can list AppProjects in the selected namespace (or across namespaces, depending on your permissions). + +## List page + +1. In the **Administrator** perspective, navigate to **GitOps** → **AppProjects**. + +2. Optional: Use the **Project** dropdown to limit the list to one project (namespace), or choose all projects. + +The AppProjects list page includes: + +* **Filtering**: Filter AppProjects by: + * **Description**: Has Description, No Description + * **Applications**: Has Applications, No Applications + * **Project Type**: Default Project, Custom Projects + * **Source Repositories**: Has Source Repos, No Source Repos + * **Destinations**: Has Destinations, No Destinations +* **Search**: Use the search field to match by **Name** or **Label**. Choose the mode from the dropdown next to the field. +* **Create action**: Click **Create AppProject** to open the YAML editor with a default AppProject template +* **Table columns**: **Name**, **Namespace**, **Description**, **Applications**, **Labels**, **Last Updated**, and row actions +* **Pagination**: Browse results in pages of 10, 20, 50, or 100 items (default 50). Search and filters change which rows are included. See [Filter, search, and paginate resources](filter-resources.md). + +> **NOTE** +> +> Creation uses the YAML editor. The console does not provide an AppProject form wizard. + +### Row actions + +From the row kebab, you can: + +* **Edit labels** +* **Edit annotations** +* **Edit AppProject** (opens the YAML editor) +* **Delete** + +## AppProject details page + +1. From the AppProjects list, click an AppProject name. + +2. The details page breadcrumb shows **AppProjects** → **AppProject details**. + +3. Use the page header **Actions** menu for the same edit and delete actions as the list. + +The details page includes the following tabs. + +### Details tab + +The **Details** tab summarizes identity and project configuration counts. + +Section title: **AppProject details**. + +**Summary (left)** + +* **Name** +* **Namespace** +* **Labels**, with **Edit** +* **Annotations** +* **Created at** + +**Status and configuration (right)** + +* **Project Type**: **Default Project** badge when the AppProject name is `default` +* **Description**: Project description when set +* **Applications**: Count of Applications that use this AppProject, with a link to the **Applications** tab +* **Destinations**: Count of allowed destinations, with a link to the **Allow/Deny** tab +* **Source Repositories**: Count of allowed source repositories +* **Source Namespaces**: Count of allowed source namespaces +* **Roles**: Count of Argo CD project roles, with a link to the **Roles** tab +* **Sync Windows**: Count of sync windows, with a link to the **Sync Windows** tab +* **Project-Scoped Clusters Only**: **Enabled** or **Disabled** when the field is set on the AppProject + +### YAML tab + +The **YAML** tab provides a live editor for the AppProject manifest. Use it to inspect or update the full resource definition. + +The editor includes a **Schema** side panel that describes AppProject fields, and a **Download** control to save the YAML. + +### Allow/Deny tab + +The **Allow/Deny** tab shows which sources and destinations this AppProject permits, and which Kubernetes resource kinds are allowed or denied. + +* **Allowed Sources**: **Repositories** and **Namespaces** that applications in this project may use as sources. An **Argo CD** link under this section opens the project summary in the Argo CD UI when a Route to the Argo CD server is available. +* **Allowed Destinations**: A table of allowed or denied destinations with **Type**, **Server**, **Name**, and **Namespace** +* **Resource Allow/Deny Lists**: Four lists of Kubernetes kinds — **Cluster Resource Allow List**, **Cluster Resource Deny List**, **Namespace Resource Allow List**, and **Namespace Resource Deny List**. Each list shows **Kind** and **Group**. + +Source repositories, source namespaces, and destinations use **Allow** or **Deny** badges. Empty lists show a placeholder. + +### Applications tab + +The **Applications** tab shows Applications that belong to this AppProject. + +The table provides the same experience as the main Applications list, including search, filtering, and pagination, scoped to this project. See [Applications in the GitOps Console](applications.md) and [Filter, search, and paginate resources](filter-resources.md). + +### Roles tab + +The **Roles** tab displays Argo CD project roles and bindings in a paginated table. An **Argo CD** link on the tab opens the project roles page in the Argo CD UI when a Route to the Argo CD server is available. + +| Column | Description | +| --- | --- | +| **Name** | Role name. | +| **Description** | Role description. | +| **Groups** | Groups bound to the role. | +| **Policies** | Policy statements for the role. | + +These are Argo CD AppProject roles, not OpenShift RoleBindings. + +### Sync Windows tab + +The **Sync Windows** tab shows configured sync windows for the project in a paginated table. An **Argo CD** link on the tab opens the project sync windows page in the Argo CD UI when a Route to the Argo CD server is available. + +| Column | Description | +| --- | --- | +| **Kind** | Window kind, such as allow or deny. | +| **Schedule** | Cron schedule for the window. | +| **Duration** | How long the window lasts. | +| **Applications** | Applications covered by the window. | +| **Clusters** | Clusters covered by the window. | +| **Namespaces** | Namespaces covered by the window. | +| **Manual Sync** | Whether manual sync is allowed during the window. | +| **Time Zone** | Time zone for the schedule. | + +### Events tab + +The **Events** tab shows Kubernetes events for the AppProject object, using the standard console event stream for that resource. + +## Mapping OpenShift RBAC to AppProject permissions + +OpenShift RBAC and Argo CD AppProject rules both apply; they control different things. + +* **OpenShift RBAC** controls whether you can get, list, create, update, patch, or delete AppProject (and other GitOps) custom resources. The plugin uses Console access reviews: + * **patch** — edit labels and annotations + * **update** — edit AppProject and save YAML + * **delete** — delete the AppProject + * **get** / **list** — open list and details pages +* **AppProject rules** control what Argo CD may sync for Applications in that project (source repositories, destinations, and allow or deny resource lists). A YAML save can succeed while a sync still fails if those rules block the resources. +* The **Roles** tab shows Argo CD AppProject roles and group bindings, not OpenShift RoleBindings. The plugin does not create OpenShift Roles from AppProject roles. Use OpenShift RoleBindings for console and API access to the CRs. + +## Related information + +* [Filter, search, and paginate resources](filter-resources.md) +* [Applications in the GitOps Console](applications.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/assets/pics/application-details-tab.png b/docs/assets/pics/application-details-tab.png new file mode 100644 index 000000000..126d69e30 Binary files /dev/null and b/docs/assets/pics/application-details-tab.png differ diff --git a/docs/assets/pics/application-resources-graph-view.png b/docs/assets/pics/application-resources-graph-view.png new file mode 100644 index 000000000..1c2ca7dac Binary files /dev/null and b/docs/assets/pics/application-resources-graph-view.png differ diff --git a/docs/assets/pics/application-resources-list-view.png b/docs/assets/pics/application-resources-list-view.png new file mode 100644 index 000000000..b34089734 Binary files /dev/null and b/docs/assets/pics/application-resources-list-view.png differ diff --git a/docs/assets/pics/application-sources-tab.png b/docs/assets/pics/application-sources-tab.png new file mode 100644 index 000000000..5bfd59509 Binary files /dev/null and b/docs/assets/pics/application-sources-tab.png differ diff --git a/docs/assets/pics/applications-filter-sync-health.png b/docs/assets/pics/applications-filter-sync-health.png new file mode 100644 index 000000000..65547a513 Binary files /dev/null and b/docs/assets/pics/applications-filter-sync-health.png differ diff --git a/docs/assets/pics/applications-project-selector.png b/docs/assets/pics/applications-project-selector.png new file mode 100644 index 000000000..db75bd828 Binary files /dev/null and b/docs/assets/pics/applications-project-selector.png differ diff --git a/docs/assets/pics/applications-search-name-label.png b/docs/assets/pics/applications-search-name-label.png new file mode 100644 index 000000000..75ee0547a Binary files /dev/null and b/docs/assets/pics/applications-search-name-label.png differ diff --git a/docs/assets/pics/applicationset-progressive-sync-graph.png b/docs/assets/pics/applicationset-progressive-sync-graph.png new file mode 100644 index 000000000..d933ba437 Binary files /dev/null and b/docs/assets/pics/applicationset-progressive-sync-graph.png differ diff --git a/docs/assets/pics/applicationset-standard-graph.png b/docs/assets/pics/applicationset-standard-graph.png new file mode 100644 index 000000000..ad2e3b9d5 Binary files /dev/null and b/docs/assets/pics/applicationset-standard-graph.png differ diff --git a/docs/assets/pics/clear-all-filters.png b/docs/assets/pics/clear-all-filters.png new file mode 100644 index 000000000..6ebdb0abf Binary files /dev/null and b/docs/assets/pics/clear-all-filters.png differ diff --git a/docs/assets/pics/enable-console-plugin-enablement.png b/docs/assets/pics/enable-console-plugin-enablement.png new file mode 100644 index 000000000..2a41ff867 Binary files /dev/null and b/docs/assets/pics/enable-console-plugin-enablement.png differ diff --git a/docs/assets/pics/enable-console-plugin-home-overview.png b/docs/assets/pics/enable-console-plugin-home-overview.png new file mode 100644 index 000000000..1c8fa712d Binary files /dev/null and b/docs/assets/pics/enable-console-plugin-home-overview.png differ diff --git a/docs/assets/pics/enable-console-plugin-status-dynamic-plugins.png b/docs/assets/pics/enable-console-plugin-status-dynamic-plugins.png new file mode 100644 index 000000000..79e64a371 Binary files /dev/null and b/docs/assets/pics/enable-console-plugin-status-dynamic-plugins.png differ diff --git a/docs/assets/pics/enable-console-plugin-verification-gitops-nav.png b/docs/assets/pics/enable-console-plugin-verification-gitops-nav.png new file mode 100644 index 000000000..22b9a3329 Binary files /dev/null and b/docs/assets/pics/enable-console-plugin-verification-gitops-nav.png differ diff --git a/docs/assets/pics/imageupdater-conditions.png b/docs/assets/pics/imageupdater-conditions.png new file mode 100644 index 000000000..f860addbc Binary files /dev/null and b/docs/assets/pics/imageupdater-conditions.png differ diff --git a/docs/assets/pics/pagination-page-size.png b/docs/assets/pics/pagination-page-size.png new file mode 100644 index 000000000..bb5743912 Binary files /dev/null and b/docs/assets/pics/pagination-page-size.png differ diff --git a/docs/assets/pics/rollouts-developer-topology.png b/docs/assets/pics/rollouts-developer-topology.png new file mode 100644 index 000000000..8f263e0db Binary files /dev/null and b/docs/assets/pics/rollouts-developer-topology.png differ diff --git a/docs/assets/pics/rollouts-topology-view-control.png b/docs/assets/pics/rollouts-topology-view-control.png new file mode 100644 index 000000000..968d950f3 Binary files /dev/null and b/docs/assets/pics/rollouts-topology-view-control.png differ diff --git a/docs/assets/videos/getting-started-demo.mp4 b/docs/assets/videos/getting-started-demo.mp4 new file mode 100644 index 000000000..5458d67e4 Binary files /dev/null and b/docs/assets/videos/getting-started-demo.mp4 differ diff --git a/docs/filter-resources.md b/docs/filter-resources.md new file mode 100644 index 000000000..2b27ea7cf --- /dev/null +++ b/docs/filter-resources.md @@ -0,0 +1,74 @@ +# Filter, search, and paginate resources + +The GitOps Console plugin provides search, filters, and client-side pagination on resource list pages. Pagination improves usability and browser performance for large lists. Available filters vary by resource type. + +## Prerequisites + +* You have access to the OpenShift web console. +* The GitOps Console plugin is enabled. + +## Search + +1. In the OpenShift web console, navigate to **GitOps** and select a resource type. + +2. On the list page, use the search field to match resources by **Name** or **Label**. + +3. Choose the search mode from the dropdown next to the field (for example, **Name** with **Search by name...**, or **Label**). + +  + +Search is separate from **Filter**. You can use search and filters together. + +## Filtering + +1. In the OpenShift web console, navigate to **GitOps** and select a resource type. + +2. On the list page, click **Filter** to narrow the displayed resources by status or other properties. + + The following filters are available depending on the resource type: + + * **Applications**: Filter by health status (Healthy, Progressing, Suspended, Degraded, Missing, Unknown) and sync status (Synced, OutOfSync, Unknown). + +  + + * **ApplicationSets**: Filter by health status (Healthy, Error, Unknown). + * **AppProjects**: Filter by Description (Has Description, No Description), Applications (Has Applications, No Applications), Project Type (Default Project, Custom Projects), Source Repositories (Has Source Repos, No Source Repos), and Destinations (Has Destinations, No Destinations). + * **ImageUpdaters**: Filter by: + * **Apps**: Has Apps, No Apps + * **Ready**: Ready, Not Ready + * **Rollouts**: Filter by: + * **Rollout Status**: Healthy, Paused, Progressing, Degraded + +3. Optional: Combine multiple filters to narrow the results further. + +4. To clear filters, click the **Clear all filters** link or remove individual filter selections. + +  + +## Pagination + +Pagination keeps large result sets usable and improves browser performance. The console shows only one page of rows at a time so long lists are easier to scan and the browser does not render every row at once. + +Pagination is available on the GitOps list pages (Applications, ApplicationSets, AppProjects, ImageUpdaters, and Rollouts) as soon as the table has rows. + +When you use search or filters, pagination applies only to the matching resources. Changing the search or filters returns you to page 1. + +The same pagination applies to these nested and details tables: + +* The **Applications** tab on an ApplicationSet details page +* The **Applications** tab on an AppProject details page +* Application details: **Resources** (list view), **Sources**, **Sync Status** (resources last synced), and **History** +* AppProject details: **Roles** and **Sync Windows** +* ImageUpdater details: **Recent Updates** +* Rollout details: **Pods** + +### Behavior + +* **Page size**: Choose **10**, **20**, **50**, or **100** items per page. The default is **50**. There is no **All** option. + +  + +* **Controls**: Pagination appears above and below the table when the filtered list contains at least one row. +* **URL state**: The current page and page size are stored in the URL (`page` and `perPage`) so you can refresh or share the view. +* **Reset**: Changing filters, name or label search, or the selected project returns you to page 1. Changing the page size or sorting does not reset the page by itself; if the list shrinks, the page is clamped to the last valid page. +* **Client-side only**: Pagination runs in the browser on the already loaded and filtered list. It does not use Kubernetes API `limit` or `continue` tokens. diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 000000000..86506c8cf --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,54 @@ +# Getting started +Use the OpenShift web console to install GitOps, enable the Console plugin, and open the GitOps pages. + + + + +## Prerequisites + +* You have access to an OpenShift Container Platform 4.19 or later cluster. +* You can log in to the web console with cluster-admin permission to install the Operator and enable the plugin. + +## Install the OpenShift GitOps Operator + +1. In the web console, navigate to **Ecosystem** → **Software Catalog**. + +2. In the **Filter by keyword** box, type **Red Hat OpenShift GitOps**. + +3. Click the **Red Hat OpenShift GitOps** tile, then click **Install**. + +4. Keep the default options unless your cluster requires otherwise, then click **Install**. + +5. Wait until **Ecosystem** → **Installed Operators** shows the Operator as **Succeeded**. + +The software catalog installs the Operator and deploys the Console plugin. You do not download a separate plugin binary. + +## Enable the GitOps Console plugin + +If **GitOps** is already in the navigation, skip this step. Otherwise follow [Enable the GitOps Console plugin](admin-enable-plugin.md). + +## Open the GitOps pages + +1. In the **Administrator** perspective, click **GitOps**. + +2. Verify that you can open the following pages: + + * **Applications** + * **ApplicationSets** + * **AppProjects** + * **ImageUpdaters** + * **Rollouts** + +ImageUpdaters and Rollouts appear when those CRDs are installed on the cluster. + +## Verification + +* After a browser refresh, **GitOps** remains in the navigation. +* You can open each list page and change the namespace. + +## Additional resources + +* [Enable the GitOps Console plugin](admin-enable-plugin.md) +* [Applications in the GitOps Console](applications.md) +* [Filter, search, and paginate resources](filter-resources.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/image-updaters.md b/docs/image-updaters.md new file mode 100644 index 000000000..e1b4e9882 --- /dev/null +++ b/docs/image-updaters.md @@ -0,0 +1,109 @@ +# ImageUpdaters in the GitOps Console + +The GitOps Console plugin provides list and details pages for Argo CD Image Updater custom resources in the OpenShift web console. You can search and filter ImageUpdaters, create them from a YAML template, and review matched applications, managed images, and recent update activity. + +The **ImageUpdaters** page is available when the ImageUpdater custom resource definition is installed on the cluster. + +## Prerequisites + +* You have access to the OpenShift web console. +* The GitOps Console plugin is enabled. See [Enable the GitOps Console plugin](admin-enable-plugin.md). +* The ImageUpdater CRD is installed on the cluster. +* You can list ImageUpdaters in the selected namespace (or across namespaces, depending on your permissions). + +## List page + +1. In the **Administrator** perspective, navigate to **GitOps** → **ImageUpdaters**. + +2. Optional: Use the **Project** dropdown to limit the list to one project (namespace), or choose all projects. + +The ImageUpdaters list page includes: + +* **Filtering**: Filter ImageUpdaters by: + * **Apps**: Has Apps, No Apps + * **Ready**: Ready, Not Ready +* **Search**: Use the search field to match by **Name** or **Label**. Choose the mode from the dropdown next to the field. +* **Create action**: Click **Create ImageUpdater** to open the YAML editor with a default ImageUpdater template +* **Table columns**: **Name**, **Namespace**, **Apps**, **Images**, **Last Checked**, **Ready**, **Labels**, and row actions +* **Pagination**: Browse results in pages of 10, 20, 50, or 100 items (default 50). Search and filters change which rows are included. See [Filter, search, and paginate resources](filter-resources.md). + +> **NOTE** +> +> Creation uses the YAML editor. The console does not provide an ImageUpdater form wizard. + +### Row actions + +From the row kebab, you can: + +* **Edit labels** +* **Edit annotations** +* **Edit ImageUpdater** (opens the YAML editor) +* **Delete ImageUpdater** + +## ImageUpdater details page + +1. From the ImageUpdaters list, click an ImageUpdater name. + +2. The details page breadcrumb shows **ImageUpdaters** → **ImageUpdater details**. + +3. Use the page header **Actions** menu for the same edit and delete actions as the list. + +The details page includes the following tabs. + +### Details tab + +The **Details** tab summarizes identity and ImageUpdater status. + +Section title: **ImageUpdater details**. + +**Summary (left)** + +* **Name** +* **Namespace** +* **Labels**, with **Edit** +* **Annotations** +* **Created at** + +**Status and configuration (right)** + +* **Ready**: Whether the last reconciliation completed without errors (**True** or **False**) +* **Applications Matched**: Number of applications matched by this ImageUpdater +* **Images Managed**: Number of images eligible for update checking +* **Last Checked At**: When the controller last checked for image updates +* **Last Updated At**: When the controller last performed an image update +* **Observed Generation**: Generation of the resource that was last reconciled + +**Conditions** + +When the ImageUpdater reports status conditions, a **Conditions** section appears below the summary. Use this table to diagnose reconciliation problems. Common condition types include **Ready**, **Reconciling**, and **Error**. + + + +### Recent Updates tab + +The **Recent Updates** tab shows image updates from the most recent reconciliation cycle in a paginated, sortable table. + +Section title: **Recent Updates**. + +| Column | Description | +| --- | --- | +| **Alias** | Image alias from the ImageUpdater configuration. | +| **Image** | Container image that was updated. | +| **New Version** | New image version written by the updater. | +| **Apps Updated** | Number of applications updated for this change. | +| **Updated At** | When the update was recorded. | +| **Message** | Status or detail message for the update. | + +If no updates were recorded in the last cycle, the tab shows an empty state. See [Filter, search, and paginate resources](filter-resources.md) and [Troubleshooting](troubleshooting.md). + +### YAML tab + +The **YAML** tab provides a live editor for the ImageUpdater manifest. Use it to inspect or update the full resource definition. + +The editor includes a **Schema** side panel that describes ImageUpdater fields, and a **Download** control to save the YAML. + +## Related information + +* [Filter, search, and paginate resources](filter-resources.md) +* [Applications in the GitOps Console](applications.md) +* [Troubleshooting](troubleshooting.md) diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..ed3cbfe3d --- /dev/null +++ b/docs/index.html @@ -0,0 +1,156 @@ + + +
+ +