GitOps Products

Create Products for Argo CD applications and view across environments

NOTE
This feature is currently in Beta.

Explore the power of GitOps Products for Argo CD applications.

A Product unifies individual Argo CD applications that share a common element between them. Consider your payment applications organized by Environments that correspond to the regions they are deployed in. With Products, Codefresh allows you to group and track them as a cohesive entity as they move through different Environments.

GitOps Products dashboard (expanded view)

GitOps Products dashboard (expanded view)

Read this blog on the world’s first dashboard for GitOps Environments and Products.

What are the benefits of GitOps Products?
  • Group applications
    Group and connect Argo CD applications based on a common element through Products. For example, bring all your billing applications under the Billing Product. Assign your applications to logical Products for a consolidated perspective on these applications.

  • Bridge applications and GitOps Environments
    By creating Products and linking applications to them, the Products dashboard efficiently bridges the gap between applications and their respective Environments. GitOps Products allow you to see how these applications are deployed across the different Environments.

  • Enriched insights
    With GitOps Products, Codefresh brings you critical information beyond sync and Git hash deployment information. The Products dashboard automatically correlates sync information with other important information from the software lifecycle such as the source code commits and the affected services. All stakeholders, including product and project managers and not just developers can instantly see the information they need for all the applications in the different Environments.

How do you view applications by Product?

In a simple two-step process:

  1. Create the Product
    You start by creating a Product, giving it a name that makes sense for your use case.

  2. Connect applications to the Product
    Bring your applications into the picture. Link your applications to the Products you’ve created to create the associations you need.

Codefresh automatically identifies and organizes the applications in the correct Environments.

The diagram illustrates how Argo CD applications connected to a Product are grouped by that Product, and organized by Environment. It also shows applications not assigned to any Product.

Argo CD applications grouped by Products and organized by Environments

Argo CD applications grouped by Products and organized by Environments

Create Products

Create a Product with a unique name and define the annotations by which to connect different Argo CD applications to it.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. Click Add Product.
  3. Define the following:
    1. Name: A unique name for your Product, which is also unique in the cluster.
    2. Connect Applications: The applications to associate with this Product by adding the default or custom annotation to the application manifest.
      • To use the default annotation, copy and paste it into the manifest.
      • To use a custom annotation, click Add custom annotation, and then define the Key-Value for the annotation. Copy and paste it into the manifest.
    3. Tags: Any metadata providing additional context and information about the Product, used for filtering and organization purposes.

Add Product

Add Product
  1. Click Add. The Product is displayed in the Products dashboard.

GitOps Products dashboard

Here’s an example of the Products dashboard.

GitOps Products dashboard (expanded view)

GitOps Products dashboard (expanded view)

The table describes the information displayed in the Products dashboard.

Item Description
Search and Filters Predefined filters that allow you to customize the Products dashboard view by Product Name, Application, or by Environment.
See Search/filter applications in Products.
Default & expanded views
  • Collapsed view: The default view displays the product name alongside the environments with the number of applications in each environment.
  • Expanded view: The expanded view displays the applications organized by their environments, including version information.
    Currently supported for Helm-based applications, the version is the version of the Helm chart identifying the specific release of the application in the different environments. Clicking the version displays additional information and options.
    See Identify application versions in different environments.
Application views Clicking the Product name takes you to the detailed view of its applications with pod, Git, and feature information. See Explore application views for Products.
Actions In both the collapsed and expanded views, mouse over the row with the Product displays possible actions:
  • Edit: Edit the Product's settings. See Edit/delete Product.
  • Manage Applications: Manually assign unassigned applications to environments in the Products dashboard. See Manually assign applications to Products.
  • Delete: Delete Product from the Products dashboard. Deleting a Product removes its name from the Products dashboard, and unassigns the applications manually assigned to it in the Products dashboard. See Edit/delete Product.

Working with Products

Once you create a Product, you can assign applications to the Product, unassign applications from a Product, edit the Product’s settings, or delete the Product.

Manually assign applications to Products

Manually assign an application to a Product directly from the Products dashboard. This is an alternative to assigning applications that are not connected to a Product through annotations in the application’s manifest.

Search for the application by the name of the application, cluster, or namespace mapped for the Product. When assigned to a product, Codefresh identifies and automatically adds it to the column with the correct environment.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. Do one of the following:
    • Click the name of the Product for which to assign applications, and then click Manage Apps on the top right.
    • Mouse over the row with the Product name and click .

Option to assign applications to Product

Option to assign applications to Product
  1. Below the list of Unassigned apps, select the Environment by which to filter unassigned applications, or type a part of the application name in the search field.

Unassigned applications in Product

Unassigned applications in Product
  1. To assign the application, click .
  2. To confirm the assignment, click Save. Codefresh adds the application to the environment defined for it.

Application assigned to Product

Application assigned to Product

Use annotations to connect applications to Products

Connect an application to a Product by adding the default or custom annotation to the application’s manifest. The annotation is defined as part of the Product’s settings when creating Products.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. Mouse over the row with the Product name, and then select Edit .
  3. In the Edit Product form, copy the annotation to add to the application’s manifest and close the form.

Copy annotation for Product

Copy annotation for Product
  1. Click on the Product name to view its applications.
  2. From the context menu of the application to which to add the annotation, select Edit .
  3. In the Configuration tab, switch to YAML format and add the annotation.

Add annotation to application manifest

Add annotation to application manifest
  1. Commit to save the changes.

Unassign an application from a Product

Unassign an application from a Product directly from the Products dashboard. This is a quick option for applications manually assigned to Products from the Products dashboard.

TIP
If you used annotations to connect applications to Products, to unassign the application, remove the annotation from the application manifest.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. Do one of the following:
    • Mouse over the row with the Product from which to unassign the application.
    • Select the Product with the application to unassign and click Manage Apps.
  3. In the card with the application to unassign, click .

Unassign application from Product

Unassign application from Product
  1. To confirm, click Save. The application reappears in the list of Unassigned applications.

Unassigned application in list

Unassigned application in list

Resolve conflicts for application assigned to multiple Products

Resolve conflicts when the same application is assigned to more than one Product. Unassign the application from any one of the Products.

When Codefresh detects an application assigned to two different Products, it alerts you of the same through a popup in the UI. This conflict typically occurs when you manually assign an application to a Product from the Unassigned list, and then add an annotation to the same application’s manifest connecting it to a different Product.

Edit/delete Product

Edit settings for an existing Product, or delete the Product from the Products dashboard.

Edit all settings including the name of the Product.

Delete a Product from the Products dashboard. Deleting a Product unassigns all the applications manually assigned to it in the Products dashboard. For applications connected through annotations in their manifests, the annotations are not deleted.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. From the Products dashboard, select the Product to edit or delete.
  3. From the context menu on the right, select the required option.

Edit/delete Product

Edit/delete Product
  1. Edit settings, or follow the instructions to delete the Product.

Working with applications in a Product

Selecting a Product displays the applications assigned to that Product organized by environments, and provides different options to view and manage them.

The actions to manage applications in a Product are similar to those available in the Environments dashboard.
In addition, the Product-applications view offers a different a set of filters, and the ability to switch between views with different aspects of information.

Search/filter applications in Products

For the selected Product, search for a specific application, or locate the applications of interest through filters.

Product view: Search/filter applications

Product view: Search/filter applications

Search by free-text to locate the applications you need.

Filters
  • Image name: The image created for the application.
  • Committer: The user who committed the change.
  • Jira ticket: The bug or feature request that initiated the change.

Explore application views in Products

Switch between Kubernetes (Pods), version control (Git) and issue-tracking (Features) views of the applications assigned to the selected Product. Identify the technical details on the deployment, the latest commit, and feature details important to the different stakeholders.

Instead of switching between different systems to get answers to common questions that you have as a project or product manager, you can get your answers for all the applications in the Product through the different view modes.

Pods

Displays Deployment, Rollout, and Promotion information for the application:

  • Deployments: Source image, new image and tag, replicas for each deployment
  • Rollouts: Type of rollout, health, promote/pause rollout action
  • Promotion details: Reason, user who committed the change, and the commit hash
  • Cluster and namespace the application is deployed to

Products: Pod view of application with Deployments

Products: Pod view of application with Deployments

Products: Pod view of application with Rollouts

Products: Pod view of application with Rollouts

Git

Displays version control information to track changes, code history, and collaboration, showing the evolution of the application’s codebase. Useful for project managers and developers to trace:

  • Pull request history
  • Committer information
  • Commit message
  • Promotion information
  • Cluster and namespace the application is deployed to

Products: Git view of application

Products: Git view of application

Features

Displays issue-tracking information that correlates software features with their deployment, showing which features are included in a release. Useful for project/product managers to identify which feature is in production and when it was released into production.

  • Bug/feature request and description
  • User to whom the bug/feature request is assigned
  • Status of the bug/feature request
  • Promotion information
  • Cluster and namespace the application is deployed to

Products: Features view of application

Products: Features view of application

Identify application versions in different Environments

Identify the version of the application deployed in different Environments to track the progress of the applications, understand the changes made, and ensure that customers are using the latest or most appropriate release.

Codefresh does more than just show you the version of the application currently deployed in an Environment. Our UI provides intuitive diff views of Environments. You can:

  • View the charts (dependencies) deployed with the application and the release for each
  • Compare dependency versions with applications in different environments
How to
  1. In the Codefresh UI, from the Ops in the sidebar, select Environments.
  2. Click the version number of the application.

Helm chart version for application

Helm chart version for application
  1. Switch been Table and YAML views to see the dependencies and their versions.

Table and YAML views of chart dependencies

Table and YAML views of chart dependencies

Compare dependency versions and diffs across Environments

Compare the versions of dependencies dependency in the same application across different Environments. View detailed or summarized diffs for Helm charts, values, and Kubernetes resource definitions between an application in two Environments.

  • The tabular view displays a complete list of all dependencies and their versions across more than two Environments.
  • The YAML view displays a diff between two Environments.
How to
  1. In the Codefresh UI, from the Ops in the sidebar, select Environments.
  2. Click the version number of the application.
  3. To compare the versions of dependencies in the selected application across different Environments, enable Compare.
  4. Select the Environments with the applications to compare to.
  5. To compare the versions of the dependencies for the applications in the selected Environments, switch to Table view.

App dependencies and versions

App dependencies and versions
  1. To see the actual diffs between the applications, switch to YAML view, and then toggle between Full/Compact views.

Compare versions for dependencies in different Environments

Compare versions for dependencies in different Environments

View deployment (Timeline) history for applications

Review the deployments for an application. Clicking the application name takes you to the familiar Timeline tab in the GitOps Apps dashboard with the deployment history for the application. See Monitor deployments for selected Argo CD application.

  1. In the Codefresh UI, from the Ops in the sidebar, select Environments.
  2. In the Environment column with the application, click the application name to view deployment history.

View deployment history for Argo CD application from GitOps Environments

View deployment history for Argo CD application from GitOps Environments
  1. To view all the application’s tabs, including the Current State, Configuration, and others, click the link to Full View at the top of the deployment view.

Manage applications in Products

Manage applications from within Products through the application’s context menu, including manual sync, refresh, and other options.

  1. In the Codefresh UI, from the Ops in the sidebar, select Products.
  2. Select the Product with the application for which to take action.
  3. Click the context menu to the right of the application, and select the option:
    • Quick View: View deployment, definition, and event information for the selected application in the same location.
    • Synchronize: Manually synchronize the application to expedite Git-to-cluster sync.
    • Edit: Update General or Advanced configuration settings for the application.
    • Refresh/Hard Refresh: As an alternative to manually syncing an application, either sync the application with the desired state in Git (refresh), or sync the application with the desired state Git while removing the cache (hard refresh).
    • Delete: Delete the application from Codefresh.

Context menu with actions for Argo CD applications within Products

Context menu with actions for Argo CD applications within Products

GitOps Environments dashboard
Monitoring Argo CD applications
Home dashboard
DORA metrics
Creating Argo CD applications