Defining multiple environments in Argo CD and promoting an application between them is one of most popular questions for companies that adopt GitOps for their applications. While we have offered several guidelines in the past for organizing your GitOps environments, today we are taking it further by announcing a complete product that helps you visualize the full lifecycle of an application as it moves through different stages.
Meet the new Codefresh GitOps Environment Dashboard!
This dashboard aggregates information from multiple sources (your CI system, your Argo CD installations, your ticketing system, you git provider, etc) and shows an overview of all intermediate stages of an application before it reaches production.
There are different ways to slice and dice this information according to what task you want to achieve. For example, you can focus on a single application and see its promotion history (useful for developers) or get an overview of all your environments in the organization and see what applications they contain (very useful for operators/admins).
Get all the details about when/what/who changed an environment
Instead of just presenting a naive list of Git hashes from Argo CD applications, the new Codefresh dashboard automatically correlates sync information with all other parts of the software lifecycle. This means that you can see what source code commits were included in the last change of each environment as well as who did the change and what services were affected.
The killer feature of the dashboard is the interconnection with your ticketing/issue system. While developers love to work with Git hashes, most external stakeholders are interested in features that go into an environment. Codefresh can automatically correlate features that go into each environment for all applications:
Some very popular questions in a software team are:
- What features do we have right now in staging that wait to go in production?
- What features did we have in production last week?
- Where is this specific feature right now?
You can now answer these questions in seconds by using the new “Features” Tab in the environment dashboard. Previously teams had to waste a lot of time looking at different systems (CI, Argo CD, Github, Jira) and manually correlate all the builds/tickets/releases/features.
This new dashboard view will be especially interesting to project managers and product owners.
Enhancing Argo CD applications with Products and Environments
Argo CD is a great GitOps tool but it is limited in the sense that it only understands the links between a Git repository and a cluster. That is the only useful information encoded in an Argo CD application. In most cases however, this is not enough.
Argo CD doesn’t know anything about the type of the environment, order of environments and their dependencies or even what applications form part of a bigger entity. There is also no information recorded anywhere about what needs to be promoted to the next environment.
Codefresh enhances Argo CD applications with two new constructs
- An Environment is a Kubernetes cluster or namespaces inside a cluster or many namespaces in a cluster or many namespaces in many clusters
- A Product is a set of interconnected applications that usually will be promoted together
This way Codefresh can help your team use a common vocabulary instead of hunting down different dashboards and manually correlating information.
The existing Argo CD UI suffers from showing only information about manifests and Git info from Kubernetes resources. In most cases, people want to know what happened with changes in the source code of an application.
Promoting applications between environments
With environments and products in place the next natural step is handling promotions of your applications. There have been several efforts in this area from multiple parties but most of them are very limited. The existing tools in this area:
- Assume that a promotion is only a change in the container image
- Are restricted in a single cluster or single Argo CD instance
- Do not support testing between stages (e.g. smoke tests)
- Require extra software to be installed (i.e. extra Kubernetes agents)
- Focus only on Git hashes of the manifests
- Assume a linear progression of promotion changes with no possibility of out-of-order fixes
We have spent a lot of thought and effort on solving this problem. We wanted to offer an end-to-end solution that not only covers all usual scenarios but is also flexible and powerful enough to account for any corner case (e.g. production hot-fixes). Today we can finally present the ultimate solution that combines a clear spec for promotions with maximum flexibility as to what gets promoted.
You can define a promotion event and explain exactly what needs to be promoted in the most granular level. The solution works for most templating tools in Kubernetes and we will also offer defaults for the popular tools like Helm and Kustomize.
But wait there’s more!
We also included the very useful feature of diffing environments. This has been an ongoing problem for several teams, and providing a friendly UI that shows what is different between environments will be a huge breakthrough for all interested parties.
There are several exciting features that we are preparing to enhance the promotion experience including setting gates and testing suites between promotion stages as well as automatically creating environments and products with a little help from AI.
Get access to the new GitOps Environment dashboard
We can’t wait to see how your organization will use the new GitOps dashboard. If you are an existing customer, please ask your Codefresh representative to enable it in your account.
You can also meet us at Kubecon US and we will show you a demo and answer any questions you may have!